Sitting Still

Date: 2023-07-22
categories: programming;

As a software engineer and technical worker, I spend a lot of my life sitting, but this week I didn't have much of a choice. Two weeks ago my father died and that night my back went out, as if in sympathy. Oddly, eleven years ago when my father-in-law died I also threw my back out; maybe that's just what I do under these circumstances? In any case, I found my mobility going from bad to worse until I ended up in urgent care, barely able to move. They got me some meds and sent me home. Luckily, I have had this week off work and could just focus on... not moving.

I set up a spot in the sitting room (appropriately) in a lime green chair that's reasonably comfortable and has solid arm rests for levering myself up. I'm using the 2012 Macbook Air that I recently upgraded to Ventura with OCLP. It seemed like a good chance to give it a try, and I'm shocked by how nicely Ventura works on this unsupported hardware. It's a little underpowered, but absolutely up to the tasks I've thrown at it this week. The battery is also holding up surprisingly well. It's sad that Apple has decided to stop supporting these older machines because this would be a perfectly fine laptop for most users (except for the fact I had to hack the OS onto this hardware).

I also decided that this would be a really good week to dive into some projects for learning. That seemed like a better use of my time than binge watching Netflix or reading the 40Gb of Red Sonja comix I recently bought in a bundle. Being forced to sit in a chair was a good excuse, and I'm a little proud of what I worked on:

Gitlab CLI: I gave Gitlab's glab command-line tool a spin, part of my general effort to lean into text interfaces whenever practical. The experience has been excellent so far.

Sockets programming: explored the Sockets API in Perl, Python, Ruby (a little), and C#, marginally following the Beej's networking tutorial.

Telnot Dotnet: implemented a not-telnet in Dotnet Core/C# inspired by Beej's telnot. It doesn't follow the spec (like telnot) but you can connect to port 80 with it, send a few headers, and get http from a server. That's cool. I chose to use C# for no reason other than to get some practice with it, and I'd never used the Sockets library in dotnet so that was a bonus.

Kilo Editor: Implemented the Kilo text editor in C, following an excellent tutorial from snaptoken. I typed every semi-colon, zero copy-paste, and I might extend it further. The tutorial was an excellent walkthrough, and I learned a lot about how to use VT-100 escape codes.

httprepl: I learned about (and how to use) the dotnet tool httprepl to browse and interact with an OpenAPI endpoints. We're starting to use OpenAPI at work and so it was a great time to get an introduction to this tool.

C# / Dotnet: I went through a few tutorials for .NET 7 to refresh my knowledge of the newest and latest, especially using the Minimal API. I learned how to build and install dotnet tools (locally or globally). I walked through most of the C# language tour as a refresher. I continue to be rather impressed with how the dotnet ecosystem has evolved.

So despite everything in the past couple of weeks, I feel like I've done a good job of pointing my time in a useful (and fun) direction.