(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.