RSSAmplifier

Blog

Ankur Sethi's Lab Notebook

Personal website of Ankur Sethi, writer and independent frontend engineer living in Bangalore, India.

ankursethi.comRSS feed ↗25 posts

Latest posts

Prevent cognitive debt by manually retyping LLM-generated code

Despite what I said in April , I'm still using coding assistants on my personal projects. Using them to one-shot entire features leaves me unsatisfied and disoriented, but I do enjoy using them to fast-forward through the boring parts of my projects. However, allowing my coding assistant to roam free in my projects leaves me with a colossal amount of cognitive debt. I might hate the idea of poring…

Data locality (sometimes) beats algorithmic complexity

I've been ECS -curious ever since I learned about it in the Bevy game engine documentation . The ECS architecture predictably improves performance in languages that give you low-level control over memory (C, C++, Rust, Zig, and friends). But how does it fare when used in high-level, dynamic, garbage-collected languages such as JavaScript? This is the question Dan Murphy set out to answer in The…

Your analytics are lying to you

Alistair Davidson writes about migrating a form-heavy web application from a React SPA to a traditional server-rendered HTML-first website . The entire article is worth reading, but I want to draw attention to this bit about analytics (emphasis mine): The results? When we launched, the number of people completing the form doubled. The analytics people didn’t even know where these users were coming…

Deno Desktop

From the Desktop apps section of the Deno documentation : deno desktop turns a Deno project (anything from a single TypeScript file to a Next.js app) into a self-contained desktop application. The output is a redistributable binary that bundles your code, the Deno runtime, and a web rendering engine into one bundle per platform. I'm happy to see another attempt at solving the biggest issues with…

What was nice about the UI of Windows 2000

Among tech and design folks of a certain vintage, there is a fondness for the design language used by Windows from Windows 95 to Windows 2000. While you could argue that this is mere nostalgia, I've always thought there is more to it than that. The Windows 95 UI was famously the result of comprehensive UX studies and careful design . While Microsoft has always been Microsoft—a company defined by a…

Nobody clicks your share buttons

(Via rendezvous with cassidoo .) I've always wondered if anyone actually used the social sharing buttons embedded on news sites and (some) WordPress blogs. Derek Hanson digs into the numbers : The UK government ran one of the most thorough studies on this. When GOV.UK added social sharing buttons, they tracked usage for 10 weeks across 6.8 million pageviews. The share buttons got clicked 14,078…

So you want to write a GUI framework

There are a handful of technical blog posts in my bookmarks that made me go oh, I never thought of it that way when I first read them. I'm talking about posts like Parse, don't validate , Text Editing Hates You Too , Choose Boring Technology , or Making illegal states unrepresentable . I consider these required reading for any working programmer. To me, Colin Rofls' So you want to write a GUI…

Using SwiftUI to Build a Mac-assed App in 2026

Paulo Andrade , creator of Secrets and Shopie : There was a time when Mac apps felt unapologetically Mac. Panic, Omni, Cultured Code, Bare Bones, Sofa. The years just before the iPhone SDK were probably peak Mac-assedness. Then Apple's center of gravity shifted toward the iPhone. Now we have Electron, Catalyst, and iPadOS apps on the Mac. And even Apple's SwiftUI apps often sand off the very…

The "land and expand" strategy explains why software grows unnecessary features

Mitchell Hashimoto (founder of HashiCorp, creator of Vagrant and Ghostty) commenting on why software products often lose their core identity and grow irrelevant features: The cost (cognitive, time, risk, money, etc.) of adopting a new thing is significantly higher than expanding an old thing. You see this even without any commercial interests. For example, one I've spoken publicly on is how many…

Selling to practitioners vs. selling to technical decision makers

Mitchell Hashimoto (founder of HashiCorp, creator of Vagrant and Ghostty) commenting on Lobste.rs about how software products are sold: For software solutions, there are two main groups: practitioners and technical decision makers (TDMs). Practitioners are the main users of a piece of software (and in the case of OSS, adopters, though not the case always). TDMs are the higher level management with…

Mythos finds a curl vulnerability

Daniel Stenberg , creator and lead developer of cURL: My personal conclusion can however not end up with anything else than that the big hype around this model so far was primarily marketing. I see no evidence that this setup finds issues to any particular higher or more advanced degree than the other tools have done before Mythos. Maybe this model is a little bit better, but even if it is, it is…

Using LLMs to find Python C-extension bugs

Jake Edge , LWN.net: […] Hobbyist Daniel Diniz used Claude Code to find more than 500 bugs of various sorts across nearly a million lines of code in 44 extensions; he has been working with maintainers to get fixes upstream and his methodology serves as a great example of how to keep the human in the loop—and the maintainers out of burnout—when employing LLMs. It's worth reading Daniel Diniz's post…

