A T-Deck for My Child Instead of a Phone
When I came across the T-Deck, I thought it could be a fun device to give to my child instead of a phone so she can navigate Whangārei and still be in contact with us.
I didn't expect that I would fork a C++ project to extend the firmware to my liking.

I discovered the T-Deck from a Jeff Geerling video about Meshtastic. I was mostly satisfied with the Meshtastic firmware, but found it not simple & intuitive enough to give to a child. However, almost all other firmware options that I could find were worse.
MCLite
I came across the Awesome MeshCore list of projects, and discovered MCLite for T-Deck. I used the config tool and flashed the firmware onto my devices. I was pleasantly surprised by how simple it was to operate and how nice it looked; the blue theme looked like it was inspired by Telegram in dark mode.
On boot, it immediately shows the list of conversations. I can request telemetry and location information about the other device, and see that location on a map. All configuration is from a JSON file, with a secret device info screen that shows it.
Almost Perfect
There were four things that I wanted to change:
- Tap on a message sender's name to insert a reply prefix of
@[name]into the message text field. - Mute a specific chat, and not the entire device.
- Support rendering of emoji in messages and node names.
- A map of my own location, that isn't dependent on opening a contact's location.
And so, I forked the project, cloned & opened up VS Code. One problem: I don't know C++.
But an AI coding agent does. So I opened Copilot, using a Kimi K2.6 model via Ollama.
AI Coding
At first I thought it would be filled with frustration: most of my agentic coding experience has been with languages and frameworks that I know well enough to have an opinion about the approach and expected code.
But with this, I know next to nothing about C++, the structure of this project, or the libraries in use, or anything about making firmware for an ESP32-based device.
I was free: unable to challenge the code output and blissfully ignorant about its quality. If it compiles & builds, can be flashed, and my testing shows it working as I want: it may not be good, but it's good enough.
And so I asked for, and got what I wanted:
I Kept Going
After refactoring the map to be standalone, I wanted to see where a specific heard advert was from. I also wanted, for my own T-Deck at least, to be able to publicise an imprecise location when my device sends a heard advert.
And on-device configuration of settings required extracting the configurable sections from the Device Info screen to their own screens.
