Last weekend, just for fun, I hacked together a simple web application called FirstWord. Not exactly sure how to describe it, but it's kind of a trainer to make you a better Wordle player. It grades your first word guess (hence the name FirstWord). So, it's kind of a "word grader".
Wait, what's Wordle you ask? Well, it's all the rage. A simple word game where you have to guess a word in 6 tries, as the game gives you clues about your prior guesses.
In any case, I built the app in a couple of hours on a Saturday, launched it on a Sunday. In the ensuing 7 days, it took off. Over 200,000 words were submitted to FirstWord in its first week. Now, even after the initial boost has waned, the app still gets 1,000+ people a day using it. This kind of surprised me a bit, because it's a simple app, built to train you on a word game.
So, those of you that know me (I'm one of the co-founders of HubSpot), might be wondering: Why? Why would you spend hours building a simple tool for a game?
Here's some background:
1) I have an 11 year old that's taking an online beginner's Python programming class (on OutSchool). It's a little tricky for him, because he's only in 5th grade and hasn't covered boolean logic, functions and other math fundamentals that are helpful for learning to code. But he's making great progress -- and it brings both him and me joy.
2) What he's building is a very simple racing game (which teaches him about 2D geometry, why random numbers are important, etc.). But, I thought it might be helpful for him to see the kind of thing one could build in Python -- and launch to the pubic.
3) Though we didn't go into the details, he got exposed to everything from picking a domain name, "launching" the app, watching Google Analytics (and getting excited by the realtime dots that popped up all over the world), running SQL queries to see how many words had been submitted, etc.
Not bad for a weekend project that took me only a couple of hours to code (and then a few more hours to learn how to deploy the way the cool kids do it). Which brings me to the other reason I did it.
I learn best by doing. By just getting in there, cranking out some code and doing it. There have been a bunch of things I've been interested in learning. And, the tutorials and such only really get you so far.
Here's my partial list (all of which I wound up having to dig into for FirstWord as it exists):
1) Serverless functions (especially as web apps)
2) Vercel (a great place to deploy serverless web apps with ease)
3) Flask (instead of Django) as my web framework
4) DeSo login (DeSo is a web3 social network with its own blockchain)
And, at the end of the day, I did it because I enjoy programming. I enjoy building things. And, it's nice to build something that my friends and family can enjoy. Most of the time, I'm building business-y apps or personal tools to give myself superpowers.
Some people go to their woodshop on the weekend and build something. I don't have that skill. I code.
Now, I just have to resist the temptation to build my own word game (which FirstWord has sort of already become). Because I really love word games.