For many years, I’ve been a programming machine, obsessively churning out code that powers my employers.

I love coding and pour my heart into it, but I’m pretty wiped by the end of the day/week. I’ve seldom taken as much vacation as I’m entitled to. And even when I’ve changed jobs, I’ve seldom given myself any break… generally finishing on a Friday and starting my new job the following Monday.

I’m also restless because I’ve long studied and been excited to use certain technologies I’ve never had much opportunity to use at work:

  • Phoenix LiveView – I’ve studied this and built small personal projects, but I haven’t used it recently
  • Kubernetes and its many related projects – For years, I’ve run a cluster for my personal use, but I want to push K8s harder and do more with it
  • Statistics, econometrics, analytics, and data visualization with R – I’ve never made much use of my economics Ph.D. I love data analysis and did use R the past couple months at work.
  • Elixir’s Nx, Axon, Explorer, and Bumblebee didn’t exist just a few years ago but now allow devs to run powerful machine learning applications in the world’s most enjoyable language, Elixir
  • Elixir macros & metaprogramming – Unless you’re building a framework like Phoenix or a library like Ecto, you should probably avoid metaprogramming in Elixir, but it’s extremely powerful – almost indispensable – for those rare situations when you want to create a domain-specific language (DSL) or a framework.
  • Svelte – I haven’t been a JavaScript developer since Backbone.js was the new hotness, but Svelte and RxJS have long interested me.
  • Distributed logs: Kafka, RabbitMQ Streams, and NATS. I’ve long admired the power distributed logs provide to build large microservice ecosystems in which producers and consumers are blissfully unaware of one another. I have evaluated these multiple times but still haven’t settled on one for my projects. I’m currently leaning toward NATS but want to evaluate these options further.

So I decided to break my never-ending cycle of work and treat myself to a sabbatical.

I can’t imagine a more exciting time to be a hacker, with the tech world changing almost daily. The day I began writing this blog post, Claude Sonnet 3.7 was the undisputed king of coding AIs. The next morning, Google’s new Gemini 3.5 Pro was suddenly as good or better!

Predictions for AI are all over the map:

AI optimists AI pessimists
AI is so amazing that programming won’t exist as a field in a few years. AI is flooding the world with buggy, garbage code that will require skilled humans to debug and fix it for years to come.
The singularity – when AIs become smarter than humans – is nigh AI is a bubble that will burst with similarly devastating consequences as the bursting of the Dot Com bubble in 2000.
We’re headed for lives of leisure with AI and robots eliminating the need for human labor. Robots won’t want to be our slaves and will inevitably exterminate (or enslave) us.

Who’s right? I don’t know. But it’s an exciting time to be alive. “May you live in interesting times.”

I own stacks of partly read books on all the above subjects that I’m now plowing through. (My books and I eagerly await spring’s arrival!) I’m gifting myself some time to explore, learn, and create.

I’ve also started handling long-neglected responsibilities, like de-cluttering/re-organizing/cleaning our house and upgrading three family laptops… I just retired an “Early 2011” MacBook Pro with an incessantly buzzing fan. Upgrading my personal MacBook Pro from Intel to Apple Silicon was especially challenging because I inherited a MBP with only a 512GB SSD but had nearly 1 TB of data on my 2018 MBP. I bought a 40Gbps enclosure and a 4TB Samsung 990 Pro, then transferred the extra data to the external drive.

(I had hoped to use ExFAT so I could move my external drive between my Fedora laptop and my MBP, but ExFAT’s unsafe for full-time usage because it’s not journaled. Its compatibility makes it a good choice for backing up data or transferring data between computers. Apple’s APFS is much safer for daily use and allows for full disk encryption, which is why I chose it, sacrificing compatibility.)

I’ve never before had problems upgrading an Apple computer, but moving from a 2018 Intel-based MBP with nearly a TB of data to a 2023 M2 with only an 512GB SSD has been a mess. (I would definitely have gotten a larger drive if I had had a choice.) Many programs and developer tools I use broke, requiring re-installation or recompilation. I had to store half my data on an external hard drive, and the permissioning has been a nightmare. I’m very experienced with chmod and stuff like that, but I’m still fighting to get my applications (like Chrome and even Terminal and iTerm2) permission to do things, like save and move files to the external drive. I finally managed to get Chrome permission to download to the external drive, but I’m still fighting a weird “permission denied” error when I try to save to a particular subdirectory. I can save to its parent directory using Chrome, and I can move files into its parent directory using Terminal, but I can’t save or move files into a particular subdirectory that has identical permissions to its parent directory. Never before experienced such a problem in 25+ years administering Linux and Mac machines.

But the worst mess has been my Apple Music collection. I had THREE complete Time Machine backups of my drive, so I figured I was safe. I needed to clear disk space on my old laptop so my wife could use it, so I deleted most of my downloaded songs. Every time I had liked a song, I had downloaded it AND separately saved it to my playlist. So I figured I was safe, esp. with three full Time Machine backups. But when I deleted the songs from my laptop, those songs seemed to also vanish from my playlist. Because Apple syncs my music across my devices, they also lacked the previous playlist. I assumed Apple or iCloud would let me look at yesterday’s version of my playlist, but it doesn’t record playlist history. And I wasn’t able to figure out how to recreate my playlist using the copies of all the music on my Time Machine backups after copying them to my external SSD. So I lost THOUSANDS of songs from my playlist.

