In addition to deepening my knowledge of Rust Embedded, the challenge was to make the most of standard LEGO parts, the servo, the motor, and especially the power supply (LEGO Power Functions pack of 6 AA batteries).
Non LEGO parts are mostly a Raspberry Pico W (for Wi-Fi control), an arducam (video stream), a Kitronik 5331, a buck converter, and a lot of jumper cables.
What I found most interesting, as a Rust programer, is how similar the backend and embedded code are. Even with the constraints of no_std, the parallel code running on the small Pico looks like your standard rust backend, even while there's no OS and almost no memory on this small chip.
Termimad author here: I’m always a bit afraid, when I see the popularity of this crate, that it might be undue and that people may lose time trying to use it when it’s probably not the tool they need.
Termimad isn’t a full-fledged TUI framework. It can be used to build TUIs (I made broot, bacon, safecloset, etc. with it), but if you want to quickly build a TUI and compose UI components and widgets, you’ll probably find it much easier to choose a real TUI framework (e.g. ratatui).
Termimad isn’t a generic Markdown viewer either. Markdown is mainly used as a language for the developer to describe parts of the interface—especially rich text—inside a TUI. People interested in rendering arbitrary Markdown files will find that it lacks features such as image rendering.
We don't know exactly why nature can't do otherwise, but any complex brain has to sleep.
Some animals, mainly sharks which can't stop or they would be asphyxied, deal with that by having kind of 2 brains which are never both sleeping at the same time.
Imagine you have a big enum in Rust, for example an Error, with a dozen or more variants.
When maintaining related code, for example a Display implementation, or routing to some behaviors, it's sometimes much easier when it's alpha sorted: you immediately see what's implemented or not.
That's when you can hit the codesort shortcut to have this specific list (enum variants, match arms, etc.) sorted.
Imagine you need to attach to some records a bag of data which you always fully need or not. This bag may have a tree structure, which is expensive to deal with in a relational model. An example would be the JSON configuration of a component/client/whatever. In such a case, trying to fit this bag of data in a relational model would be inefficient.
Those bags of data are usually called "documents". And a lot of systems need a way to store them along relational data.
If you're just storing and retrieving those documents, without any query, you don't need JSONB, a simple blob is enough.
If you sometimes need to do some queries, especially free queries (you want all component whose configuration has some property), then JSONB is suitable as it lets you do the filtering in the database.
Having vetted repositories of libraries looks neat but it's harder in practice than what the article lets appear.
A problem for such repositories like the Debian one is that it can only contain vetted versions of libraries. Many Rust libraries are still 0.x and have changing API and frequent updates, which makes it hard to vet all dependencies, especially when an update implies updates of the dependents.
But not all normalizations are done to fight spam, not all of them should be interested in visual similarity.
I normalize strings in searches not because of bad intents but because for all user related purposes "Comunicações" and "Comunicações" are the same, their different encodings being more of an accident.
Fundamental research can also exist without looking at applied research. Understanding the world and finding the beauty in its fabrics is a legit goal per se, we're humans, not ants or traders.
This is theoretically possible, and I actually toyed with the idea.
I didn't do it in my deserializer because of the big value you have in Rust in being compatible with serde and that wouldn't be. But this would be interesting, probably as an side library.
A lot of formats are Hjson compatible, notably JSON, and also what users wrote thinking it was JSON but they forgot some quotes or had a trailing comma so the JSON parser refuses it while the Hjson one is perfectly happy.
https://dystroy.org