Hey you know how sometimes I don't ever do stuff? Sometimes I do stuff! Here's a stuff:
The Voting Game (yes you must sign in with a google account. sorry that's kind of annoying, but it's fun to play with the super-easy users API)
The Voting Game Source Code
The technology stack is like this: App Engine, Python, Django templates (I guess), and HTML forms. So if you know anything about App Engine or HTML forms, or simple web app programming at all I guess, I would REALLY REALLY appreciate your comments on the code. Really. I would like send you a nice thing or cook you dinner or something.
Also: people always stamp some kind of license on their code. I don't know from licenses. What's a good license for "I did this for fun, I don't ever want to make any money off it, please use it if it helps you at all (for fun or profit, whatever)"?
But even more importantly, always be happy to vote!
(for info on what the voting game is, ask beej, or read the README)
Disclaimers: yes I know the buttons should get grayed out if you've already voted on a thing. I don't know how to easily do this without passing dumb extra variables into the HTML template. It's not flashy. It's not really authenticated/access-controlled the right way (I could vote on your game and vice versa). There's no great way to tell if everyone's done voting. And if you don't know how the voting game works, it's kind of hard to figure out what's going on. Maybe I'll improve these things later. Don't hold your breath.
Side note: about App Engine. Things I like:
- the users API. I can use Google Accounts with like 3 lines of code!
- the datastore API. I can put data in a persistent layer by creating an object and calling put().
- I don't have to have a server to build a web app!
- the admin console and launcher are great
- 1-click deployment
- python seems pretty okay (you can use java too I guess)
- they have a host of features (monitoring, cron jobs, etc) that I haven't even touched yet
Things I don't like:
- how are you supposed to build a UI? HTML forms? HTML forms are kind of crap! For example, greying out the buttons if you've already voted on a thing is hard.
- if you get more than like 1000 things in a query, I guess you have to do some fancy paging or something. (but then, I guess if your query returns more than 1000 results, ur doing it wrong.)
- python might not actually be pretty okay. I find it hard to organize my code. I guess I'm used to the java model; I shouldn't knock the python one until I actually try it.
- the datastore is actually rather tricky, when you have entities that have relationships to other entities. I don't know if I'm doing it right. I guess we're trying to get away from the SQL world and into the BigTable and friends world; it would be nice if anyone ever taught a class about new non-relational data models.