The benefits of being sidetracked on a side project.
One of Steve Jobs more famous quotes is “Focus is saying no to thousands of good ideas”. I find this to be true most of the time. If your goal is to build a product or finish a specific task it’s important to focus on what needs to be done. I believe it’s natural for the brain to find patterns and connections while solving a problem, and sometimes these patterns and connections can lend themselves to attractive ideas. Of course, If you go down every single path that makes itself available to you, you’ll never get where you want to go.
However, when it comes to side projects I believe it’s worth losing focus from time to time. The point of a side project, at least for me is to explore what I find interesting, try new things and expand my knowledge beyond what I do at work. So if a completely separate idea is derived from a side project, if it’s interesting, I jump in.
Case in point, I’ve been learning Swift on the side and been itching to use my new found knowledge on an app. After a few hours of research, I decided to build a game using Apple’s SpriteKit and Swift. I had figured out the high-level design and the game mechanics. I couldn’t wait to get started.
The game was going to be a word search game, where the grid would expand as the words are found. I thought it was a rather clever mechanism that would make the game more fun and dynamic.
Now, if you have ever dabbled in making a word game, you’d know the first thing you need is a dictionary. I did some research and came across multiple sources. But then, I found Princeton’s WordNet.
That thing blew my mind.
If you don’t know what Princeton’s WordNet is I suggest you check it out.
WordNet® is a large lexical database of English. Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms (synsets), each expressing a distinct concept. Synsets are interlinked by means of conceptual-semantic and lexical relations
What this means is that through WordNet, not only do you get the definition, but you also get a graph of the words connected through synonym, antonyms, sets, subsets, category, etc.
I downloaded the database and started to break it apart. I was sidetracked from my game but it was all too exciting. I decided to pause the game and build a dictionary website based on WordNet. I had come across Google’s AMP and wanted to try it out so I figured that’ll be hitting two birds with one stone. After a weekend marathon of coding and learning as much as I could about WordNet and AMP, I built Wordcadet.
Wordcadet ended up being a Rails app with fully cached AMPed pages. It was yet another dictionary of English words on the internet but it was a lot of fun to build and ended up being a great exercise. I learned about Google’s AMP and how to apply it on a website. I got to implement a caching mechanism for static pages, implement a database search based on a regular expressions and tons of new English words I didn’t know about :]