A new kind of Pelican-bench
A new twist on a the idea
I’ve not had much luck with using the AI tooling to create 3D models of anything but the simplest objects in the past. The newer models have gotten a lot more capable.
Practical notes on systems, software, infrastructure, and the occasional idea that needed a place to land.
A new twist on a the idea
I’ve not had much luck with using the AI tooling to create 3D models of anything but the simplest objects in the past. The newer models have gotten a lot more capable.
Better results through science!
This weekend I decided to play around with agentic loops and the results have been :chefskiss:. I’m using loops and combining Codex CLI and Antigravity CLI working with Claude Code as my primary agent to produce great results with less human attention.
Last week was a busy week for cryptocurrencies. I haven’t seen this covered in the mainstream news, but it looks like frameworks are being put in place for securities to begin trading on the blockchain.
Bash 4.4 reduces quoting/escaping hell
TIL ${*@Q} helps with quoting/escaping hell.
Download, package, and publish software as a apt repo on Github Pages
uv is becoming really useful, but I noticed there is no apt repo/PPA of it. I decided I wanted to try publishing an apt package repository via Github Pages. The LLMs got me started, but there were a lot of little things to work out, so here’s a complete recipe.
A Proposal for Hynek's Docker Recipe
While reviewing Hynek’s awesome “Production-ready Python Docker Containers with uv” article, I made some changes to the final container. Here’s my proposal for changes.
Configuring Elasticsearch to write snapshots to Backblaze B2"
An important part of setting up an Elasticsearch cluster is to configure snapshots. I recently set up snapshots to Backblaze B2, an affordable alternative to AWS S3. This is a complete example of configuring them.
Which of these two code chunks is better
I had a piece of code that was deeply nested for loops, and I wanted to see what it could look like if it wasn’t deeply nested. Deep nesting is the root of all evil, you know. Which is the most clear, maintainable code?
How to import a module without .py suffix
I often write little CLI programs in Python, where I just want to call it “script” rather than “script.py”. I also want to be able to test functions in these scripts. It gets tricky if you want to test code from a file without a “.py” suffix.
I spent quite a bit of time while I was learning Headscale being confused about users. Here are some key points that helped me understand them.
Headscale CLI requires that you remove a node by id rather than name. jq to the rescue!
Watching the discussion about ChatGPT reminds me of the early days of Google. I’m thinking back to when it was under the Stanford domain and opinions of it since.
In the past I’ve run socat as a daemon to run a shell command and send the output to a socket. It works well, but I wanted to try the systemd way of doing what “xinetd” has done in the past: Run a command and send the output to a socket.
Looked at a few more static site generators, looking for a simple one, based on responses in a “Hacker News comment section on Hugo today”. Here are some more mini reviews.
I’ve been playing around with a few simple static site generators, the simpler the better. Here’s a mini review.
It’s a little tricky to connect android to Tailscale, but here’s how I do it using the Google Workspace authentication.
OIDC Logins to your Tailnet via Google
Headscale “users” can be authenticated using Google Workspace logins. This only applies to nodes that do not have tags. Nodes with tags do not get logged in/out via OIDC.
PGLoader can painlessly copy data from a SQLServer into PostgreSQL, including setting up the schemas and copying the data. A very slick tool that I’d never used before.
Adventures in the Dangerous Pragma
I created a schema and accidentally put “test” instead of “text” in a column type. To fix it, I tried copying it to a new column, since you can’t alter a column in sqlite, then copying it back, but that lost the NOT NULL constraint.
Upgrading a 2020 Ender 3 Pro with the SKR Mini E3 v2.0 and a BLTouch
I had wanted a BLTouch 3D printer, I felt like the bed leveling would reduce the amount of fiddling per print. I chose to upgrade the motherboard to get something with a native BLTouch port, as the way to achieve it.
Notes from building April Wilkerson's raised garden beds
Over the last few weeks, I built April Wilkerson’s Raised Garden Beds with self-watering system. They are really good looking, and were fun builds, but I do have some notes on the build that may help others.
Installing Ubuntu 20.04 with ZFS Native Encryption Enabled
Ubuntu 20.04 includes the ability to install with ZFS for the root and boot partitions. However, it does not include an option for encrypting the root volume. Fortunately, it is easy to enable it.
Using AMI roles to restrict certificate generation
We have a bunch of machines behind haproxy load balancers. The haproxy is publicly accessible and can use the ACME HTTP method for certificate renewal. The machines behind it are using self-signed certs from our own CA, but there are cases where we might like to have certs on …