Blog by Sumana Harihareswara, Changeset founder
Hi, reader. I wrote this in 2013 and it's now more than five years old. So it may be very out of date; the world, and I, have changed a lot since I wrote it! I'm keeping this up for historical archive purposes, but the me of today may 100% disagree with what I said then. I rarely edit posts after publishing them, but if I do, I usually leave a note in italics to mark the edit and the reason. If this post is particularly offensive or breaches someone's privacy, please contact me.
At Hacker School, I'm working on little projects to teach myself various things. I am following my own advice by embracing silliness. A few things I have made, all of which now have code up on GitHub:
An Obama speech generator. I wrote this command-line speech generator just after Barack Obama gave a televised speech partially about trouble with HealthCare.gov. I thought, "what if Barack Obama gave LOTS of speeches about tech?"
Also, I wanted to try out test-driven development, so speech-tests.py has the tests I wrote (using Python's unittest module) before or as I wrote functionality.
So, here you go. Run speech.py at a command line and type in three tech buzzwords when asked. (Alphabetical characters and spaces work, but no other punctuation -- "the cloud" and "NoSQL" are fine, but "object-oriented" won't work.) You'll then get a short speech incorporating at least one of the buzzwords you've provided. This gets Leonard to laugh a lot at lines like "Thank you, and may God bless Agile."
"Personality Rights", a super-short and moody game. I made it in Ren'Py, a platform for making "visual novel"-type games, which meant I fiddled with a sort of domain-specific subset of Python to specify plot, characters, styling, music, and graphics. (Graphics include the turtle image at right.) I wrote it in three hours because that's the time limit for the Ectocomp game competition.
A scifi novel title generator (previously).
Improvements to Bicho, although I backed off my giant "refactor and add tests to everything" plan in favor of learning to write tests first.
(I wish I were using Gitorious instead of the closed-source GitHub, but Gitorious wouldn't let me log in, even after password reset. Bleah!)
What have I learned? I only have eight weeks left. I'm better than I was at Python, emacs, git, and bash. I have gotten to question ten on Python Challenge, and finished all of CodingBat Python.
Sometimes I have a reaction I don't like. When I learn some new amazing thing you can do with Python, I get angry that I didn't know it already. It's a very fixed-model way to react, not a growth-model way, and I think I have to fix more things in me before that stops happening.
26 Oct 2013, 19:17 p.m.
06 Nov 2013, 15:04 p.m.
I'd love to talk to you about Ren'Py at some point when we're shooting shit. It was one of the things I looked at as part of my Nell project at OLPC, but I never got the chance to actually create something with it.
Re the reaction to discovering cool new things: you're absolutely right that it shouldn't be "dammit, how did I not know this" but "ooh,k this is cool". In fact, I would extend that to "dammit how did I not know this, I could've used this for X" vs "ooh, cool, let me go back to X and change it to use this".
It's a "positive perfectionism" (I just made that term up) attitude that most of the engineers I respect the most have: always looking for ways to get better and make things better, and responding to new discoveries (good ones, not the "there's a big in code that I wrote" kind) with excitement rather than insecurity or self-blame or shoulda-coulda-woulda.
(The thing about code, too, is that you can often go back and do the "shoulda" to still get (some of) the "woulda" and "coulda".)