💾 Archived View for gemini.ajoberstar.net › gemlog › 2021-12-27-doing.gmi captured on 2024-08-18 at 17:01:11. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-06-03)

-=-=-=-=-=-=-

2021-12-27 Doing

Over the last 10 years a decent chunk of my hobby time was programming, a lot of it for open source projects of mine. Most of those were plugins for the Gradle build tool, which is a competitor to Maven in the Java/JVM ecosystem. As those plugins matured over the years, it started to feel more like work because most of the effort was 1) keeping up with Gradle's API and 2) fixing bugs and implementing features requested by other people. My own interest waned because the remaining problems I was intereested in were more fundamental issues with how Gradle worked and could never be solved by plugins. So my hobby programming started to tail off.

With the pandemic affecting my vacation patterns, I ended up having a lot of time off left at the end of 2020 and took two straight weeks off. I found it really refreshing because I was able to dive back into a music library management program I've been using for the last 10 years to convert it to Clojure and add some features I've wanted for a long time. However, I ended up in a rabbit hole because I've always had some friction with Clojure's tooling, some of it stemming from the mental hurdles of using line-oriented text editors with a data-oriented (s-expressions) language. While I knew of and had lightly tried structured editing like Paredit, I still found it difficult because you were never in a pure structured editor, so you could always hit some key-command that wasn't aware of s-expressions and end up with invalid syntax.

That got me itching to look into the possibilities for purely structured editing (meaning no general text editing features). That took me to articles/books/papers about Common Lisp, to Lisp Machines, to Smalltalk, to operating systems, and plenty more. I learned a lot of historical information about how some of these computing ideas originated, but never got to the point where I started working on my own ideas. I always felt like there was more I needed to learn before I could start (classic procrastination). Once the two weeks were over, I was able to keep up some research in my spare time, but eventually burned out on it and spent time on other non-programming hobbies.

In 2021, my vacation patterns were still affected resulting in two stretches of two weeks off (one around Thanksgiving and one around Christmas). Around Thanksgiving, I worked through Elements of Computing Systems (a.k.a. nand2tetris), which teaches you how computers work from NAND gates up to a high-level Java-like programming language, having you implement all of the layers in-between (the CPU, an assembler, a virtual machine, a programming language, an operating system). That was a great experience, and I feel like I understand a lot more about the underlying pieces involved in computers now. My degree was more "Computer Information Systems" than "Computer Science", so I missed out on some of the deeper algorithms, compilers, and operating system classes others may have taken.

For the Christmas two week stretch, I've struggled more with what to spend time on. I've meandered through links and papers, but have struggled with getting to "doing". With one week remaining, I'm hoping to spend some time learning assembly through practice first writing some kind of hello world binary I can run on a Linux OS and second trying to write a hello world that can boot without an OS on QEMU. Here's to hoping that "doing" can help kickstart a little more direction in my programming time.