🔍 Search   🔭 Blogroll   🔄 RSS  

I am a web developer and entrepreneur.

I run a SaaS business which I've bootstrapped since 2018. It services 60k MAUs and funds my life and travels.

In my free time, I like to run the 5k, practice Ashtanga, and read books. Particularly books about world history, economics, and high adventure.

You can email me here and find me on Github here.

2026-09-26

Mental Clarity

Someone recently told me 'You think too much'. I wanted to snap back, 'Maybe you don't think enough'. Who said it or why they said it is not the focus of this post. Instead, I want to explore why I got irritated by it instead of simply shrugging it off.

I meditated on this question while on a stroll by the beach on Sunday morning. Why was I so reactive to a simple remark? I came to the conclusion that when someone judges me—'You think too much'—or gives me advice—'Don't think so much'—I have to decide whether that judgement or advice helps me or doesn't help me. If I cannot decide, that's a problem. Because it means I'm not clear in my own head what I want from life / what my goals are. And getting irritated and being reactive is a symptom of lacking mental clarity.

Show more

2026-08-09

Saying No

I'm reading a book called The Coaching Habit so I can coach my team better and specifically make my 1:1s with them more productive. While reading, I came across a quote by Peter Block who defines an adult-to-adult relationship as one in which you are

able to ask for what you want, knowing that the answer may be No and negotiating the difference.

I really like this quote. Saying 'No' is often still a challenge for me. I'm not talking about things like declining a dinner invitation or refusing a customer who's asking for special treatment. In these situations, I don't feel like I'm expected to say yes, so saying 'No' is easy. The challenge arises when there's a conflict and there's a latent expectation to say 'Yes'.

Show more

2026-07-29

When Reading Roman History

I finished reading SPQR by Mary Beard a few months back. In this overdue post, I share things that are important to keep in mind when casual history nerds like myself read about Roman history and ancient history more generally.

SQPR

No maps or formal dating system

Maps and dates are taken for granted when studying Roman history. But Romans, at least pre-empire, had no maps nor dates. They had no visual way of measuring how far their influence stretched relative to the world. Dating was not based on numbers but rather on who held consulship at that time. They wouldn't say, 'this wine is of the 212 BCE vintage'. Instead they would say, 'wine from when Pulcher was consul'.

Show more

2026-06-25

The Doorman Fallacy In Action

I recently learned about the Doorman Fallacy and couldn't help but connect it to an experience I had last weekend. The Doorman Fallacy is 'the mistake of assuming technology can replace a human without consequence'.

This past Saturday, six of us had an impromptu brunch after our morning yoga class. Like many venues, this one had made a decision to replace physical menus with a QR code. Personally, I'm not a fan of this trend, because it forces me to take out my phone when I'd rather be present with the people I'm with. Anyways, I noticed that there was only one QR code on the table. We each had to take turns scanning it, an inconvenience that wouldn't exist with the parallelism of physical menus. Some of us, even with the latest iPhones, struggled to scan it the first time and had to make multiple attempts.

Show more

2026-06-04

The Desperation of NYTimes

I recently got suckered into subscribing to NYTimes because I wanted to read an article behind a paywall and I couldn't find an easy and quick alternative. I didn't mind the $2.00 a month. But I took offense to what happened after I paid.

Over the course of the next 5 days, they sent me 5 onboarding marketing emails and I could not opt out of any of them. What's worse is their message in the footer.

You are receiving this one-time series of onboarding messages over a 14-day period because they provide essential information about your new subscription. Because the messages are about your relationship with The Times, you are receiving them regardless of whether you are opted in to receive marketing emails from The New York Times.

Show more

2026-05-03

Hit and Run and a Business Idea

Rental car insurance is broken in Dubai. After being the victim of a hit and run, I believe there's a business opportunity to make it better.

Hit and Run

I recently rented a car to play host during a family visit. Being my first time driving in Dubai, I got the car a week before their arrival so I could familiarize myself with the roads and overall system.

