Back when I was in elementary school, the approach to learning was much different. Lessons, exercises, and repetition were very core to the curriculum. Even though I loved science, and always had experiments going on at home, I always felt school was very tedious and boring… which drained me of my excitement to learn on many occasions; and my grades suffered as a result. When I became a Dad, I vowed to focus on getting and keeping my kids excited about learning and expressing their creativity.
One day, my wife Kelli surprised me with a really cool shirt she snatched off of Woot.com. It was a geek shirt that played off of old 8-bit shoot-em-up arcade games, and the title of this ‘imaginary’ game was Bacon Bits. My 8 year old said, “Wow, Daddy, that’s cool shirt! Can we play the game?” I sadly explained to her that the game didn’t exist. She said, “We should make Bacon Bits, Daddy!!!”
Although I’m a software developer, I hadn’t really programmed any games since I was a kid (when I transcribed BASIC programs from a book from the library that used ASCII characters for the graphics). So I quickly decided, “Challenge accepted!”
Starting with Kids Ruby
At the time, I had recently ran across Kids Ruby. Since I had done a good amount of programming in Ruby, it seemed worth trying out in order to introduce my daughter to what programming was, but in a fun way.
Kids Ruby was an excellent move! It comes with full installers that bundle up Ruby with the necessary RubyGems and a simple IDE with a window for displaying ASCII art for an interesting little adventure game. You write snippets of Ruby to help the adventurer progress through levels, which start out very simple and gradually need more advanced algorithms as your get to higher levels.
My daughter loved it and begged me every weekend morning, “Daddy, can we play Kids Ruby?” It was a very cool experience to see her, at the age of 7, already interested in and excited about programming!
Making Bacon Bits
After we played with Kids Ruby for a bit, I decided it was time to take the next step and start on Bacon Bits. I had done a little bit of playing with Gosu and the Ruby bindings to this nice graphics and gaming engine. I did a first pass at some explicitly crappy graphical assets, with the idea that my 8 year old budding artist would generate the official UI assets. (Really, she is very creative and a much better artist than my wife or I!) I set loose on creating the background and actors to start establishing the basics for this game.
While I got the initial pieces in place, I had my daughter start on some artwork. I told her she could start drawing the different levels. She came back with really elaborate ideas of having a dog that chases after the bacon, and he has to go through a maze, and all kids of crazy cool ideas. This was a little more than I signed up for, and I foresaw this taking wayyyy more spare time than I could scrape up, especially being a Dad to 4- and 8-year-old kids! I had to pull back the reigns a bit, but I also explained to her the complexities of her new ideas for the game, and she actually understood and agreed.
I hung my shirt up on an easel next the the kids’ computer. She had already learned to use Microsoft Paint at school, so I fired it up and set her loose. I had to explain to her what pixels were and how games in the old days used small blocks to draw everything. She replied, “I know Daddy! I know!” Ha! Stinkin’ know-it-all kids… Within about 90 minutes of intense focus and work, she was done! I saved her work, and sent it over to my laptop to start folding it in.
Bacon Bits is still a work in progress, but we have the first level almost complete, with sound effects and her own customizations to the artwork, which included changing the lives icons to hearts instead of shooters, and a sweet pixelated fireball! Bacon Bits is up on GitHub, if you want to check it out.
This has been an amazing experience for both me and my daughter. I hope more parents these days strive to inspire their kids in whatever ways they can, to ensure they have fun learning and stay interested in the challenges that lie ahead. Learning Ruby isn’t necessary to inspire your kids. Use what you know!
How do you inspire your kids?