and my desire to be able No images? Click here Unpacking Elixir - ConcurrencyI wrote a blog post on Elixir concurrency. It made the rounds on Hacker News etcetera. People seemed to enjoy it. About PerformanceRate the performance of our conversation about performance. Or don't. But me and Andreas have managed to record in a post-vacation world. We try to talk about performance. Beating the tech marketIf you are working at a stable or profitable Elixir shop, check in with your leadership to see if there is budget for bringing in a new dev. Recent layoffs have made absolutely bonkers talent available to those that have a steady ship and know how to sail it. This is an opportunity to a savvy technical leader. If you want help reaching great people I do help with stuff like that but most importantly, consider hiring for your sake and the community's. Simpler times and hacking the foundationsConstrained e-ink devices that you can build your own stuff on. Optimizing a search engine to stay within constraints. Building your own OS as therapy and a new tomorrow. Building your own things to retain a facet of freedom (also this and that). I recently set me three year old up with her first computer. Not because I want her to spend more time with screens but because I want her to have experience with a variety of devices since devices seem unavoidable. I set her up with a Raspberry Pi 400 I had laying around, an old monitor from the in-laws attic. I switched off the Wifi after installing a few games and tools. She spends most of her time with GCompris. I love that people built it. My kid will learn to use a mouse and keyboard along with all the touch screens. I find a dangerous amount of hope in that. In a sense I am giving her a semi-retro experience, a constrained experience. She enjoys it but she also gets bored and then she turns it off. It is very unlike just consuming media. The references I shared up top are a loosely bound net of retro ideas, constrained computing and doing things yourself. These all appeal to me but I generally don't have the luxury of doing things from first principles for my client work and I don't have any useful amount of spare time that isn't consumed by family for sinking into just scratching philosophical itches. I can't do the thing I want but I am still circling related topics and something I've always wanted to be able to do. I want to program somewhat competently in C. I know for modern use I should be doing Zig or Rust and I have read up on Rust and Isaac Yonemoto tells me I need 3 days for Zig so I'll cross that bridge if I need to. But the thing is, for as long as I've been doing Linux (over 20 years), I have been living on top of a mountain of C code. Any time I build something that leans on C code it was an impenetrable barrier where I just had to throw my hands in the air and go hope someone else had a fix. More recently, with years of assorted experience, I've had more luck reading pieces of C code. When building Id3vx, the ID3 library for Elixir, I needed to figure out a thing ffmpeg was doing differently from my code. So I read the code and achieved compatibility. It was slow going but doable. When I built my StreamDeck library for Elixir I needed a NIF that could speak HID. And I found one but ran into bugs and I ended up fixing them, in the C code. I event implemented some missing piece. Similar to Linux, I am living on top of the Erlang and OTP code-bases a lot these days. There is a mountain of C underpinning everything I do and even if I might not be able to do it today I would love if I built the capacity to contribute over the coming years. To some it will seem strange that C is somehow aspirational. I think for most self-taught web devs it will seem kind of obvious. The Marginalia.nu post above talks a lot about optimizing IDs and generally being usefully computer-science-y. The co-recursive podcast with Richard Hipp has this bit (from the transcript):
I live on a tower of abstractions so high I can't see the bottom and there is a satisfaction to it whenever I manage to work a bit closer to the ground. I would like to occasionally pull a book from a shelf and build something that goes fast. C itself is probably not the large obstacle for me. If you are used to any modern ecosystem you will have tools, standard project generators and such. mix, cargo even npm. C predates this stuff and does not have the same cohesion. Learning C kind of implies getting used to Makefiles, or maybe cmake. But there is of course ninja. And whether I use gcc or clang also has something to do with it. There are also infinity ways of flagging things to the compiler for every purpose under the sun. I find it tricky to find a place to start. Currently I feel rather keen, I've asked some people about good places to start, good references, good things to keep in mind and I have gotten kind and useful replies. I don't think this is a quick hack. I hope it is a journey with multiple years of lightweight progress. What do you aspire to in computing? Reply to this email or poke me on the fedi @lawik@fosstodon.org. Thanks for reading. I appreciate your attention. |