A broken 404 template in Django can swallow your backtraces

Note I wrote this post as an exercise during a meeting of IndieWebClub Bangalore . I recently migrated this website from Astro to Wagtail . The reason why I did it is a story for another day. In this post, I want to talk about a bug that took me far too long to figure out. In his (verifiably incorrect) post about making chai , Abhigyan linked to my own (verifiably correct) post on the topic .…

I'm no longer using coding assistants on personal projects

Note I wrote this post as an exercise during a meeting of IndieWebClub Bangalore . I’ve spent the last few months figuring out how best to use LLMs to build software. In January and February, I used Claude Code to build a little programming language in C. In December I used local a local LLM to analyze all the journal entries I wrote in 2025 , and then used Gemini to write scripts that could…

Waiting is fun

Note I wrote this post as an exercise during a meeting of IndieWebClub Bangalore . I enjoy waiting. I enjoy waiting at the doctor’s office, at the dentist’s, at the hairdresser’s. I enjoy waiting in queue for my airplane to board, and I enjoy sitting in airplanes on long flights where I have nothing to do and nowhere to go. I enjoy long drives across the city. I even enjoy being stuck in traffic.…

I built a programming language using Claude Code

Over the course of four weeks in January and February, I built a new programming language using Claude Code. I named it Cutlet after my cat. It’s completely legal to do that. You can find the source code on GitHub , along with build instructions and example programs . I’ve been using LLM-assisted programming since the original GitHub Copilot release in 2021, but so far I’ve limited my use of LLMs…

I used a local LLM to analyze my journal entries

In 2025, I wrote 162 journal entries totaling 193,761 words. In December, as the year came to a close and I found myself in a reflective mood, I wondered if I could use an LLM to comb through these entries and extract useful insights. I’d had good luck extracting structured data from web pages using Claude, so I knew this was a task LLMs were good at. But there was a problem: I write about…

The only correct recipe for making chai

Note I wrote this post as an exercise during a meeting of IndieWebClub Bangalore . All my friends have their own personal recipes for making chai. I love my friends, so it hurts me to say that they’re wrong. My friends are, unfortunately, wrong about chai. I’m still coming to terms with this upsetting fact, but I’ll live. What follows is the only correct recipe for making chai. The ingredients The…

Write quickly, edit lightly, prefer rewrites, publish with flaws

Over two years of consistent writing and publishing, I’ve internalized a few lessons for producing satisfying—if not necessarily “good”—work: Write quickly Edit lightly Prefer rewriting to editing Publish with flaws I covered similar ground previously in Writing without a plan . This post builds on the same idea. Write quickly If I want to see the shape of the idea I’m trying to communicate in my…

Generative AI and the era of increased gatekeeping

Generative AI models can create text, images, code, and music faster and in larger quantities than our ability to absorb them. Before ChatGPT was introduced to the world in November 2022, producing a piece of media took longer than consuming it. In 2026, the equation has been turned on its head. If your job—thus far—involved curating or evaluating the work of other humans, this is a problem.…

Pushing the smallest possible change to production

Note I wrote this post as an exercise during a meeting of IndieWebClub Bangalore . During my first week of work with a new client, I like to push a very small, almost-insignificant change into production. Something that makes zero difference to the org’s product, but allows me to learn how things are done in the new environment I’m going to be working in. If my client already has a working webapp,…

I'm not listening to full albums anymore

In the last few years, I’ve lost my appetite for discovering new music. The main reason is that I’ve focused on listening to full albums for most of the last decade, but increasingly I find it irritating and anxiety-inducing to listen to albums from start to finish. I’ve been reading/watching music reviews online since my early twenties. In this time, I’ve also been part of a number of music…

Tech predictions for 2026, presented without nuance, context, or evidence

Note I wrote this post as an exercise during a meeting of IndieWebClub Bangalore . I’m writing these in order, from most likely to happen to least likely. GTA6 becomes the biggest game release of the year, breaking all previous sales records on launch day. LLMs become a load-bearing part of all developer workflows. A little less than half of all commits on Github in 2026 are generated using coding…

Getting a Gemini API key is an exercise in frustration

Last week, I started working on a new side-project. It’s a standard React app partly made up of run-of-the-mill CRUD views—a perfect fit for LLM-assisted programming. I reasoned that if I could get an LLM to quickly write the boring code for me, I’d have more time to focus on the interesting problems I wanted to solve. I’ve pretty much settled on Claude Code as my coding assistant of choice, but…

My first online shopping experience, at the tender age of twelve

Note I wrote the first draft of this post as an exercise during a meeting of IndieWebClub Bangalore . When I was eleven or twelve, a friend at school told me that video games like Age of Empires were built using a language called C. When pressed for details, he had nothing more to tell me. What did he mean by language? Was it like English? How could you use a language to make things move around on…