• When perfect code isn’t enough: My journey with AI IDEs

    Last month, I asked Claude to help refactor a React component. The code it wrote was beautiful - clean, well-documented, following all the best practices.

    It also quietly broke our error tracking system, removed a crucial race condition check (that admittedly looked like a bug), and duplicated three utility functions with slightly different implementations.

    Sound familiar?

    The AI coding space is exploding right now. Cursor hit $50M ARR, Lovable.ai reached $4M in 4 weeks, and every day there’s a new “AI-powered IDE” on Product Hunt. Clearly, developers want AI assistance.

    Yet despite these impressive numbers, I believe current AI coding tools are fundamentally solving the wrong problem. That’s why I’m building another one.

    Continue Reading →
  • Hacked WordPress, Lost Rankings: My Jekyll Redemption Story

    I’ve been running multiple WordPress blogs for my friends and family on my own VPS since ~2012. I didn’t bother checking them for updates, and surprise surprise they all got hacked.

    This is my journey of how I fixed it and how the latest version of my blog was born.

    Hmm, this is not what WordPress is supposed to look like is it?
    Continue Reading →
  • Resumable Tests Save & Load State for Jest and NodeJS

    At Metric, my latest accounting AI automation startup, we’ve built complex interconnected pipelines that query an LLM with multiple transactions and invoices.

    Continue Reading →
  • Simple “Search” with LIKE in MySQL Sequelize

    A simple way to implement a “search” feature into your node app is using the database engine to check for presence of tokenized search query. In my case, I’m using MySQL with the Sequelize ORM and needed to add a e-commerce like search form with product results for a client.

    Continue Reading →
  • Better Vue SEO with Prerender SPA Plugin and vue-cli

    Vue loads content asynchronously, which means that Google’s crawlers won’t pick up your site for indexing. That is, until you give them a rendered version to see. We’re going to discuss a common way to serve content properly for crawlers here, called “Prerendering”.

    Continue Reading →
  • Bye Ghost, hello again WordPress!

    Ghost… I tried. Trust me, I really did. I stuck with you for over 3 years, developed a custom theme on you, hacked around any shortcomings you had. But yesterday, I had to give up. Trying to upgrade from 0.11.x to 1.x had to be one of the most annoying experiences I’ve had recently and enough is enough. It’s not me, it’s you.

    Continue Reading →
  • Instant, real-time, RSS to email

    I’ve been looking for a free option for instant RSS to email subscriptions, and while Zapier comes close; the free tier does not support the volume or speed that I require.

    Continue Reading →