Most of my day happens in a browser. So when something in it annoys me, I feel it all day.
My last three projects all came out of that time in the browser. Two are Chrome extensions and one is a tool for coding agents. This post is the why behind each, and what I want to build after them.
About 20 hours a day in a browser
I'm in a browser for about 20 hours a day, for work and for life, and I open new pages all the time. Docs, articles, a site someone shared, a landing page with an animation I want to look at. A lot of them open with a cookie banner.
Some sites won't even show the page until you accept or reject. I just wanted to read the thing, or watch the animation. Instead I'm hunting for the reject button, again.
Cookie Cutter clicks Reject for me
I got tired of accepting cookies, and I didn't want to keep doing it just to make the banner go away. So I built Cookie Cutter, a Chrome extension that finds the reject button on a cookie banner and clicks it for you.
It tries the known selectors for consent platforms like OneTrust, Cookiebot and Didomi first, and only falls back to matching button text inside an element it's sure is a cookie banner. When a banner has no reject option at all, it can hide the banner and give you your scroll back.
It's small on purpose. I wrote up how it finds the right button, and the bug where it clicked the wrong one, in Building Cookie Cutter.
Motion Inspector, because I like taking animations apart
I love animations. When a toast lands with a little bounce, I want to know how it was made. DevTools lets you pause and scrub, but it won't hand you the code.
So I built Motion Inspector. It sits in Chrome's side panel, pauses whatever is animating on the page, and exports it as CSS, Motion or GSAP. It catches hover transitions that are over in about 200 ms, and it turns a spring back into spring settings instead of a long list of sampled points. The full story is in Building Motion Inspector.
Its future is a CLI and an MCP server. For now I'm leaving it at that.
rpc-agent, for the viewport bugs
I've been designing CLIs recently, and using them a lot. I liked the design approach of skills.sh, so I borrowed it and made something like it for my own CLI tool.
AI tools have let me focus on more complex work. The thing that kept dragging me back was viewport issues: spotting them, then tracking down where they came from.
That was the main reason I built rpc-agent. It's an easy way to run checks and take screenshots at real device sizes, as a CLI for me and an MCP server for coding agents. It's on npm, and Building rpc-agent covers how it works.
It knows 49 devices, can frame each shot in a device bezel, and works with Claude Code, Codex and Cursor. Now when an agent tells me a mobile layout is fixed, it can show me the screenshot.
Next: infrastructure tools
The next thing I want to build is infrastructure. Tools that take care of the plumbing, so I can spend my time on the idea and on the hard parts of building a SaaS or a product.
Above all, marketing, which is something I only learnt recently. Who is going to pay for your product if you don't know how to pitch it or market it? I'd rather spend my time there than on plumbing.
The first of these is turbo-start-paystack, my reusable starter for auth and Paystack billing. It's private for now.
Then mobile, and the offline apps I grew up on
I've loved phone utility tools since I was young. When I first used a phone, I had no mobile data. Offline utility apps were what kept me using phones at all.
I'd like to bring tools like that back, offline and online, for children and adults who grew up the way I did. More mobile apps in Swift are coming soon. I'm on an iOS device now, so I learnt Swift to build there. Maybe one day, when I can afford a second phone, I'll build for Android too.
Where it leaves me
Each of these started with something I kept running into, in the browser or in my own work, and each one takes a small job off my hands. Next I want to build the plumbing for my own products, and then the kind of phone apps that got me hooked in the first place.





