Techno-Update ------------- Greetings Space Pirates! (I'm re-reading Have Spacesuit, Will Travel to see if I can recommend it to my kids. And our hero has just been captured by space pirates.) Well, I've done some great things with technology in the last year, but I was terrible about logging them here. Rather than wax lyrical, I'll just make a simple list and try to get some of the highlights out: Zig ================================================================= I made another stab at Rust and found I just didn't enjoy it. I love the CONCEPTS, but I wasn't having FUN. So I aimed my sights at Zig at the end of 2020. By February, 2021, I'd created about half of Ziglings (based on Rustlings for Rust) in which you learn Zig by fixing tiny broken example programs. It's become one of the most popular things I've ever done, but more importantly, I'm proud of the work I've done on it. (I had a little hiatus in my Zig progress this summer, so I've recently been re-taking Ziglings in order to reaquaint myself with it and...dang, that later material is pretty GOOD. Ha.) I believe I will actually attempt to start writing (in the open, as a series of web pages) a book, starting with the Zig material. I wrote a toy Linux shell in Zig, which scratched a long-held itch. And I've started a ray tracer (!) in Zig using the book "Computer Graphics from Scratch" by Gabriel Gambetta. It's been amazing, but I've run into a problem with my lack of mathematical knowledge. Khan Academy to the rescue! Assembly ================================================================= After hemming and hawing about it for YEARS, I finally buckled down with a great resource (asmtutor.com) and learned the basics of NASM assembly (x86 on linux, specifically). Then I've started the excruciating process of translating JONESFORTH (look it up!) from GAS to NASM. Since I barely know NASM and don't know GAS at all (except by reputation) and I'm working on it as little as 5 minutes per night, this will likely take me a long, long time, even though it's arguably very short for a complete language implementation. I've already learned so much from this experience that it's firmly in the "why didn't I do this before?" bucket. I'm also (slooooowly) learning ARM assembly, which brings me to... Raspberry Pi computers ================================================================= I've admired these little single-board computers from afar since their inception. But this year, in the span of a couple months, I went from owning 0 RPis, to 4 (three of which are Zeros, the incredibly cheap and tiny version). I built a cardboard "luggable" or "laptop" enclosure for one of the Zeros, along with a 7 inch LCD screen and keyboard. I love it. You can see pictures on my website ratfactor.com along with a more complete write-up. I'm learning ARM assembly on the cardboard computer. :-) Raspberry Pi Pico microcontrollers ================================================================= In addition to the ARM computers, I also picked up one of the Raspberry Pi Pico microcontrollers on a whim. They're even cheaper and smaller than the Zero computers. I've played with microcontrollers before, but the Pi plus MicroPython has been the most productive and fun experience I've ever had with them. It's gotten me over the hump to actually BUILD things. I'm currently finishing up a "multi-timer" (task timer) - which is a piece of hardware I couldn't BUY for any price because nobody makes exactly what I want. So I've made it and it feels incredible to say that. I've got a Pico talking to an LCD screen and a keyboard/LED light object over I2C. I even debugged it with my oscilloscope. We live in incredible times for hobbiest electronics. Just incredible. I want to program version two of the multitimer in assembly or Zig. Array programming languages ================================================================= This interest is still in its infancy: I've been listening to The Array Cast podcast. I love it. I've always been fascinated by APL, J, K, etc. But learning them has always been a huge undertaking. I'm forcing myself to keep from diving in for now, but just listening to the podcast and thinking about the languages has already been rewarding. Perl ================================================================= I love/hate this language so much! I re-learned it AGAIN and I'm sticking with it for now. I'm stricting using THE GOOD PARTS and avoiding all of the other crap. I'm not going to write BIG software in Perl. It's strictly to solve my "small tool" needs. Its ubiquity and capability are perfect for this use. I'm done with AWK - if I could depend on GAWK being installed on all Unix platforms, I'd pick it over Perl. But I can't. And without GAWK, AWK is too limited. Future ================================================================= I'm really excited about all of the above. I'm starting to see where all of the languages fit in my digital life. It's all coming together. I've had this idea brewing for about a decade now: a language with the terse, single-character command syntax of `sed`, but with the tacit expressive power of a much more complete grammar...something that would let you do huge amounts of work in a handful of characters on the command line. I'm going to do some serious "hammock-driven-development" on this one. I want to try it on paper before I get mired into a rut on an actual computer. Welp, hopefully this isn't the last thing I write (or read) here before ANOTHER year rolls around. Happy hacking everyone!