Building in the open
On being open and building momentum.
Ever since I started my career, I became terrible at having hobbies. I spend so much mental energy on work in my day-to-day that it's impossible for me to spend half as much time on side projects.
It's good to recognize your physical limits so you don't start beating yourself up ("why am I not building an AI-native smoothie startup in my free time? smh ngmi"), but I've always got this itch to make something at the end of the day. There's something inside of me that's never as tired as my brain is.
#Introspection
Lately, I've been giving this more thought and asking myself, "What's holding me back?". The amount of time spent on work is easy to reach for, but there's also:
- Striving for perfection. How can I put something out there that isn't exactly right?
- The desire for completeness. This is distinct from perfectionism. It's not just about finetuning the details; it's also getting everything done.
- Building it the right way. The point of doing it myself is to hone my craft. If I feel like I'm having to build things in a janky way, it can start to feel pointless.
There's another reason that feels like the root of the problem: it can be scary to be seen. On paper, I want to look like a professional at what I do. But in reality, I can't be perfect all the time. I might get stuck on a problem or make a mistake without realizing it right away. Do I really want to appear fallible in front of the entire world?
Clearly, this kind of thinking is holding me back. How would I learn from my mistakes if I'm too afraid to make any? How will I know what's easy and what's not if I don't get stuck every now and then? I still think it's important to appear competent and credible, but if I'm not afraid to get my hands dirty, I shouldn't be afraid to be seen with dirty hands.
#Taking action
In practice, I guess I'm reaching the same clichéd conclusion that many others have: I need to embrace the discomfort and put my work out there anyway.
When the work is sitting on my laptop, I lose some sense of urgency about it. But when it's public, all of the little things I need to do next suddenly become clear. It's like it's not real until everyone can see it. And because it's already out there, there's no imaginary finish line that I can keep pushing away. I can chip away at it, piece by piece, and polish it so that it's just right for today, not tomorrow.
Baby steps. I started by allocating some time every week to maintaining my website. Historically, it's been a single page portfolio for some really basic software I built in high school and college. (You can check out the WayBack Machine calendar if you're bored.)
For the last few years, it's served as an extension of my resume. But instead of restricting my website to employer-friendly content, I wanted to make it feel more like me. So I added a few things to start:
- My reading list on the home page, which pulls articles I saved to my Curius bookshelf.
- A small status widget in the footer that's hardcoded with my usual workday schedule.
- This blog! I use MDX components for the blog content and Giscus for comments.
But I'm far from done. Some other things I'm still thinking about adding:
- Coffee shops I'm visiting
- Music I recorded in my voice memos app
- Songs I'm listening to this month (from Spotify)
- Miles that I'm walking / running (probably from Strava)
- Types of pull requests I'm merging (something like this)
- Fun facts on my about page (which tells you very little about me as of this blog post)
And there's still a long list of to-do's for my blog:
- Analytics
- Search
- Category tags
- An RSS feed
- Email subscription
- Versioning
- Remote CMS
- Styling
Admittedly, it feels messy to write this blog post when I haven't finished building the actual blog. But it's also kind of liberating. I was supposed to publish this post months ago, and instead I let it sit because I didn't feel like everything was ready. Why was I worried about sending emails when I didn't even have any writing to share?
Instead, I built exactly what was needed, wrote a first draft of this post, and deployed it straight away. I then checked on it a few times throughout the week to polish up my implementation and edit my writing. I made more progress than I ever had when I kept the work to myself.
#What's next
Sometime this year, I read this blog post about building software that's SLC (simple, lovable, and complete) over building MVPs (minimum viable products). Instead of scaffolding a bunch of unfinished features, focus on delivering the one thing that people are going to use. That really resonated with me, and it feels like I hit the mark by finally pushing this blog to production.
I have a backlog of ideas that I've been adding to a Notion page over the past few years. Some are really bad, and I keep them to laugh at:
- TikTok for photos (they already have photos)
- Recommend products to your friends (isn't that Pinterest?)
- Watch LLMs have a conversation (why would you do this...)
- Wasim API (not worth explaining)
But some are pretty good:
- I can't tell you about these yet ;)
I read a lot of technical blogs, and I'm constantly inspired by the ones that tell a story of ideation, exploration, and execution. Here are just a handful of my favorites:
- So I rebuilt Vercel...
- Classifying dog barks for my dog-sitting software
- How broken OTPs and open endpoints turned a dating app into a stalker's playground
- How I Scanned all of GitHub's “Oops Commits” for Leaked Secrets
I've been hacking on some interesting problems lately, so hopefully I'll be sharing my own deep dives here soon. Now that I've built some momentum, I'm looking forward to seeing where it goes!