Restoration in progress...

Moved to my own domain, slowly republishing old posts. Bear with me.

Apple's Reframe: A Moment That Never Was

Apple Spatial Reframing demo

Yesterday’s WWDC ‘26 keynote brought the usual slew of product updates and AI features. Most of the online discourse in my bubble has fixated on Siri AI, but I want to focus on something quieter that Apple demoed for the Photos app: a feature it calls Spatial Reframing or Reframe for short. Linked YouTube video is timestamped. Here is a press release with demo shots.

It is a spatial editing feature that lets you change the angle of a photo you have already taken. If your subject was not looking directly at the lens, you can seemingly “correct” that after the fact. Say you have a photo of a dog under an arch and the framing is not quite symmetrical. You wish you had captured it from a slightly better angle. Now you can “fix” that in post.

Computational photography, as Apple started calling it a few years ago, was already drifting into territory that made me uneasy. This feels like a step too far.

To me, a photo is a moment in time, perfectly preserved. You can apply filters, crop it, enhance it, play with light and colour, do all kinds of artistry around it. But at its core it is still an authentic record of a real moment in space and time: you were there, you held a camera, you watched a scene unfold, and you pressed the shutter. You wished the subject had looked straight down the lens, but in that moment they did not. You wished they had not blinked, but they did. You wished you had framed it better or held the camera at a different angle, but you did not. Airbrushing your own photo library is a personal choice. This is something else: a deliberate hallucination, a machine-generated version of a moment that no human ever actually observed.

Apple is not the first to go here. Some smartphone makers in Asia have done versions of this for years, often at a real cost to colour accuracy, with the now-infamous “beauty filters” they turned on by default. A few years ago Google showed off a similar trick at a Pixel event: take several group photos in a row, and it would stitch together a single image with everyone smiling, eyes open, looking at the camera, all at once. I remember debating this with a friend at the time. I understand that it solves a “problem.” But it is not authentic. And in an age where we are constantly asking “Is this AI generated?”, authenticity matters more than ever.

You could argue that every photo I have ever looked at has already been processed. RAW sensor reading that I never see and it’s all machine interpretation on screen anyway. Where I’m drawing a line may feel somewhat arbitrary. But authenticity was Apple’s stance back in 2024. In an interview with WSJ Craig Federighi went on record and it resonated deeply with me at the time.

Yeah, I would say, even the ability to remove that water bottle is one that there were a lot of debates about. Internally, do we want to make it easy to remove that water bottle or that mic because that water bottle was there–when you took the photo? The demand for people wanting to clean up what seem like extraneous details to the photo that don’t fundamentally change the meaning of what happened has been very, very high. So, you know, we were willing to take that small step, but we are concerned that there’s a great history to photography and how people view photographic content as something they can rely on as indicative of reality. Our products, our phones, are used a lot, and it’s important to us that we help purvey accurate information, not fantasy.

Philosophical debate aside, let’s consider from a more grounded perspective in this day and age.

People take photographs in some of the more contentious moments of life: at protests, at a tense street scene, in the middle of something going wrong. A few years ago I did jury service, and at one point we were shown a grainy phone image that appeared to show the defendant holding an object. It could have been a pen. It could have been a small knife. It was genuinely impossible to tell. As “enhance” creeps closer and closer to “invent,” how far are we from someone being convicted on the strength of a hallucination in a photo? I would like to believe our judicial system is better than that, and that manipulated or “enhanced” images can be picked apart with basic forensic tools. But the court of public opinion worries me far more. Could you reframe a photo taken at two opposing protests to place someone on a side they never stood on? Screenshot it (to dodge forensics), post it, and let it fuel an argument in bad faith?

I would like to think that people far smarter than me thought long and hard about safety when they designed this. I am yet to find any concrete technical details. I have been through the Platform State of the Union and other uploaded videos from WWDC, and found nothing further on Reframe. The press release has a quote that does a lot of heavy lifting.

Using powerful image models, Spatial Reframing will only generate new content where the perspective has been shifted, ensuring the reframed photo stays consistent with the original scene.

