Discovering Jpalardy's Like Slime, for Vim was a revelation to me. I could have any repl in my editor? Whether it knew it was there or not? It also served as the basis for my daily driver for writing Common Lisp more recently. As I wrote in that post, not only were for-purpose REPL tools complicated, they simply didn't measure up to the functionality I could get out of vim-slime . I missed this…
Introduction I have recently tried the AI harness Pi . I'm coming from it from a harness that I first picked up when all this stuff was sort of newer called Goose . I can see what all the hype is about, but I actually had a bit of a "better is worse" experience with it. I think I'll be sticking with Goose for now. I have come to the conclusion that it is because of the friction Goose introduces…
The Lisp Curse is, briefly, that Lisp is so powerful and expressive that it makes it easy to write code without collaborating with others and just write it yourself. If that sounds familiar, it's because that's what's happening with AI right now. Hundreds of stars instead of tens of thousands or thousands on GitHub for projects, dozens of implementations for the same thing, abandoned projects…
In an insulting, ironic blow to the neats, the scruffies created an AI that much prefers to write anything but Lisp. I use agentic AI a lot at work to do my job as a DevOps engineer. I use OpenRouter with the Goose CLI tool , and I've gotten a pretty good configuration file going with it. I have lately started writing a tool that converts between different RSS reader formats . I started writing it…
Goodbye, Clojure After ~7 years, I was done with Clojure . I was writing a some CLI apps , and I hated how long they took to start up. The community at large seemed not to care about this problem, except for the babashka folks. However, I spent long, hard hours banging my head against native-image and it just wasn't working out. It was incredibly painful, and at the end of it, I still didn't have…
Introduction I asked this question on the Lisp Discord recently: I keep wanting to use generic methods and the CLOS, but I've heard bad things about its speed. Anyone have experience putting a generic method in the hot path? I also read a posted article where someone went from classes to structs for a 4.5x speedup . The article seemed only to mention moving from classes to structs, not abandoning…
This post is an updated answer to an older post . In that post, I describe using GNU screen and rlwrap . I don't use rlwrap anymore, as it makes the REPL too slow. I also don't use GNU Screen anymore; I've switched to tmux and ConEMU . I've decided I need an up-to-date post showing what I currently use so that I can link to it to show people online what I'm using. So let's dive in. This is how I…
Introduction I decided to write this usage report from a thread on the Telegram Common Lisp channel: Alive is a VS Code plugin that aims to make it easy to develop Common Lisp from that editor. It is a well-known way to develop Common Lisp , though perhaps not very common . I haven't ever used it before, so when I saw that question, I thought, why not. So I tried using the plugin and wrote down…
Common Lisp Community Survey 2024 Results Introduction My name is Dan Haskin and I conducted the Common Lisp Community Survey 2024. I have taken longer than promised getting this out, but I recently lost my job and have been dealing with the fallout. If you or anyone you know needs a fantastic DevOps engineer , let me know! Hello! Roughly eight weeks ago, I asked people to fill out a survey about…
Someone asked about building data structures with examples in Common Lisp on the Lisp Discord . I thought, how fun. I'll write a blog post about it. So here we are. We're going to cover creating three different types of data structures in Common Lisp: linked lists, growable vectors, and hash tables. Before we start I'm going to assume knowledge of some Common Lisp, and knowledge of Big-O notation…
The Environment Section Easily one of my favorite sections of the Common Lisp HyperSpec (CLHS) is the Environment section. All my favorite functions are in there -- trace , functions for determining the lisp implementation type and version, kernel version and type, and so forth. I just barely also discovered dribble , which lets you record a REPL session. No other section of the CLHS could be seen…
Introduction I have this weird hobby of trying to get good unix tools to run natively on Windows. I find this is the most efficient use of my laptop's resources, and therefore the nicest experience. WSL is nice, but it takes up a lot of RAM on my system. I prefer to use MSYS2 . Getting unix tools to work correctly under MSYS2 is a challenge, as we'll see, and for me, that's part of the fun.…
Summary I keep a journal using my Android device (though I can still edit on my computer, most journaling is done on my phone). I have found a good set-up that works well, and I wanted to write a post about how I did it so that I could tell others how they could have a nice journaling set up as well. I wanted to start doing this maybe two or three years ago. I have been able to consistently make…
The following is taken from a slack message I sent to my coworkers. Personally identifiable information and company specific intellectual property has obviously been elided. Giving some background, I am the only member of a five-person DevOps team who goes into the office every single day of the week; most of my colleagues go into the office one or two days a week. I must explicitly point out that…
Motivation This article details a method for sharing screenshots and files easily even if the only way to post them is via text. Several means of communication on the internet only support text. When chatting via IRC or filling out a text box in a contact form or locked-down ticketing system, text is the only avenue. Meanwhile, even if some tools allow the sharing of these artifacts via the usual…
I recently wrote a three part post series entitled "Which Programming Language Should I choose?". I had some thoughts on the conclusions I drew, after a few experiences I had. In general, I painted Go as the be-all, end-all; however I have recently found drawbacks in the very language decision that I originally found made Go great. This decision was its implicit event loop and its abstraction of…
I am a DevOps Engineer. I use (or have used) a lot of tools that template code and then run it: Helm Charts : These template YAML SaltStack : Templates YAML, then loads it Ansible : Loads YAML, then templates it (this is better) The list goes on. I hate this. I hate templated code. The problem is that
My chief hobby is collecting hobbies. Seriously. I have learned so many things over the years in hopes that they would stick: Programming HAM Radio Woodworking Knitting Knitting Needle Manufacture Knifes and Knifemaking (didn't quite make one...yet) Chess Go However, a couple of them have stuck. Programming has been evergreen in my life, though it has waned in the last few years. The pandemic saw…
In November of 2021 My coworker showed me ZSH and Oh My ZSH at a new job. He encouraged the whole team to switch to ZSH. I was at a new job and was trying new things so I switched as well. I was surprised at how much I liked it. It was nice to have a prompt that changed when I entered git repositories. I used it for about a year and a quarter. During this time I started experimenting with another…
This post is the last in a series of posts about programming languages . Conclusion Programming languages have been discussed at length in this series. We end here with a questionnaire and table showing what programming language should be chosen precisely based on one's needs. Before it is presented, we know to caveat to the below: the front end. Front end is a complicated mess but in general the…
This article is part of a multi-part series about programming languages. In the last article we discussed the two most important points regarding The choosing of a programming language: resource management and type system. In this post week arrive at the effects of different language design decisions which have less impact on the business but more impact on the developer. As with the first post,…
The question is ubiquitous, relevant, and gets highly opinionated answers. Usually, the answer is "whichever one you know best", but what if you know lots of them? Here is a guide, based on my opinions and observations, on what differentiates programming languages, in order from most important to least. The first part of the guide is covered by this post, and covers the most important…
I have recently blogged about how I went self-hosted with my git repositories . Well, as of today, that didn't work out. I accidentally added a payment method for myself with Digital Ocean . I asked support to remove it, so I could continue pre-paying as I go so as to avoid re-living past memories . They said I had to have a payment method, and that they wouldn't take it back down. So, I left DO.…
2023-05-07T09:41:14-0600 Introduction This article presents a procedure for how to release a Common Lisp application starting from nothing within an hour. It also is intended to be a guide for how to get programmers who are new to Common Lisp set up with proper tooling around testing and packaging their code. Since this guide may or may not be used in a corporate setting, it is assumed that the…
2023-05-06T09:14:17 I was reading a now deleted thread from Hacker News about how a certain individual who had contributed a great deal to modern computing had expressed morally alarming opinions and/or done some horrible act on the internet. These trespasses were found to be so egregious that many people objected to some of his contributions being attributed to him. They wished to use his…
I have often observed that the race between corporate code and code written by hobbyists and volunteers is like the race between the Tortoise and the Hare . The Hare is fast, but inconsistent in its speed. The tortoise is slow, but never stops. Similarly, companies have the time and resources to pour into making code really good, really fast. However, having such a "high metabolism", they must…
I recently learned that Barnes and Noble is doing well again. I used to love going to Barnes & Noble as a teenager on my lunch breaks. I worked as a lifeguard in downtown Naperville, Illinois. I would go there to read or to find a book. Being surrounded by all those books gave me comfort. I'm glad they're doing well again. People I know often don't like paper books. They'll buy kindle over the…
I have become interested in the git email workflow. It seems arcane, but also intriguing. I wondered if I could get it to be easy to use, as easy (or close to it) to use as git itself, or better, as easy to use as GitHub. I wanted to find a workflow that I myself would not only be happy using, but a workflow that I wouldn't be embarrased to ask my friends to use with me as well. Even if my friends…
ChatGPT is Confused about Common Lisp The following is a transcript of a "conversation" I had with ChatGPT last week about Common Lisp. ME : Can you name a list of web sites that are powered by common lisp? ChatGPT : Here is a list of websites powered by Common Lisp: Reddit GIMP Maxima ASDF ABCL CLISP SBCL CL-HTTP CL-PPCRE CL-Markdown Note: This list is not exhaustive, and some websites may use…
2022-12-26T12:29:58-0600 Slack should not replace email, but it sort of has. My brother-in-law is a programmer and says that he hasn't checked his email in years even though people get angry at him for it. He says everyone just uses Slack at his company. This is the same for my company, nobody emails each other. They all just use Slack. "This is fine", you might say, but I do not think so. If…
Started writing this 2022-12-13T17:22:02-0700 2022: Healing from the Pandemic As I look on this last year, I have decided it was one of healing. Healing from the pandemic, mostly. I had a job that was hard on me because I crave social experiences. This particular job was a fine employer, but they were more introverted. Social interaction was less of a necessity. 2020-2021: The Pandemic and its…
Started writing this 2022-12-13T08:46:50-0700 Overview Writing Ansible for infrastructure (i.e. using it instead of Terraform, not using it instead of Puppet) feels dirty. It feels like you're some script kiddy just cludging things to work together. This is in sharp contrast to Terraform, which has a much more elegant model for infrastructure management and supports a declarative style, and even…
2022-11-29T12:57:50-0700 Overview I use tmux on Linux and ConEMU on Windows. Both tools are some kind of terminal multiplexer. I often create a new terminal window, but the window just sends me back to my home directory. There are some ways around this, but I find this to be so annoying that I just created my own set of tools around it. Method To solve this problem, I write my "working directory"…
2022-11-11T08:01:33-0700 I am typing this right now in I-can-see-my-breath weather outside with glare on the screen coming from the brilliant morning sun. I love being able to do that. I used to bike a lot before I got long covid. In any case, I still use the train and bus a lot. I like being able to code wherever I am. Having done this for around 13 years, I have picked up some tricks along the…
This month, my posts are focusing on my productivity tools. I have used the Pomodoro Technique on-and-off for ten years. I find it really helps me keep track of what I'm doing, especially since I have ADHD. Over time, patterns have emerged around how I do the Pomodoro Technique. This series showcases some of those things. Reports are mentioned in the book, but it is left open-ended what reports to…
This month, my posts are focusing on my productivity tools. I have used the Pomodoro Technique on-and-off for ten years. I find it really helps me keep track of what I'm doing, especially since I have ADHD. Over time, patterns have emerged around how I do the Pomodoro Technique. This series showcases some of those things. Overview I organize my activity inventory with 5 sections. These sections…
How I Do The Pomodoro Technique, Part One: To-Do Today This month, my posts are focusing on my productivity tools. I have used the Pomodoro Technique on-and-off for ten years. I find it really helps me keep track of what I'm doing, especially since I have ADHD. Over time, patterns have emerged around how I do the Pomodoro technique. This series showcases some of those things. Planning The…
I started working out of SourceHut after GitHub used everyone's code to train an AI that flagrantly violates copyright right and left . Then SourceHut said that they wouldn't let anyone on their platform who was building their project around blockchain . I disagreed with their decision , so I'm moving to a self-hosted solution. I'll be updating links to my repos in past posts in this blog.…
This month, my posts are focusing on my productivity tools. This article describes my tooling around writing my notes in Markdown in Vim, and how I organize my notes using simple markdown files. I use this for notes, but also planning my day. Future blog posts will explore how I use these ideas to do the Pomodoro Technique. Simple Organization I have a folder synced across my computers, that holds…
What's a guy to blog about on Haloween when it's a programming blog? War stories, what else? That Time They Thought I Was An Intruder First day at a new company several years ago. I was a twenty-something upstart in a hoodie with a backpack on, and walked through the doors. I started wandering around, looking through each cubicle hallway, seeing what was going on. Oddly, there wasn't really any…
I am a firm believer that code should be written at a width of 80 characters. Code written at 80 characters wide? What is this? Even Linus doesn't agree at this point . Why does 80 characters still matter to me? I initially started using it because when I wanted to get into VMware machines from inside vSphere, say because the network went down or the SSH key was missing, I could still read my code…
The byte order mark is a terrible wrench that can gum up the gears. It is at the center of a rather old question in the Unicode community, with one answer being championed by Windows and the other answer by... Everyone else, maybe? Not sure. The problem in question was summed up nicely in Joel Spolsky's seminal blog post on Unicode : If you completely forget everything I just explained, please…
I wanted to put a few comments down about what people should understand about my switching from Emacs to Vim. I often get into arguments with people online about this issue. Most recently this came up when I discussed my Vim set-up for developing Common Lisp . I thought that putting something down in my blog might help me settle my opinion for others to read in full so that I can save time by…
Some folks have asked me about my Common Lisp set-up. Since it uses Vim, it's pretty unique off-the-bat. I wanted to describe it in more detail. My set-up is geared around GNU Screen . In one window, I have a REPL running, and in another vim is running. Using Jpalardy's vim-slime I send stuff to the REPL. Like much of the community, I use CL tools like roswell and CLPM , but I will focus in this…
I recently read mfiano's blog post about Common Lisp. He makes the point that the language attracts loners. To make your project lisp is to ensure no one will want to work in it with you. He's right. Not just for Common Lisp, either. But I just can't kick lisp. And on the other side of that coin, if I think I will only ever develop a project on a small team, the nimbleness of Lisp helps. I feel…
2022-09-26T07:07:28-0600 Compiled languages are getting more important since Moore's law has stalled. We want more speed. But really, as a DevOps engineer, I've learned to always value languages where it's easy to compile because they're easy to distribute. I don't have to make sure that an interpreter is installed on somebody else's machine to code with them. It's actually a huge barrier to entry…
I'm 35 years old. I am trying a new way to work online. New username, place to put my code, etc. I have some old ideas, and some new ones. Hopefully they'll end up on this blog soon. I'm thinking like more frequent posts, a paragraph or two each. I don't have the attention span for longer posts, being more of an extrovert by nature. We'll see how it goes.
Pretty much every package format on the planet -- pip, rpm, debian, what have you -- is built upon some form of archive format and or some form of compression format. The package is put in an archive and is then compressed. But in CI/CD pipelines, projects can generate several dozen of these packages per day. It's useful to keep track of several of them, perhaps builds from different git branches.…