from/prod
← All companies

THE COMPANY INDEX TRACKED BLOG

Mary Rose Cook

Ideas, decisions, and lessons from the team.

maryrosecook.com (opens on the source site)
10Posts tracked
5 months agoLatest publication
0.3Posts / month over the last 12 months

Latest writing

10 of 10 posts

Using encapsulated development to code on my phone (opens on the source site)

I’m lucky enough to have a wife, two young children and a job as an AI Engineer at Notion. I’m also lucky enough to have a side project. Some weeks, I’ll get half an hour on my laptop to work on this side project. Most weeks, I won’t. Yet, I’ve averaged two commits to the project per day for the last three months. How? By building on my phone. But, really, by making it possible to build on my phone. The broad approach: encapsulated development. Each prompt leaves the repo in a known, stable, verified, stateless condition that permits the next change. Known My mental model of the project is…

Read at the source

Code generation that just works (opens on the source site)

About nine months ago, my son said he wanted to make a video game. He said it was called Exploding Kitties. We made it together on my computer. He described the gameplay and drew the graphics. I vibed the code. The game basically worked. But we had to build it in small pieces. And, periodically, I had to spend time in the guts of the code, getting it back on the rails. Unifying two ways of doing the same thing. Fixing gnarlier bugs. Disentangling the game code from the engine. Today, I know that we’d be able to one-shot Exploding Kitties. The first reason: models and agent harnesses produce…

Read at the source

Should I multi-task? (opens on the source site)

LLMs take time to generate code. I’ve set things up so I can switch to another task while I wait. But, surprisingly, I’ve found this is usually the wrong idea. First, if I switch, the context I had on the first task drains away. When I return, I’ll need to load that context back. Second, if the first task has a high cognitive load, I won’t be able to think coherently about anything else. Third, if the first task is my main task, I’m mostly doing other things besides generation. Drawing diagrams, thinking, reading code, composing prompts. So switching would parallelize just a fraction of my…

Read at the source

Pressure to change (opens on the source site)

At Notion, we’ve been doing a quality sprint to increase our test coverage. Friday was the last day, and I wanted to get some more tests written. Time was short, which forced me to break my usual workflow. Not that I really have a usual workflow, these days. New AI-augmented programming tools and techniques come out every day. Everything is changing so fast that you can frequently become 10% more productive, forever, with a few minutes or a few hours invested. So, I push myself to try new things. But, inevitably, workflows are sticky. It’s hard to change a habit. Extra cognitive load to…

Read at the source

The cinch (opens on the source site)

When generating code with an LLM, sometimes a task is so laborious to specify that you may as well do it manually. But, sometimes, you can find just the right information to cinch together to enable the model to do the work. Here’s an example. At Notion, I had built some UI for a new feature. Ken, my designer colleague, reviewed the working software and updated his Figma mocks with some refinements he wanted. I needed to implement those refinements. The Figma mocks provided all the necessary information about how the UI should look and work. And the existing code represented the current…

Read at the source

Making the unknown known (opens on the source site)

Cosmos, the book by Carl Sagan, does something remarkable. It starts in a distant part of the universe. It does a slow zoom, through desolate space, through groups of galaxies, through the Milky Way, through a remote arm of the Milky Way, through the solar system, past the most distant plants, finally into Earth. It shows us as a tiny note of dust in an obscure part of the universe. Then, it moves to one of the early civilizations, in Alexandria. To Alexander’s ideals of learning, his great library. It shows how, at that time, Earth was vast, unknown, many parts a mental blank. And it traces…

Read at the source

Making a game with my son (opens on the source site)

One morning, my son woke up and came downstairs, deep in thought. He looked up at me and said, “Can we make a game, Mummy?” He’s seven and he’s called Jacob. He told me his game was called Exploding Kitties. He described the mechanics. Bad guys patrol up and down. If they see the player - a kitty - they laser them with their eyes and the kitty explodes. If the kitty can sneak behind a bad guy, it can scratch and kill him. I had a little game making kit already. A mobile web app. An update and render loop, game objects. I showed Jacob how to add game objects to the level. He added some red…

Read at the source

I can teach you to program with AI (opens on the source site)

tl;dr: I’m offering coaching sessions where I teach professional engineers a smooth, stay-in-flow technique for AI-augmented programming. All the nitty gritty tips and setup were very helpful. — Andrew J. Email me to sign up!. Let the computer make you more productive My first job after university was working at a software company on their huge Java desktop application. The architecture, complex and winding, made the code very hard to follow. Layer upon layer of indirection meant that trying to follow the flow of execution led to cognitive overload. Fortunately, the company, though almost…

Read at the source

Using AI to build a tactical shooter (opens on the source site)

Enemy AI My latest side project is a 2D shooter where the enemies plan their attacks. I’m using a technique called Goal Oriented Action Planning. This approach was used in an old game from the 2000s called F.E.A.R. It was a sort of spooky tactical shooter. Think Rainbow Six but with that creepy girl from The Ring hanging about the place. In FEAR, the enemies could flank the player and provide suppressing fire. They could stay in cover and coordinate with each other. More side projects with AI-augmented programming Why am I making this? It seemed like it would be fun to try a structurally…

Read at the source

Explore, expand, exploit (opens on the source site)

A few months ago, I started sleeping badly. I had been excited about AI since ChatGPT came out. I’d loved using Cursor to help me program since Jay had told me about it over the phone as I walked from Eureka Heights back home to Noe Valley. But, in January, something changed. The proximate cause was a flood of new AI releases. o3-mini, Deep Research, Lightpage. Every week, more intelligence dropping from heaven into my lap. But the bigger change was that I was getting more productive, faster. Type in a few sentences, get a hundred lines of code. A feeling of vertigo. More than that, I could…

Read at the source

Privacy choices

Reading never requires analytics. These choices last 90 days on this browser.

Essential sign-in and security storage always stays on. Read the privacy notice.