Let's have some physical computing by programming Raspberry Pi Pico using Rust.. 'cause why not?

Let's have some physical computing by programming Raspberry Pi Pico using Rust.. 'cause why not?
cargo add
to the ones of apt-get install some-random-dev-header
until things work ?Then follow me in this beautiful π¦-shaped hole..
Imagine that one day you stumble, almost by sheer chance, into a repository that explains how to override the Splash Screen of your favourite application via some intricate pointer and LD_PRELOAD magic. Then imagine realizing that the person that made the repo is technically (almost) an ex colleague of yours, and the code is now 8 years old.
Could you resist the temptation to reproduce their teachings after all those years ?
"What's the matter with me?" he thought. It was no dream. There, quietly between the four familiar walls, was his room, a normal human room, if always a little on the small side. Over the table, on which an array of cloth samples was spread out - Samsa was a travelling salesman - hung the picture he had only recently clipped from a magazine, and set in an attractive gilt frame. It was a picture of a lady in a fur hat and stole, sitting bolt upright, holding in the direction of the onlooker a heavy fur muff into which she had thrust the whole of her forearm.
From there, Gregor's gaze directed itself towards the window, and the drab weather outside - raindrops could be heard plinking against the tin window ledges - made him quite melancholy. What if I went back to sleep for a while, and forgot about all this nonsense?' he thought, but that proved quite impossible, because he was accustomed to sleeping on his right side, and is present state he was unable to find that position. However vigorously he flung himself to his right, he kept rocking on to his back.
It is no surprise (see Choosing to work with Common Lisp in 2023) that I've been trying to build my perfect creative coding framework for a while.
Something that:
Ideally, it might even have support for working in scene linear, like Nannou.
I'm currently at my 3rd iteration of this adventure. It's a pet project: I might work on it a few hours every several months, or a few intense days in a row; I don't care if it never sees the light of the day, at this stage I just work on it to fulfill an internal need.
I always wanted it to be written in Rust, and to be hackable via a higher level scripting language (first a declarative one, then Python via PyO3, and for v3 I'm exploring a small Scheme-like interpreter).
In those ~3 years that I embarked in this part-time adventure, I completely lost trust in wgpu (the crate) getting somewhat stable anytime soon, so now I'm rewriting the graphics backend to move away from the need to constantly play catch-up with wgpu
.
In this post I just try to piece together the puzzle of "how the realtime graphics Rust ecosystem looks like today", to understand where it makes sense to bet.
An interesting title could have also been: Lets build A Python interpreter (Γ la https://github.com/RustPython/RustPython). That's a bit more involved, so instead I will write out about building THE One and Only CPython interpreter from source, and why would one want to do it.
I don't generally do "happy new year" posts, but after watching Protesilaos' video I had an overflow of good energy and so I'm resharing his vlog here. ΞΞ½αΏΆΞΈΞΉ ΟΞ΅Ξ±Ο ΟΟΞ½, love yourself, and have a happy new year you all!
Protesilaos' website (Emacs tips, philosophy, et cetera): https://protesilaos.com
So I had a Linux laptop for a bit now. On my main desktop workstation I used to have Arch, but to help my wife's recent 3d endevours I installed PopOS instead, which is more user friendly, and most importantly, is somewhat officially supported by Autodesk. Where by "officially supported" I mean: there's a 13 steps guide on their website documenting the commands to run to get it to work, including setting up correctly their beautiful Licensing tools (something that I tried to on Arch without success, mostly due to the horrible error messages spit out by the AdskLicensingHelper CLI).
Due to this loss, the amount of tinkering I feel the need to do on my laptop has grown exponentially. Which eventually lead me into the beautiful π hole of tiling window managers..
A quick note on how I install (doom) emacs on a new computer. For a guide on how to use Doom once it's installed, see my doom-emacs-handbook article instead.
In thoughts-on-ai-art (which is from 2018, in the midst of my Computational Art studies), I wrote the beginning of a never-to-be-completed draft about the role of AI as a mean to generate artworks. As somebody deeply interested in coding rules, patterns, cellular automata by hand the Weltanschauung around using AI to generate the final product always left me with a sense of.. unfullfiment.
Since I might never finish that article, and I've decided to keep that as-is, I can least re-share an article that I found to share some of my same internal doubts about this new world we've somehow decided to build: https://drewdevault.com/2023/08/29/2023-08-29-AI-crap.html (which I got from https://mckayla.blog/posts/recommended-reading-2023.html).
I've been wanting a just-for-my-own-enjoyment Linux laptop for a looong time. Probably it all started from my time in Framestore, when CentOS was the main OS at work, and I could see the Linux Jedi there perform all kind of (useful) one-line shell trickeries. You could tell those kind of things came from running Linux as a daily driver at home, not just at your $dayjob.
When I was young I went through my period of fascination with Zen. I still hold some Zen teachings dear to my heart, but these days I wouldn't be able to you what MahΔyΔna Buddhism is really about and what Tenets there are, if any.
During that period, I remember wanting to study Zen officially, but the only school close to me was in Rome, and travelling there from my place was a bit of a commitment. Despite that, one day I gathered all my motivation, took the car and decided to drive all of way there. After fighting through late-evening traffic in Rome I managed to find a parking spot close enough to the place and I finally got at the Zen school, only 5 minutes late. I think it was 5 past 8, which is why taking the train was not a possibility, given the last train home used to have been at 10:30pm and I imagine this would be at least a 2 hour affair.
It's no secret that I've been enjoying working in Doom Emacs for the better half of the past year (I wrote about it here: /doom-emacs-handbook/).
So it shouldn't come as too big of a surprise that I decided to pay homage to the programmable text editor for martian hackers with a small 3d asset inspired by the cute cacodemon icon created by jaidetree
in their popular repo: https://github.com/jaidetree/doom-icon .
This^ cacodemon is coming for you
I have started my personal Rust journey a few years ago but I really didn't venture into trying to put it in production at $dayjob
until a year or so ago.. and since then I have learned a few things that I think are worth sharing. Most of what follows should be read in the context of writing code supporting a Computer Graphics / Visual Effects pipeline (one of those places where the software is only relevant if it helps produce better pixels).
If you're here just for tech content, I suggest finding another post to read. I am a human and I feel and I scream internally and from time to time I want to discuss social and philosophical opinions, not just technology. I feel the urge to write down some thoughts I have been having for a while on the Vision Pro so this is it: somebody on the internet vomiting opinions.
For many years, I have been guilty of always recreating an ssh-agent instead of reusing the previous one. I know, it's an atrocity and a waste of CPU cycles and registers. It had to stop.
Every time I would try to use a ssh-key via ssh-add
, I'd see the dreaded
Could not open a connection to your authentication agent.
message and I would just mindlessly run eval $(ssh-agent)
.
With time, this would leave an army of ssh-agent processes behind my back..
Image under Public Domain, but original credits go to Reddit user Anenome5
First of all, why would you still use a programming language first designed in 1960, using an implementation (SBCL) that has been around since at least 1984?
If you do the math and compare it to the pace of web development, it's like sticking with a tool that was written 126 JavaScript frameworks ago (according to this SO article). Imagine doing web development today using something that came before jquery!
AKA: how to use Doom Emacs as my main text editor for note-taking and software development.
An Emacs framework for the stubborn martian hacker
The TL;DR is that Doom Emacs offers sane defaults for most stuff, and uses SPACE
as your leader key.
The killer feature for me is using the beautifully lisp-y Emacs ecosystem of packages together with the insanely practical vim keybindings (if you like being evil ).
NOTE: Everything I write is tested against my own config, which you can find in my dotfiles repo: https://github.com/vvzen/dotfiles
For more info on Doom Emacs itself, have a look at https://github.com/doomemacs/doomemacs
SPACE + .
-> Find a file to open in a new bufferThis^ uses dired, so you will be able to fuzzy match, etc.
SPACE + SPACE
-> Find a file in the current project (also uses fuzzy find, but leverages projectile)
CTRL + x + d
-> Edit the dired
directory for the current buffer (and more)
SPACE + b + i
-> Open a buffer listing all buffers (via ibuffer)
After a decade of having macOS as my one and only OS for all of my home computing needs, I decided that it was time for me to tinker a bit with GNU/Linux too.
No, not every day was that sunny and that amazing. But that afternoon, it absolutely was.
On March of 2022, while the world is going even crazier than it has been for the past years, I decided to bring home (my π¬π§ one) my lovely new Benelli Leoncino Trail motorbike, which I had bought in Italy for a number of reasons(1). One the tiny detail though is that between my UK home and my Italian home there's almost 2k kms..
An Extract of the Principia Mathematica, a colossal work by Whitehead and Russell, dedicated to formally proving that 1+1=2. If these guys dedicated a good chunk of their life to prove that 1+1=2, we can dedicate a few hours of our time to prove (test) that our code behaves as intended