It would be nice to understand how exactly Apple will make sure that it doesn’t hallucinate and generate random details, given their strong privacy focus and previous stance. This veers into “Mixed reality” and it is not real. You can argue about what “real” even means, and that is a whole other philosophical rabbit hole. I am coming at this from a simpler, human point of view: we move through space and time, we observe the world around us, and we build a sense of it through our own perception. Our reflections in mirrors. The photos we take. Is it okay for machines to start reshaping our own images of ourselves? The more nefarious and perverse use cases for Reframe are left as an exercise for the reader.

Video: VibeOS - Fully Hallucinated Operating System

Leave it to a Brit to deliver satire with a straight face in the most deadpan style. This had me in stitches, even my wife joined in to watch the whole thing.

Update: For anyone curious, presenter is Steve Sanderson and a little bit of context in this LinkedIn Post.

May 2026

Nine things, Space, Rust, Pi? Oh my!

An AI Hate Wave Is Here

Asked about backlash to AI, Superhuman Mail CEO Rahul Vohra — whose company makes an AI-powered email assistant — seemed unfamiliar with the premise of the question. After hearing about poor polling around AI, he responded: “We don’t really see that.”

Building Pi with Pi

Keep in mind that AI has not increased the number of people who need software, or the number of maintainers who can review it. It has mostly increased the amount of code and the number of projects competing for attention. Some of that is healthy, but a lot of it fragments effort that should be shared.

Replacing a 3 GB SQLite db with a 10 MB FST

I do wish to point out, of course, that the whole reason it was possible to experiment cheaply and come across this serendipity was because 9 months ago, faced with the choice to either do the bad easy thing or the good nothing, I chose to do the bad easy thing.5

Ask an Astronaut: 333 hours of Q&A footage with astronauts : I’m at a loss for words, just see it for yourself. Saving it for Lin Lin and myself.

Watch a neural net learn to play Snake : Mesmerising to watch, it does seem to abruptly stop occasionally. Refresh the page if it does.

Teaching Claude Why

Our final finding is straightforward but important: training on a broad set of safety-relevant environments improves alignment generalization. Capabilities-focused distributions of RL environment mixes are changing and increasing rapidly; it is not sufficient to assume that standard RLHF datasets will continue to generalize as well as they had in the past.

Idempotency is easy until the second request is different

Leave Me Behind : Adam McNeilly’s quiet end-of-an-era post ruminating about the good old days. While I understand their sentiments, and the human mentorship angle, I don’t agree with the overall negativity. You can certainly leverage AI tools to fast-track your learnings. Not everyone had access to great seniors and mentors. The job was never solely about writing code, although that was the allure. We were paid to collaborate and build to generate value for our users and employers. The need for that collaboration and thus human touch, has not gone away.

Torrix, self hosted LLM observability, no Postgres, no Redis

Project Hail Mary, stellar navigation chart

I’m blown away by this spectacular visualisation and interactive map.

Amaze! Amaze! Amaze!

Words of encouragement.

Words of great encouragement.

The last six months in LLMs in five minutes

Simon Willison’s annotated lightning talk from PyCon US 2026.

OpenAI and Anthropic had spent most of 2025 running Reinforcement Learning from Verifiable Rewards to increase the quality of code written by their models, especially when paired up with their Codex and Claude Code agent harnesses.

In November the results of this work became apparent. Coding agents went from often-work to mostly-work, crossing a quality barrier where you could use them as a daily-driver to get real work done, without needing to spend most of your time fixing their stupid mistakes.

The supposedly best model changed hands five times between the three providers. Coding is where most of the action is. Simon’s calm summary remains the best way to figure out what you missed since you last looked up.

If AI writes your code, why use Python?

The argument from the title: Python’s ergonomics were optimized for humans, and humans are increasingly not the proximate authors. If the model is happy writing Rust, the case for the slower-runtime, weaker-typed alternative gets thinner.

The last twenty years of language choice were shaped by a single constraint: humans write the code, and humans are slow at low-level languages. That constraint is gone. Stack Overflow’s 2025 survey had Rust as the most-admired language for the tenth consecutive year at 72%, with Gleam at 70%, Elixir at 66%, and Zig at 64%. The stated preference was always there; the tooling finally caught up to the preference.

This reads like the strongest argument until you start unpacking it. What happens when the agent halts halfway through a refactor? When your context window runs out, or the provider doubles the price? Or for those 20% of times where it just doesn’t do the job?

