Let me be honest: I only wanted to take a quick look. An old Core ML model from the summer of 2020, open it in Xcode, take a few screenshots for this article. Then I sat there, looking at a spinning circle, and thought: wow. In both directions.
Thirty seconds from August 2020
Before I explain the model, I will show what it did. This is a screen recording from 5 August 2020, thirty seconds, at the speed it actually ran. Garden, hallway, kitchen.
What you see: the camera runs, the model recognises objects, and the app writes "Plant", "Oven", "Microwave" not on the screen but into the room. The labels stay in place even when you move. You select objects by voice, "Select object 1 and 3", and attach a task to them, "watering". The app loads the four plants, reports that they are outside two metres, and puts green arrows on the ground that lead there. In the kitchen you dictate a note, and it stays where you stood. It listens, it labels, it navigates.
2020. On a phone. Without the cloud.
The model
The model behind it is called f32_PRNnet_SPPC_416A3x3_v2_3441 in the file. The name is a note to myself: float32, a partial residual network with spatial pyramid pooling, 416 pixel input, three anchors per cell, version 2, run 3441. That is how we named versions back then, in the file name, because it was not written anywhere else.
Converted with coremltools 3.4, author "Martin_ExtendedVersion", description "Object detection". That is all the metadata says. No dataset, no training data, no accuracy. The version is in the file name, the accuracy was in a notebook, and I no longer have the notebook.
It was one of the versions we made small for the iPhone. Not the smallest, but one that ran. And when you look at the graph in Xcode, you see the whole network at once: the convolutions, the branches, the four paths that come back together in the concatenate. That is a YOLO relative, assembled by hand, in a time when you still did that by hand.
What the app did
The model was only one part. The app around it connected three things that were each work on their own back then.
Recognise. Every camera frame goes through the model, the model returns boxes and classes. Plant, oven, microwave, chair. On the device, several times a second, without the phone getting hot. For that the model had to be small.
Anchor. A box on the screen is not yet an object in the room. With ARKit we turned the box into a position in three dimensions, so the label stays on the plant even when you walk around the table.
Use. Attach tasks to objects. Voice commands. A list of what is to do nearby. Navigation to the next object. That was the idea: not "the camera recognises an oven", but "I am standing in the kitchen and the app knows what there is to do here".
We did not say AI back then. We said: the phone should see what I see, and remember what I said about it.
Xcode 2026 and the spinning circle
And now back to today. I open the model in Xcode, 2026. There are tabs that did not exist in 2020: General, Predictions, Performance, Structure, Utilities. Xcode shows me the layer distribution, the availability from iOS 11, the whole graph as a diagram, every connection clickable.
Then I click on a weight. 65,536 values, float32, 256 KB. And Xcode starts to think. The circle spins. I wait. It keeps spinning.
That is not criticism of Xcode. That is the moment you notice how much has changed in six years, how little the tools have improved, and how hungry for resources they have become. The models are bigger. And somewhere in between sits a circle, spinning.
What is different today
Honestly, almost everything. If I built this today, the path would look like this:
Prototyping directly in Xcode. Drag the model in, Predictions tab, upload an image, look at the result. In 2020 we built an app for that, loaded it onto the phone, carried it into the garden. Today you see in Xcode within a minute whether a model is any good, before a single line of app code exists.
Performance reports instead of gut feeling. Xcode tells you today which layer takes how long, on which chip, whether it goes to the Neural Engine or falls back to the GPU. In 2020 that meant: stopwatch, thermometer, and holding the phone until it got warm.
No more assembling by hand. You do not build a detection network with spatial pyramid pooling and three anchors yourself anymore. You take a pretrained one, fine-tune it on your own images, and you are in an afternoon where we were after weeks.
Or no model of your own at all. For "what is that in the picture" there are models today that understand image and language together. They do not just recognise the oven, they read what is on its display. For much of what we trained for in 2020, I would first ask today whether an existing model is enough.
Metadata in the model, not in the file name. Dataset, version, accuracy, training date. That belongs in the model, not in "v2_3441". We learned that when we had to keep fifty models at once.
And still: the core has stayed the same. A model that runs on the device, small enough for the phone, fast enough for the camera. That was the art in 2020, and it is still the question today that decides whether an idea becomes a product or stays a demo.
What stays
That it worked back then. With the tools of 2020, with a model we built by hand, on a phone. The plant had a label, the microwave had a task, and the app listened. That is taken for granted today, and it was not taken for granted then.
And that I said wow twice while looking at it. Once for what we built in 2020, without today's tools. And once for today's tools, which show me in a minute what we found out in weeks back then. Only with the weight matrix, there the circle still spins.
And one more thing that is in no metadata field: this was not my work alone. Zoltán Viktor Rácz built this with me back then, the models, the app, the evenings when the circle was already spinning, just on a different screen. Thank you, Zoli. That was a great time.
2020: a model by hand, an app in the garden, a phone that gets warm. 2026: Xcode shows everything, checks everything, measures everything, and hangs on 256 kilobytes. Whoever has seen both knows how fast it goes. And that the question stays the same: does it run on the device, in real time, with people?
Written by me. The thoughts, the values, the learnings, the mistakes: all mine. Grammar and spelling are corrected by our own twin model, trained on my texts. Sometimes a stumble stays in. That is mine too.