mikeizbicki / ucr-cs100

open source software construction course

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

git-game-v2 feedback

ColdNightHour opened this issue · comments

Hello Mr. Izbicki. My partners @hkwan003 and @jruel006 improved upon the git game like you told us to yesterday and would like to see if we should do anything else before we actually confirm we we are done. Here is the link. Thank you very much.

I've issued a pull request with my comments: git-game/git-game-v2#1

Hey Prof Izbicki. Just wanted to check in and let you know that we have a website now for the git-game. It is www.git-game.com. If you are interested, check it out. @mikeizbicki

Awesome! I like it!

What inspired you to make the website? Have you advertised it anywhere?

On Sat, Mar 5, 2016 at 7:14 AM, Juan Ruelas notifications@github.com
wrote:

Hey Prof Izbicki. Just wanted to check in and let you know that we have a
website now for the git-game. It is www.git-game.com. If you are
interested, check it out.


Reply to this email directly or view it on GitHub
#1774 (comment)
.

Well, @hgarc014 and I discussed creating a website several months ago when the 2nd version was completed, but we just never got around to it. Finally, I was tired of telling people about the git-game and having no website to point them to, so I hacked this out overnight about 4 days ago. Henry had the idea of allowing a user to play the game on the website. I think I will work on that during spring break. I already have a terminal up and running through the browser, but I have no idea how long it will take. And I haven't advertised it anywhere yet, only to a couple friends and you. Do you have any suggestions?

It would be awesome to get the game playable in the browser. My intuition
says it will be really hard thought. Not only do you need a terminal, but
you need to have access to git commands through the browser terminal, and I
don't know of anyone who's done anything similar. Definitely let me know
if you get it working!

On Sun, Mar 6, 2016 at 3:12 AM, Juan Ruelas notifications@github.com
wrote:

Well, @hgarc014 https://github.com/hgarc014 and I discussed creating a
website several months ago when the 2nd version was completed, but we just
never got around to it. Finally, I was tired of telling people about the
git-game and having no website to point them to, so I hacked this out
overnight about 4 days ago. Henry had the idea of allowing a user to play
the game on the website. I think I will work on that during spring break. I
already have a terminal up and running through the browser, but I have no
idea how long it will take. And I haven't advertised it anywhere yet, only
to a couple friends and you. Do you have any suggestions?


Reply to this email directly or view it on GitHub
#1774 (comment)
.

@hgarc014 @ColdNightHour @hkwan003 @mikeizbicki

Hey everyone I just wanted to check up on the progress of this game. I have 2 quick announcements.

  1. We were featured in a medium article along with Vim Adventures called 12 Free Games to Learn Programming. That was really cool for us since we were mentioned right next to Vim Adventures! The other really cool thing is that I have never met this person so it's really encouraging to see people using our game.
  2. I will be building out the interface for the web based game. I found a way to get the terminal to work on the browser. The only problem I have now is that it is literally bash with a different GUI. I am not sure if this is what you had in mind @mikeizbicki, but if the only point is to get the user to start playing right away without having to click away and clone the repo themselves then this is perfect. The project is called node-webterm. This is also nice since I used node.js to build the website so it will integrate perfectly.

Here it is in action

I am open to any other suggestions as well and would be happy to work with anyone if you are interested in helping. Also, I think it would be cool to maybe start talking about a version 3 of this game? What git commands would you like to see next? Let me know what you all think!

-- Juan

Awesome!

Are you running a server to host the bash session for the web-based git game? This sounds like a really bad idea to me. How are you going to prevent abuses, like people sending spam from your server or running a bitcoin miner on it. Either of these would rack up massive hosting costs for you. I think it should either be 100% client side or shouldn't exist at all.

OH! Yeah, I encountered this problem when I deployed it to my server and found that I could actually start messing with things through my browser. The 2 solutions I thought of were to

  1. spawn a restricted bash instead of a full-fledged bash or
  2. write my own implementation of bash in node.js that only accepts the commands needed for the game so you won't be able to mess with the server (I have already seen this done here). I would also probably have a dedicated server for just the game (maybe using play.git-game.com to point to it). This would also include some sort of authentication needed (probably from GitHub or FaceBook) so the user can't just spawn up 100 tabs and start messing with it. This means I can then cut off a user if they start to exceed a certain request rate.

How does the 2nd one sound @mikeizbicki?

That sounds neat Juan, but I have to agree with Mike. There are a lot of problems with having it reliant on the server.

  • What access does any person have? Can I do anything other than playing the game? (create files, edit files, delete files, etc.)
  • Making sure everyone has their own start. Every person should have their own version. I shouldn't see changes from other people.
  • can i open up multiple games on my own machine? (if so, then thousands of people, opening up thousands of connections will load the server up quickly)

It would be a nice feature. However, i'm not sure if it is worth the effort @ChannelJuanNews .

You definitely don't want to write your own shell. It'll be guaranteed to be buggy. There are good ways to limit a user's privileges already built into unix, so just use those features. You'd create a special user account on your server for each session that has these restricted privileges, then spawn a bash shell with that user account. You could overcome all of @hgarc014's concerns this way.

I'd still be wary of this approach though. One thing I've learned when working on projects is to stop asking myself "Can I do this idea?" The answer to that is almost always yes. In your case, a node-based git game on the web is definitely doable. But a better question to ask is "Will I be able to maintain this project in 5 years?" As time goes on, you'll get lots more responsibilities, and projects that you were once in love with you'll have to abandon. I think that will happen to this project as you've specified it. Maintaining a server for the webclient to communicate with will be a fair bit of work, and if you're hit by a bus and die, the project dies too. The existing git game is nice because it's guaranteed to still be working 5 years from now even if you guys do nothing.

In order to pass the "5 year test", you'd need to make the project run completely client side. Then, you would have zero maintenance requirements in the future. No matter what happens, the game will still work. I'm guessing a Unix terminal written in javascript already exists, and using that will make your project easier for future you. I think this would be a really cool project.

I just want to make clear that I think this is an awesome idea, I'm just
worried the planned implementation has a lot of hidden complexity.

On Wed, Jun 22, 2016 at 6:41 PM, Henry Garcia notifications@github.com
wrote:

That sounds neat Juan, but I have to agree with Mike. There are a lot of
problems with having it reliant on the server.

What access does any person have? Can I do anything other than playing
the game? (create files, edit files, delete files, etc.)

Making sure everyone has their own start. Every person should have
their own version. I shouldn't see changes from other people.

can i open up multiple games on my own machine? (if so, then thousands
of people, opening up thousands of connections will load the server up
quickly)

It would be a nice feature. However, i'm not sure if it is worth the
effort @ChannelJuanNews https://github.com/ChannelJuanNews .


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#1774 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/ABAP1kVCM2aLBAXZwf_t7AwlV-G6hpYDks5qOeRLgaJpZM4E-681
.