On the second day, I noticed a new scratch on the front bumper which wasn't there during my inspection. It was deep enough that the paint had peeled off. I was sure it would be noticed when I returned the car. The lady who rented out the car had been pretty thorough about marking existing scratches. I checked the windshield for a note. Nothing. I was officially the victim of my first hit and run in Dubai.

Show more

2026-04-12

Troubleshooting Email Delivery to Microsoft Users

On Feb 24, 2026 we started to see a rise in user complaints saying they're not receiving our emails. They all had one in thing in common: Microsoft as their email provider. Since I'd never encountered this before, my first reaction was to check my Sendgrid logs for details. According to the logs, emails to Hotmail, Live, MSN, and Outlook email addresses were being Deferred. Emails to other email addresses were flowing normally. Digging deeper, Sendgrid showed this reason for the deferral:

451 4.7.650 The mail server [redacted] has been temporarily rate limited due to IP reputation. For e-mail delivery information, see https://aka.ms/postmaster (S775) [Name=Protocol Filter Agent][AGT=PFA][MxId=redacted]

Show more

2026-04-05

Leaving Middle East Till Things Cool

In early March, due to the unexpected war in the ME, I was contemplating my next move. Should I stay or leave? Flights were still taking off from Dubai, albeit at a limited frequency. Enterprising car rental companies were offering package deals to wealthy expats where they'd drive you to Oman and get you on a plane to wherever (Oman was more open so there were more flights to more places).

While I could afford to leave Dubai, it was not necessarily cheap. A one-way nonstop economy ticket to Europe was costing ~700 euros. I also wasn't desperate to leave. My day-to-day was still fairly comfortable. I still had food, water, and Internet. I still felt safe going for a run outdoors, and the dystopian atmosphere was growing on me. I was in a good work rhythm which I didn't want to disrupt by travel. I just had to calm my parents down daily, since the international media and AI fake news was having a field day at Dubai's expense. And deal with emergency alerts which sounded once a day on average.

Show more

2026-02-15

Why I'm Not Shipping New Features This Year

Shipping new features for users and watching them gobble it up is the greatest Joy of being a coder. I quit my day job to bootstrap a SaaS to maximize this Joy in my life. I didn't expect Joy to wane and wither away by year 7. While it's been supplanted by other positive developments like more customers and increasing revenues, which makes the situation tolerable, I miss Joy in it's most raw form.

Where is my time going instead?

In no particular order...

Fighting antibot measures

To move faster in the early days, I chose to depend on third party websites for core functionality instead of implementing it in-house. This is backfiring now. I particularly notice this in the area of webscraping. I originally designed my architecture under the assumption that webscraping will be mostly reliable and the most I'd have to deal with would be network blips and markup changes. I was right until 2025. With the proliferation of AI, the sites I depend on have started to invest heavily into their antibot measures, moved content behind login walls, and in general made scraping them a nontrivial engineering undertaking. My attempts to circumvent these measures haven't worked reliably enough to stake the future on them. So I've been gradually eliminating my dependence on scraping.

Show more

2026-01-14

How AI Saved Me 30 Minutes

This title may seem tongue-in-cheek in a world where seldom a day goes by without hearing a friend, colleague, or a viral post touting how AI saved them hours, if not days, of engineering work. In fact, just this week a friend humbly bragged to me about how he used AI to implement a self-hosted DNS server in Go, and he didn't even know Go!

Alas, the title is accurate. Ironically, I've been too busy to play around with AI. Moreover, the use of AI requires a measure of 'letting go' which is difficult for me to stomach. In the rare moments I've decided to test AI, I've been left unimpressed and concluded that I shouldn't have bothered with it the first place. I blamed AI for not being ready for my needs. However, as I keep hearing others' positive testimonies, I'm changing my tune: maybe I'm the one not ready for AI.

Show more

▶ next