Nonogram Puzzles and Adventures in Programming
To be honest, I felt I was in a rut. For a solid couple of months, I wasn’t branching out and feeding off of doing or learning something new and interesting. So one slow Saturday, when I reached the proverbial end of the Internet, I forced myself to start learning JavaScript.
Programming isn’t entirely new to me. I went to a technology magnet school and got tastes of Visual Basic and Actionscript, but I never really pushed beyond the assignments and never fully grasped the fundamental concepts. This has always bothered me, but there was always something else to take on that took priority, whether it needed to or not.
I started this endeavor after watching a Lynda.com training video on fundamentals of programming, and it focused primarily on JavaScript. Concepts started clicking, especially those I had seen before but didn’t get, and I started brainstorming ways to apply them.
The result? Nonogram… Free!, a picture puzzle game similar to Pic-a-Pix that seems to be gaining some popularity.
- Everything is generated by JavaScript / jQuery from raw puzzle data fed from a MySQL database.
- The Nonogram… Free! “app” is really two: a puzzle player and a puzzle maker. Both presented their own challenges.
- Anyone can create an account then make and save puzzles that can be played by anyone.
- Timers are included to track user puzzle progress
As with many personal projects, every time I added something, an idea came up to add something else. That cascaded day after day until I just about had enough of it. The current incarnation is, as far as I can tell, stable and works (the exception being the puzzle maker in Chrome…). I’m putting aside code quality and consistency issues for now.
I invite you to try it out, play some puzzles, and provide feedback. Maybe even contribute some puzzles of your own! What motivated me to bring the project to this point and sink so many hours into it was not just the fact that it was a challenging learning tool for myself but is now usable and accessible to anyone and everyone. It’s more than a proof of concept or chunk of code that demonstrates I understand a concept. It’s a culmination of what I’ve learned so far and an indicator of what I’ve yet to grasp.