The model writes what I want to read, and I still want to read the simpler thing. Use what you know best, optimise when the need actually arises. I say this as a Rust programmer and advocate, not everything needs to be in Rust. Rewrite It In Rust is enough of a meme already.

Why don’t we go a step further if we’re all-in on AI? Let models and agents invent their own language and let it optimise based on our preference.

Apr 2026

From skiplists to intergalactic probes.

DuckDB 1.5.2: SQL database that runs on laptop, server, in the browser

What are skiplists good for?

Later I discovered that a skiptree is closely related to a real data structure called a skip graph, a distributed data structure based on skiplists. Which just goes to show that there is nothing new under the sun. Whatever crazy idea you have, there’s a good chance some other crazy person has already done it. Moral of the story: you never know when an exotic data structure will save you a lot of time and money.

Three constraints before I build anything : I’m a big believer in that constraints are essential for innovation. This post is very well articulated, better than I could have expressed.

Website streamed live directly from a model : Ridiculously useful. I would love to see their system prompt. I guess whatever you type in search box is passed to one model to do lookup and generate detailed prompt for image generation model with their distinct “style”. You can type almost anything: Revelation Space Lighthugger, Raspberry PI 4, La Sagrada Familia, Harry Potter’s Room, it does a very competent job. Me and Lin Lin are having a lot of fun with this.

Game devs explain the tricks involved with letting you pause a game

Perhaps my favorite pause method involves devs freezing time and then taking a screenshot of the game which the game then uses as the background behind the pause menu UI, letting them get up to all sorts of nasty business behind that image, like not rendering enemies or even moving the player to an empty room.

Eternity in six hours: Intergalactic spreading of intelligent life (2013)

It would be ruinously difficult to send over a large colonisation fleet; a much more efficient idea is to send over a small payload that then builds what is required in situ. This is the concept of von Neumann probes: entities capable of constructing copies of themselves from the resources they find [15, 7]. More specifically, we would want them to be universal constructors: capable of constructing many things, including other universal constructors (which need not be identical).

Zed 1.0

I have been daily driving Zed since February and it’s been really great, surprisingly polished. I have barely touched SublimeText in this time. It has built in Helix mode for editing and configurable shortcut keymap for JetBrains, VSCode etc to minimise learning curve. Best performing editor/IDE I have ever used. I’m a little skeptical of business model but they’re promising basic editor to be free forever and sell AI subscription to be a viable business. It’s open source anyway and the code is worth a look.

So we started over. Instead of building Zed like a web page, we built it like a video game, organizing the entire application around feeding data to shaders running on the GPU. That meant writing our own UI framework, GPUI, from scratch in Rust.

That was a bold bet early on, glad it paid off!

Building our own foundations is what got us to 1.0, and it’s also what makes the next chapter possible. We’re actively developing DeltaDB, a synchronization engine built on CRDTs that tracks every change with character-level granularity. DeltaDB lets multiple humans and agents share a single, consistent view of the codebase as it evolves. DeltaDB will allow you to invite teammates into conversations with agents to review and evolve agentic code directly in the context from which it’s generated.

Fascinating, cannot wait to see where this leads.

The native IDE I’ve been waiting for years finally landed, on the eve of IDEs being made obsolete by models and agents. Oh the irony.

AI should elevate your thinking, not replace it

Koshy John on what the tool is good for and what it is not. The argument is small and worth keeping: use the model to extend the questions you can ask, not to skip the part where you think the answer through. His analogies are spot on.

Going back to the analogies: This is like copying answers through university and then showing up to a job that requires independent thought. It is like using a calculator for every arithmetic task and never developing number sense. It is like relying on self-driving features before learning how to actually drive. The support system may make you look functional, but it does not make you capable.

The piece I now send when someone shares a chat transcript instead of a position.

John Ternus Named Apple CEO, Succeeds Tim Cook

Unicorn Computer doing the Lord’s work: a papal conclave parody for the Tim Cook succession story that’s been doing the rounds.

A thin column of white smoke was seen rising from the central courtyard of Apple Park shortly before 9 a.m. on Monday. Minutes later, Apple confirmed that hardware chief John Ternus would replace Tim Cook as chief executive, effective immediately.

“It’s my turn, to think different.” Ternus 1:1.