Smol computers
So I have had the idea for a while, to build a small handheld computer based on a micocontroller board (or mcu), run ulisp on it and write me a set of programs I want to use on it.
But I am bad with prototyping PCBs and don't have a workshop with the tools necessary to make the mechanical parts nice I opted to spend the money and order a PicoCalc. It's pretty much exactly what I had in mind in terms of architecture. And if I'm honest with myself, if I'd attempt to build my own it'd be a lot more frustrating, probably more expensive and likely to end up on my shelf unfinished, collecting dust. I'm not an electronics girl. And most importantly it fulfils my requirements:
- Easy to understand architecture
- Built in keyboard (building keyboards sucks)
- Built in battery with charging circuit (battery management sucks)
- Option for Wifi
- Built in display
- Able to fully program on-device (depending on firmware)
- Able to save and load programs to/from sdcard (well possible with ulisp)
- Runs a lisp (Because I'm that kind of weird)
So far on my list for applications to write are:
- A line editor for editing non-lisp textfiles
- A Gemini browser with offline caching (inspired by offpunk)
- A very minimal email client
- A very minimal ftp client
All this is to be able to read, write and publish on gemini, as well as stay in touch with people. It's a long list and email will probably be the last thing I'll implement but it's a journey away from big computers towards something that is smol.
2026-04-24 Switching to Micropython
Initially I had planned to do all of this in ulisp. Implementing some basic shell functions for manipulating files, a program loader to load programs from sdcard, etc. Well that's the easy part.
As I have been reading through documentation, trying to figure out how to get the building blocks for any networked application to work I ran into a severe lack of preexisting libraries. Implementing gemini is simple once you have a tcp socket working via tls. But that's where ulisp's lack of those functionalities became a deep dive into potential yak shaving.
So I looked into other kernels and micropython already has libraries for sockets and tls. And as much as I love lisp, I wanna be finished at some point. So the rational decision is to go with the thing that has a big community and lots of libraries.
That made me think about another thing. Since python is such a common language nowdays, I want my project to be as usable for others so I have to make a clear cut between the "shell layer" and the applications. The shell layer really just a command prompt with a handful of build in cinvenience functions for file handling as well as a program loader that loads any existing pythin script from sdcard into a dedicated namespace and calls its main function.