I’m baaaack! Miss me? Well, if you didn’t, that’s okay, because I’m not even sure who you are or why you’re reading this. But if you are reading this and you did miss me, well, then, great!
Nearing the end of week 2 of Hacker School. I really did mean to blog much more regularly, but then I installed Mavericks (unintentionally locking myself out of my computer for an hour) and it borked my Octopress/Ruby set-up, and then I didn’t manage to get it all working again until just now.
ANYWAY. So I wrote a thing in Python! I made a Student Chooser that runs out of command line and will pick a student at random from a given roster of students, with decreasing likelihood according to how many times that student has been picked already. It also lets you keep track of who is absent and move between multiple rosters (i.e. multiple classes). It’s dorktastic and clocks in at 500 lines, and I can’t tell if that’s because it actually needed to be 500 lines long or because it’s inefficient coding. But it’s done, and it’s my first completed piece of code in Python, and it was super enlightening to write! Really got the basics of Python (syntax, loops, some of the common list/string/dict. operators, etc.) under my fingers, plus some reading/writing file stuff.
I think I did a halfway decent job of staying on task, but I definitely got distracted from Big Thing I Was Trying to Implement by Ooh, Shiny Little Thing. I had some to-do lists along the way, but none of them were ordered (by priority or otherwise), and I think that might be a good thing to keep in mind for my next project. Also, having these by physical, paper lists, I imagine, would be a lot more helpful and a lot more satisfying than having them in Evernote. Also, I ought to remember how helpful I find it to write out confusing bits of code longhand, and to chart the flow of a program with pen and paper. Cuz apparently I’m some sort of visual learner–thanks, Mel Chua! (Mel Chua is a super excellent programmer and educator who gave a talk on learning styles last week. Fascinating and useful stuff.)
(Remember when I was working my way through Learn Python the Hard Way? Yeah, I stopped. Turns out I REALLY don’t like this guy’s writing style. So I decided to just write some code. Which I did. And which was super helpful! (Maybe I’m an active learner? See above…))
Other stuff: am now participating in a weekly algorithms group, which I’m very happy about. It’s helping offset the “Oh my god, I know nothing, I’m so inadequate” panic of being one of the less experienced programmers of a batch of Hacker Schoolers, because now I feel like I’m being proactive and doing something about the stuff I don’t know, rather than sitting there panicking about how much I don’t know. (Which is tricky business, because I don’t even know enough to know what I want to learn, so I just sit there and panic. Useful, huh?)
Upcoming: I’m thinking of something involving Markov chains to teach a program basic language syntax and generate text. If I’m feeling cute, I might make it into a haiku gen. This is a stepping stone towards a possible choral harmonizer, which in its fully complete form will probably use Markov chains to determined the probability of various chords following one another, and maybe also towards a contradance generator, which will do something similar with contradance moves. Also, I’ve been encouraged to use more custom Classes in the next thing I write, and give a little more thought to how I use functions to capitalize on that–e.g., I don’t need to worry about when variables are global vs. local and oh my gosh am I changing the right variable if I call a method that’s _attached to the thing I want to change__. Handy.
Also, I’m gonna read through bits of that big purple Python book and see what I don’t know and go find out more about that, and maybe dip my toes into the Interactive Python tutorials.
That’s all for now! Hopefully actual, somewhat regular blogging will commence soon, stay tuned!