Featured
AI & Product Development.
Hand-written essays on the tools, decisions, and trade-offs behind building real products. Each one started as a real moment in the work.
All blogs
- I caught my own broken deploy by taking a screenshotMay 2026A tool that screenshots the live site and shows you exactly what visitors see. The day I shipped a blank page and didn't know until I looked at the actual pixels.
- I stopped designing features in my headMay 2026A structured brainstorming process that forces you to think through the idea before building it. Annoying. Worth it.
- Writing plans that survive first contact with codeMay 2026A plan is the difference between 'build the right thing on the first try' and 'redo it three times because nobody wrote down what done looks like.'
- Test first, build second. Every time.May 2026Writing the test before the code sounds backwards until you realize it's the only way to know your code does what you intended, not just what you typed.
- Debugging means investigating, not guessingMay 2026The fastest way to fix a bug is to understand it first. Changing things until the error goes away is not debugging. It's gambling.
- Get a second opinion before you shipMay 2026The person who wrote the code thinks the code is fine. Of course they do. A review by someone (or something) that didn't write it catches what the author missed.
- Design decisions without a designerMay 2026Most solo builders don't have a designer. The result is pages that look 'off' for reasons they can't name. Here's how to fix that.
- Building custom tools for your AI assistantMay 2026Your AI assistant can only do what it has tools for. MCP lets you build new tools so it can interact with any system you need.
- Careful mode for changes you can't undoMay 2026Some changes are easy to reverse. Others aren't. Careful mode adds extra checkpoints before the risky ones so you don't accidentally break something permanent.
- Catch errors as they happen, not afterMay 2026Guard mode runs background checks while you work. Type errors, broken builds, lint warnings. Caught immediately instead of discovered an hour later.
- Protect the files that should never change accidentallyMay 2026Some files are correct by design. Your deploy script, your config, your security settings. Mark them as off-limits so they don't get changed by mistake.
- Running retros on your own workMay 2026What went well? What didn't? What would you do differently? Five minutes of honest reflection after each project catches patterns that months of work misses.
- Investigate before you fixMay 2026The most expensive bugs are the ones where you fix the wrong thing confidently. Read first, understand second, fix third.
- Write down what you shipped and whyMay 2026Two months from now you'll look at your project history and wonder what 'fix layout' actually fixed. Release notes are the breadcrumbs that help future-you.
- Ship with a check that actually looks at the live pageMay 2026Deploying is easy. Knowing the deploy actually worked is hard. A proper ship process includes verification, not just 'it didn't error.'
- Merge and deploy in one step so nothing driftsMay 2026The gap between merging code and deploying it is where things go wrong. Close that gap and you always know what's live.
- Test in a preview before going liveMay 2026A canary deploy sends your changes to a test URL first. If everything looks good there, promote to production. If not, production stays untouched.
- QA that actually clicks through the siteMay 2026You can stare at code all day and miss that the mobile menu doesn't close when you tap a link. QA means using the site like a visitor would.
- Measure before and after so you can prove it got fasterMay 2026Performance work without numbers is guessing. Capture the baseline before you optimize, then measure after. The difference is the proof.
- Visual review: does the page actually look right?May 2026Code review checks the code. Visual review checks what the user sees. A two-line style change can completely transform a page, and the code diff won't show that.
- Set up your deploy pipeline once, use it foreverMay 2026Every project needs a way to go from 'code on your computer' to 'live on the internet.' Set it up properly once and you never have to think about it again.
- Testing pages that require loginMay 2026Some pages are behind a login wall. To test them automatically, you need to give your testing tool the same credentials a logged-in user would have.
- Office hours with an AI that won't let you dodge the hard stuffMay 2026A structured weekly check-in for solo founders. It asks the questions your team would ask — if you had one.
- CEO review: should we actually build this?May 2026Before you start building, this checks whether the thing you're about to build is worth building at all.
- Catch the problems in your plan before you start buildingMay 2026A second pair of eyes on your technical plan — finds the hidden issues, missing pieces, and scope that's bigger than it looks.
- Will your users actually understand this?May 2026Catches confusing flows and bad layout decisions at the planning stage — before they get baked into the product.
- Will other builders hate using what you made?May 2026Reviews your plan from the perspective of someone who has to use your tool, plug into your system, or set up your project.
- An interactive design session when you can't picture the layoutMay 2026Describe what you want in plain language, get layout proposals back, give feedback, and go back and forth until it's right.
- Five layout options in five minutesMay 2026Generates a bunch of different layout approaches for the same content so you can pick a direction instead of starting from a blank page.
- From design direction to working page in one stepMay 2026Takes a finalized design direction and turns it into a real, working page you can drop straight into your project.
- Don't know what to work on? Let the project tell you.May 2026Analyzes your project and suggests what to tackle next based on what's missing, what's broken, and what would make the biggest difference.
- The Chief Skepticism Officer: is this actually true?May 2026Challenges your assumptions before you invest time building on top of them. The voice that asks 'wait — are we sure about that?'
- Let your AI assistant use a real browserMay 2026Sometimes reading code isn't enough. You need to actually click buttons, fill forms, and see what the page does. Connecting a browser makes that possible.
- Read the codebase before you change itMay 2026An AI that doesn't understand your project's patterns will write code that works but doesn't fit. Index the codebase first so new code matches what's already there.
- Teach your tools once, use that knowledge foreverMay 2026Every project has unwritten rules. Capture them so you don't have to explain the same thing in every session.
- Keep your tools up to dateMay 2026Tools improve over time. New features, bug fixes, better patterns. Updating regularly means you're always working with the best version available.
- Cut the fluff. Get to the point.May 2026AI assistants are polite. Too polite. Twenty words of 'I'd be happy to help!' before every answer wastes time and memory. Caveman mode fixes this.
- Sending emails that actually land in the inboxMay 2026Resend handles email delivery for this site. You write the email, call the service, and it arrives. No wrestling with spam filters or server configuration.
- A database that runs itselfMay 2026Vercel Postgres is a serverless database. No servers to manage, no scaling to worry about, no midnight alerts. It just works.
- Seeing your website without opening a browserMay 2026Claude Preview takes a screenshot of your site and shows it right in the terminal. Change code, see the result, keep moving. No tab-switching.
- Claude Code is my IDE nowApr 2026I stopped using a traditional code editor and started building everything through a conversation with an AI agent. Here's what changed.
- Why the chatbot on this site uses two different AIsApr 2026One AI answers your questions fast. A different AI grades every answer for quality. Here's why that split exists and how it works.
- Vercel is the only infrastructure I haven't second-guessedApr 2026Hosting, analytics, speed monitoring, custom domain, security certificates. All of it just runs. Here's what I trust it for and what I don't.
- Next.js is the framework I picked because of the chatbotApr 2026For a static portfolio I could have used something simpler. But the moment you add a chatbot that talks to an AI, you need a framework that handles both static pages and live server calls.
- Slash commands turn repeatable tasks into one-word shortcutsApr 2026Instead of explaining the same task every time, you save it once and run it with a single word. Like speed-dial for your AI workflows.
- CLAUDE.md is the rules file your AI reads before doing anythingApr 2026A simple text file in your project that tells the AI your preferences, constraints, and conventions. Think of it as a welcome packet for a new team member.
- Settings control what your AI is allowed to doApr 2026A configuration file that manages permissions, automatic behaviors, and which external tools are available. Most defaults are fine -- a few changes make a real difference.
- MCP servers give your AI abilities beyond reading and writing filesApr 2026Want your AI to browse the web, query a database, or create designs? MCP servers are how you plug in those extra capabilities.
- Hooks are automatic actions that run at the right momentApr 2026Scripts that trigger when a session starts, before an action happens, or after something finishes. Set them up once and they work invisibly in the background.
- Compact saves your long conversations from falling apartApr 2026When you have been working with the AI for a while, it starts forgetting what you discussed earlier. Compact summarizes the conversation so it can keep going without losing the plot.
- Plugins are skill packs that expand what your AI can doApr 2026Install a plugin once and get a whole collection of new capabilities -- brainstorming, deployment, testing, design, and more.
- Using the AI agent alongside your regular code editorApr 2026You do not have to choose between the AI and your editor. Run them side by side -- the AI handles big changes, you handle small ones.
- The fastest AI behind my chatbot (and why speed matters more than smarts)Apr 2026The chatbot on this site answers in under 200 milliseconds. Not because the AI is the smartest one out there, but because it is the fastest. Here is why that trade-off was worth it.
- The backup plan you hope is boringApr 2026If the main AI provider goes down, the chatbot quietly switches to a backup running the same model on different hardware. The user never notices.
- How I know when the chatbot gives a bad answerApr 2026Every chatbot conversation on this site is logged, scored, and reviewed. When something goes wrong, I can see exactly what happened and fix it.
- Making AI responses feel instant (even when they are not)Apr 2026Instead of waiting for the full answer and showing it all at once, the chatbot streams words to the screen as the AI thinks. Here is the tool that makes that work.
- Knowing who visits your site without annoying them about cookiesApr 2026Vercel Analytics tracks visitors, page views, and where traffic comes from. No cookies, no consent banner, no privacy headaches.
- How fast is your site for real people on real phones?Apr 2026Speed Insights measures your site's performance from actual visitors on actual devices. Not a lab test on your fast laptop, real numbers from real networks.
- Structured data: telling search engines what your page meansApr 2026Your page looks great to humans. But Google can't read design — it reads metadata. Structured data is how you spell things out for the algorithm.
- Dynamic social cards: every post gets its own previewApr 2026When someone shares your post on LinkedIn or Twitter, the preview card is either generic or custom. Custom cards with the post title get significantly more clicks.
- RSS: the subscribe button that doesn't need an emailApr 2026An RSS feed lets readers follow your blog in their own reading app. No email list, no algorithm, no middleman. Publish something and it shows up in their feed.
- Sitemaps: the map you hand to GoogleApr 2026Google's search engine explores the web by following links. A sitemap hands it a complete list of every page on your site so nothing gets missed.
- TypeScript catches your mistakes before your users doMar 2026A type system that acts like a spell-checker for your code. It flags problems while you're still building, not after someone hits a broken page.
- Tailwind CSS: styling without the naming headacheMar 2026A way to style your pages by writing short, descriptive labels right next to your content. No more inventing clever class names or wrestling with style conflicts.
- Framer Motion: making pages feel alive without overdoing itMar 2026Subtle scroll animations and smooth transitions that make your site feel polished and intentional, not flashy.
- Spline 3D: a heavy bet that makes the right first impressionMar 2026An interactive 3D scene in the hero section of a portfolio. It's not lightweight, but it makes people stop scrolling — and that's the job.
- shadcn/ui: components you actually ownMar 2026Pre-built building blocks that live inside your project instead of in someone else's package. Customize freely, no waiting on someone else to fix things.
- Lucide Icons: the icon decision you make once and forgetMar 2026A library of over a thousand consistent, lightweight icons. Pick what you need, ignore the rest — your site only loads the ones you actually use.
- v0.dev: AI builds the first draft, you make it yoursMar 2026An AI tool that generates working UI components from plain English descriptions. Great for getting started fast — but never ship it as-is.
- Hostinger: the domain registrar that was already thereMar 2026Where the domain name lives. Not a strong recommendation — just a practical reality. It holds the address; Vercel serves the site.
- Git is the undo button for people who ship fastMar 2026Think of it as infinite save points for your project. Break something? Go back. Try a wild idea? Save your spot first. It takes five seconds and saves you hours.
- GitHub: the backup that isn't your laptopMar 2026Your project lives on your computer. GitHub is the fireproof safe where a copy also lives. If your laptop dies tomorrow, everything survives.
- npm: dependency management done defensivelyMar 2026Other people have already built most of the pieces you need. npm is how you borrow them. The trick is borrowing carefully so they don't break your project later.
- Node.js: the engine under everythingMar 2026Your website, your build tools, your deploy scripts — they all run on Node. You rarely interact with it directly, but when versions get mismatched, it's the first thing to check.
- React: building interfaces like stacking blocksMar 2026React lets you break a page into small, reusable pieces. Each piece is responsible for one thing. Snap them together and you've got a full interface.