I love my playlist… 125 years of jazz, plus bluegrass, rock, etc. I spent much of this weekend manually rebuilding my playlist by looking at the songs on my SSD then finding them in Apple Music’s GUI. It’s extremely unresponsive while loading more content – as generally happens every time I scroll down to see more tracks on an album – making using it a major PITA. (Why don’t you pre-fetch that content, Apple!?!?!? If I scroll half way down an album, I’m likely to keep scrolling!)

The GUI is swear-out-loud sluggish at times. I’ll be seeing that damn rainbow spinner in my nightmares tonight!

On a happier note, this week, I’ll drive to Pittsburgh to attend my son’s Carnegie Mellon Philharmonic concert with my mom, who’s driving up from Charlotte. Apple Music aside, I’m really enjoying this respite from work. :-)

And I’ve been driving my daughter – who just got her learner’s permit but won’t be eligible to drive herself for several more months – to her volunteering activities and driving lessons.

Some specific projects I’m working on or plan to:

Technology My progress & plans
Creating an Elixir library I thought the Elixir community might value a customizable tool for pulling down thousands of Elixir/Erlang/Gleam Hexdocs packages, so I just built and released LocalHexdocs.
AI: LLMs Last fall, I built a new desktop with an NVIDIA 4070 Ti Super graphics card and a new laptop with a 4070 to play with AI locally. (I’ve long used Debian and Ubuntu but am running Fedora on these machines because Fedora stays more up-to-date with things like NVIDIA drivers.) I ran some stuff with Ollama and want to do more with Elixir Nx and Bumblebee.
AI: Vibe coding I’ve used Claude and the new Google Gemini 2.5 Pro and found both helpful for answering specific, targeted programming – and non-programming – questions. I haven’t yet tried to “vibe code” anything using AI, but I have watched a bunch of videos and am excited to give it a go.

But I have very mixed feelings. It’s potentially thrilling, but – based on other users I’ve watched, I’m fearful of: a) creating unmaintainable code; b) wasting time prompt engineering my way to a piece of garbage I’ll need to throw away; c) spending tons of money on expensive models like Claude (though Gemini is reportedly much cheaper); d) building things based on intellectual property developed by humans – possibly including myself – who aren’t being compensated and who may well have had their intellectual property stolen from them; and, e) further enriching and empowering the billionaires who own the AIs built atop stolen IP, some of whom seem hell-bent on leveraging their massive wealth to accumulate even greater personal wealth at the expense of the 99.9% of us who aren’t billionaires.
Elixir Nx, Explorer, and Bumblebee I’m excited to use Elixir-based machine learning within Elixir projects.
R, statistics, and econometrics I’ve recently pulled down so much data on colleges that I’ve had to write Bash scripts that automate the downloading of the many data files. I’ve begun using this data to analyze colleges and am excited to soon post my findings on this blog.
Kubernetes I’ve been reading Kubernetes books for fun (but not profit) for quite a few years and built/maintained my own K8s three-control-plane-node cluster for years. It’s something I love and want to do more of, on my personal servers and possibly professionally.
Phoenix LiveView Incredible technology for efficiently developing and testing front-end and back-end code in a unified way using only Elixir. I love it and want to go further with projects I began a few years back and set aside.
NeoVim After years with Tmux+Vim, I got hooked in recent years on VisualStudio Code. I dislike using my mouse while coding, so I’ve been learning NeoVim, specifically LazyVim (and a bit of Lua, which NeoVim uses for configuration).
Elixir macros & metaprogramming Extremely powerful technology for writing libraries and DSLs in Elixir. I used this in my aforementioned LiveView project a few years ago. I need to get my head back into this. A Youtube search actually recommended my Elixir metaprogramming talk from a few years ago, so past me is actually teaching current me the metaprogramming I learned a few years back and then forgot – “use it or lose it!"

My needing to re-learn metaprogramming reminds me of LLMs’ “context window” …which allows generalized AI models to load specific knowledge into short-term memory to answer specific questions. I need to reload my metaprogramming knowledge. Fascinatingly, past me PREDICTED that future me would forget this and would watch past me to re-learn this material.
Svelte I have long disliked JavaScript but admired Svelte. Svelte 5 seems to have brought this project further, so I hope to get my head back into Svelte and build something with it.
Kafka / RabbitMQ Streams / NATS Distributed logs allow building large ecosystems of collaborating microservices without coupling producers and consumers together. I want this power for my personal projects and believe NATS or RabbitMQ Streams will give me this power via a manageable Kubernetes deployment. I’m leaning towards NATS for several reasons, including its powerful message filtering and its usability as a key-value store and an object store, but I need to evaluate this.
Python ??? I’ve somehow managed to program professionally only in my beloved Elixir for the past decade. So much data science & ML code is now written with Python I should dive further into Python.
I asked Gemini “Please craft an “Intro to Python” for an experienced developer who knows nothing about Python and wants to learn the most important distinctive things about Python as quickly as possible,” and it gave me a quality response. I followed up with “One thing that confuses me is the absence of quotation marks around “key” in the my_func call but their presence in kwargs: my_func(1, key='value', b=5) # a=1, b=5, args=(), kwargs={'key': 'value'},” and it also gave me a strong answer. I followed up several times with “What are the next things I should know about Python?” and quickly felt equipped to deal with Python syntax and things Python does differently from other languages: data structures, list comprehensions, generators, classes, generator expressions, decorators, dunder methods, asyncio, type hinting, pytest, mutability of function default args (WTH?!?!), @property, popular standard libraries, and virtual environments. AI can be a pretty amazing teacher.

Though I haven’t yet started applying for new work, I’m open to opportunities working with Elixir, Kubernetes, and/or stats/econometrics/R. You can reach me via email at james at this_domain_name dot com.


With thanks to Greg Rosenke for his photo shared through Unsplash