Dr. Brian Robert Callahan
academic, developer, with an eye towards a brighter techno-social life
Obvious motivation is obvious: I enjoy a piece of software but believed that there were things that could be improved upon. Because the software is proprietary there is no real way to communicate with the developers to add features or fix bugs. What is a person to do in this case? Why, create a Free Software clone of the software that makes all those improvements and fixes those bugs.
Introducing Free Bee, an enhanced Free Software clone of The New York Times game Spelling Bee. Besides the obvious pun describing the cost of my game (freebie) compared to the monthly subscription fee to The New York Times for Spelling Bee, Free Bee has some nice features over the original game that should make it worth your while: a known, transparent dictionary (SOWPODS) instead of the NYT's hidden dictionary so that you know why a word is or isn't accepted, game delivered as a single-screen web page for identical experiences whether on desktop or mobile (I'm not even sure you can play Spelling Bee on a desktop), an ncurses client if you are relegated to a computer that does not have a Javascript-understanding web browser, and a second game mode where the server generates a game for you on-the-fly (Spelling Bee only allows you to play one game per day).
But my own ambitions of being able to claim I founded a game development company aside, Free Bee also serves an additional, and perhaps more important, purpose. At $DAYJOB I teach the full-stack web development cycle for our majors. Traditionally the Sophomore-level courses, students spend a full year (two semesters) with me studying the complete gamut of full-stack web development. It's very hands-on, very lab and project heavy, which I think is great because I don't think someone can really get good at web development (or any coding, really) by just listening to lectures and reading up on coding. You have to actually code a whole lot of things.
And so I'm always looking for new projects and challenges for my students. Free Bee fits nicely into the first half of their first semester with me: by that point, we will have explored HTML5, some CSS3, and some front-end JavaScript (Node.js is a major focus of their second semester with me). While we do cover Bootstrap and jQuery in the first semester, I envision Free Bee to come right before those two topics. This would be the point in the semester where I would begin to tell them about thinking about code optimization and introduce them to CSS and JS minifiers. And a quick perusal of the Free Bee game source code most of us could find very easy wins in terms of optimization. For players, I would say Free Bee is quite small and you'll never notice anything but instantaneous play (if you do experience UI slowness, please let me know!). But for my students, I think if I gave them the source code and told them to pull out all the stops in optimizing everything, it would be more than enough of a challenge. Plus, they would have a field day (students tend to really enjoy feeling like they're improving upon their professor's work in my experience).
And one more pedagogical benefit: in the second semester, we cover REST APIs extensively. Free Bee has a very simple REST API with three GET endpoints. Bringing back a codebase they are all intimately familiar with I think will really benefit that lecture.
Teaching is an interesting phenomenon where you learn about your own self-improvement. Free Bee wasn't just a self-challenge of could I improve Spelling Bee in a night or two, it is also a very clear manifestation of how I think about cultivating growth in my students. Through Free Bee, I am able to learn about my own journey of self-improvement, learning how to create pedagogical vehicles that all my students can learn from, each student at their own individual level and each trying to reach their own personal goals. Hopefully Free Bee will be a pedagogical benefit next semester. Stay tuned!