I like promises because they look decisive. They either resolve or reject. We await them, and for a brief moment JavaScript feels like a world with rules. Then I worked through the contract of in-app review prompts. On both Android and iOS, requestReview() can resolve even when the user never saw a review dialog. The…
EN2026-08-11
“Turn this Figma frame into code” sounds like the perfect LLM task. The input is visual, the output is code, and there are enough naming decisions in the middle to keep a model pleasantly busy. I chose a less exciting architecture for figma-to-nativewind. The plugin first converts the selected Figma subtree into a…
EN2026-08-10
An AI can write a convincing commit message in seconds. That is the easy part. The difficult part begins one millisecond later: what is the tool allowed to do with it? When I designed Commit Quill, a VS Code extension for generating commit messages, the tempting interaction was obvious. Read the diff, call a model,…
EN2026-08-09
Part 1 of “Designing Coding Agents That Earn Write Access.” I used to treat an agent instruction file like a very stern README. Be careful. Keep the diff small. Run the tests. Do not make things up. All perfectly reasonable sentences. Together, they created the comforting appearance of control. Then an agent read…
EN2026-08-08
Part 2 of “Designing Coding Agents That Earn Write Access.” A drafting agent of mine once told me an API had landed in version 0.1.1. It had not. The changelog said the API shipped in 0.1.0+1, and that 0.1.1 was a release that only refreshed a dataset. The interesting part is where 0.1.1 came from, because it did not…
Part 3 of “Designing Coding Agents That Earn Write Access.” A global verification skill in my setup contains a neat table. See package.json? Try the JavaScript scripts. See pubspec.yaml? Consider Dart formatting, analysis, and tests. See Cargo.toml? Reach for Cargo. It looks portable. It looks systematic. It also…
I shipped a setup command. The reviewer found eight problems with it. Four of them were the same problem. I maintain merry, a small Dart CLI that lets you define script shortcuts in pubspec.yaml and run them with merry build instead of typing the whole command. It's a maintained fork of derry. Nothing exotic. The one…
EN2026-08-06
If you maintain a custom lint rule for Dart and you have been putting off the analyzer 8.x bump, here is the thing that will stop your build, and the shape of the fix. SimpleIdentifier.staticElement was removed. Not deprecated with a grace period you can ignore for two more releases — removed. Rule code that reaches…
EN2026-08-03
There is a specific kind of bug that only exists during a migration, and it has a signature: two things are individually correct, and you cannot have both. NativeEventEmitter in React Native is one of those. Pass its constructor a native module and the New Architecture complains at you forever. Omit the argument and…
A small project of mine needed data that a company exposes on its own website but not through any documented API. The data was about my listing — a business I run — and it was already visible in a browser to anyone who loaded the page. That combination is the tempting one. It feels like it should be fine. It is your…
I have a small script that writes a daily journal entry. It reads what changed across my repos, summarizes it, and drops a Markdown file into a folder. Nothing clever. It had passed shellcheck with no warnings and fourteen end-to-end runs on my own machine. It then failed every single day for ten days, and I did not…
A green build is a configuration fact. Fabric being live is a runtime fact. They are not the same claim. There is a specific flavour of wasted afternoon where you flip newArchEnabled=true, the build goes green, the app launches, and you spend the next two hours debugging a Fabric-only behaviour in an app that is…
EN2026-07-27
Follow via RSS or receive new posts by email.