Babashka is amazing. It’s replaced Bash for 99.999% of my scripting needs. I thought it might be useful to describe my approach to writing Babashka scripts and compare it to how I used to write Bash.
Highlight: a script for coloring important text
In my terminal, text often flies by. Things like log files, thread dumps, report output, etc. All of these are comprised of text, but not all of that text is equally important. This is the story of how I got my computer to highlight the important bits for me.
Developing Clojure in Vim (2023 edition)
The last time I wrote about using Vim to write Clojure, I had just started using it professionally. Now I’m at my second Clojure job and I am still enjoying the its power, combined with the speed of Vim. However, in contrast to the last update, which was incremental to my first post, quite a few things about my setup have changed in the past few years.
Migrating to Hugo
Envbox: Secure Key Storage
I wrote a few months ago about envbox, and I can say that it has proved useful to me many times over.
One thing that felt unfinished was the way that envbox stores the key that it uses to encrypt all of the environment variables. It did move the problem from the shell/history to one of system security, which was acceptable. But there are better ways of storing credentials on most systems.
Developing Clojure in Vim (2018 edition)
When I wrote about developing Clojure in Vim for the first time, I was still early in my journey. For years, I’d only been able to tinker with Clojure in my free time and I was never able to really use it for anything large. Well, now I’m 5 or so months into using it full time and I’m really enjoying the development experience. So I thought I’d update my previous post with what my Vim configuration looks like now.
Obsessing over multiple projects
In my new job, I’ve switched each project being a unique combination of git repositories1 to all projects being in just a few repositories.
For instance, my primary codebase consists of two repositories, one for the frontend and one for the backend. As time progresses, I work on multiple (mostly) independent projects in each repo, each one on its own branch. Each project requires a different constellation of files, sometimes organized in radically different ways in my Vim tabs.
outputdiff: easily spot differences in command output
When I’m in front of a computer, I spend much of my time at the command line, logged into various systems, running commands.
Now, there are two basic categories of commands:
Commands that change - install a package, add a firewall rule, restart a service Commands that report - list installed packages, list firewall rules, list running services This post is about making the second category of commands more useful. Quite often, those commands have copious amounts of output.
envbox: keeping secret environment variables secure
In my day to day work and evening and weekend side work, I do most almost all of my development working on remote systems. This has a number of advantages that are for another post, but this post is about one of the limitations.
Most developers have a tool belt that they’re continually improving, and as I work on mine I come across commands - like hub
that require1 putting a secret value into an environment variable, usually for authentication.
My note-taking workflow
A few people have asked about my note-taking workflow and it’s been quite useful to me, so I thought I would describe what works for me.
I’ve tried several of the popular note-taking tools out there and found them overbearing or over-engineered. I just wanted something simple, without lock-in or a crazy data format.
So my notes are just a tree of files. Yup, just directories and files. It isn’t novel or revolutionary.