← Back to articles

The joy of creating personal tools. Or: the joy of coding.

2022-11-10 · 3 min read

I wrote this blog post using a tool I just created: Markright - a minimal, Markdown-based writing tool that I created for my own personal use.

I created Markright during 10-days-in-public: a challenge hosted by Hack Club where I was challenged to spend ten days working on or learning something. For some time, I had been planning to write a Markdown parser, as a convenient way to introduce myself to creating a programming language (I'm planning to read Crafting Interpreters sometime in the future!). I built it from scratch with nearly no help (except for good ol' Stack Overflow, of course - every time a programmer says "little to no help" they really mean, "I definitely used Stack Overflow at the very least"), and I blogged the ten days.

After the ten days were over, I decided to expand it into something bigger - a complete Markdown writing tool that would allow me to write on the go - thanks to some inspiration from Merlot, a similar tool from @thesephist. I implemented it with some new tools that I only played around with before, never to a sense of complete understanding:

  • Express.js: Node.js framework for writing APIs.
  • AWS S3: Storage API provided by Amazon Web Services. Prior to creating this project, I had wanted to learn how to use S3, but it was this project that finally let me learn how to use it.

Now I understand why I love to code.

Have you ever created something before? By yourself. Chances are if you have, you feel a sense of pride. If you've built your own freakin' couch, you're probably going to complain about every other couch out there. If you've built your own desktop, you're probably going to insult the iMac your parents bought, at every opportunity you get. (That's me, at least. Especially since I can get Hackintosh running on my desktop.)

In a general sense, it's not coding that I love. It's the problem solving. It's the open freedom to explore, to create something that's my own.

I've noticed that I don't do well when creating under someone else's deadline, especially for a purpose that doesn't matter to me. That's why building personal tools is a complete and utter joy: I'm learning and exploring. There are no risks if I decide to implement an inefficient way to store an imaginary filesystem, just another opportunity to learn and create. There are no risks to building a crap authentication system - I can always go back and alter it. Maybe I'll integrate Auth0. Maybe I'll write some TypeScript. Who knows?

Some programmers talk about discovering code as "waking up in an amazing new world". I have to agree. I woke up in an amazing world, one where I can play and create something I'm proud of. I get to play with Legos every day and be a little kid showing off my creations. Who doesn't want to be a kid?