Archive

All published posts

2518 posts latest post 2026-07-10 simple view
Publishing rhythm
Jun 2026 | 26 posts
Phantom
Maxteabag [1] has done a fantastic job with sqlit [2]. Highly recommend taking a look. A user friendly TUI for SQL databases. Written in python. Supports SQL server, Mysql, PostreSQL and SQLite, Turso and more. References: [1]: https://github.com/Maxteabag [2]: https://github.com/Maxteabag/sqlit
webi-installers [1] by webinstall [2] is a game-changer in its space. Excited to see how it evolves. Primary and community-submitted packages for webinstall.dev References: [1]: https://github.com/webinstall/webi-installers [2]: https://github.com/webinstall
Fixing The Marquee For Jolly Holiday
Waylon up at the Marquee of the theater fixing the fallen letters before the night show.
You Might Also Like: My Notes Blog Writing about the big beautiful mess that is making things for the world wide web. blog.jim-nielsen.com [1] I really like a good link blog, it’s the old timers version of a reaction video. It gives me new posts to discover from other writers, and gives additional perspectives from ones I trust enough to add to my RSS. It’s nice to have a place where I can jot down a few notes, fire off my reaction, and nobody can respond to it lol. At least, not in any easy, friction-less way. You’d have to go out of your way to read my commentary, find my contact info, and fire off a message (critiquing or praising). That’s how I like it. Cuts through the noise. Ditto Jim. I’ve oddly found mine more useful to search than blog posts, zettlekaten, notes, whatever you want to call them. For me writing something down makes it more concrete in my brain that I’m less likely to need to go reference, but I often need to re read or references posts from others, this is where Thoughts [2] comes in handy for me Like Jim I have a bunch of feeds [3] you can subscribe to if you want some or all of my stuff, but I aggregate everything to the same root site. References...

Gross phone

Is there a world that giving my phone to my kids does not result in it being covered in peanut butter and snot?

Developer Vs Artist Ai

The other day I was watching [thePrimeTimeagen]https://youtube.com/@theprimetimeagen?si=jVcp23FbfQSFZfDc) and he talked about devs loving ai and artists revolting. There was some discussion in chat about art being more creative and prime quickly squashed that. He ended with being oddly confused why developers are jumping on board and artists are not. Both had their art stolen to build out the models. [1] my own vibes I'm writing this from my phone without further research, all vibes, personal experience, and thoughts, no research. Good Tools # [2] First I want to argue that artists have had some form of ai in their tools for years. Idk, probably not ai as we know it today but functionally similar. Content aware fill. This is a Photoshop feature from Adobe, as far as I know it’s one of the special things you get from Adobe that you don’t get from the FOSS alternatives easily. This is an example of a good took that is well loves by the community and widely used, if you put ai i...
4 min read
“You should never build a CMS” | Sanity Lee Robinson migrated cursor.com off Sanity. He made good points. Here's what he missed. Sanity.io · sanity.io [1] Such a good breakdown of the leerob article, that is hitting everywhere right now. Feels like sanity was just a bit late to getting things right and it would have just worked for them how leerob was trying to use it, but MCP sucked so he jumped. Reading their loose descriptions of a CMS, its an interesting realization to realize I’m rolling my own cms. I kinda feel like theres a few inspiration features to take from here, but I have no regrets. As a developer I like being able to build my own tools, I like being able to search and edit from nvim, and not have to write GROQ queries, and transforms. There were some really good points here that as I get more and more content on my personal site, I do kinda feel it. I’m surprised there is not more tooling that does some of these things for piles of markdown. pinning this to re-read later, feels like a lot of good tidbits here. References: [1]: https://www.sanity.io/blog/you-should-never-build-a-cms
- It really feels like M$ is coming down hard on GH lately to make some unfavorable decisions for users. Maybe there is good reason for all of these changes from a business perspective, I can’t judge that. But right now there are some really great alternatives out there. I’m so grateful for what forgejo and gittea offer, and at the same time seeing the community get split up from GH is sad.

Ping 12

Is `bet` new teen lingo? My kid is starting to say _bet_ in every sentence. > So he explained it as "I'm down", "You bet", "Yes", "I like that", "You betcha"

Ping 11

Naming things is hard, pings will now be numbered.
- Silksong DLC announcement already, we waited 8 years for the game, and are getting DLC’s months after launch. Dudes I haven’t even finished the game get, maybe not even half way. It’s amazing. Its amazing that these three make such a kick ass game with great art, story, voice, gameplay, and now drop a free dlc in 2026.

I'm being gaslit by the ai

I'm being gaslit by the ai. It just did a big hard change, now cant do a seemingly basic change, and assures me that that its fixed my issue on every iteration.
Finished Elf House
Waylon and Rhiannon standing in front of a mostly finished elf house built for the Jolly Holiday Performance at the local theater.
Cogwork Saved Pill

I’ve been using this one for awhile now, I have a post type that I only edit from my phone, but I have all the post numbered. I set up a template in obsidian for using templater, the template goes right in the static site repo, I point templater to the templates directory and this has been working pretty seamlessly for awhile.

---
date: <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>
templateKey: myposttype
published: true
tags:
- myposttype
<%*
const folder = "pages/myposttype";

// get all files in the vault, keep only those inside the folder
const files = app.vault.getFiles().filter(f => f.path.startsWith(folder + "/"));

// extract numeric suffixes from filenames like myposttype-123.md
const nums = files.map(f => {
  const m = f.basename.match(/^myposttype-(\d+)$/);
  return m ? parseInt(m[1], 10) : null;
}).filter(n => n !== null);

// next number (start at 1 if none exist)
const next = (nums.length ? Math.max(...nums) : 0) + 1;

// include the .md extension when moving
const newPath = `${folder}/myposttype-${next}`;
await tp.file.move(newPath);
%>
---
- Kelsey has a really good lightbulb moment here about platform engineering. “if you had to do all the deployments for the entire company what questions would you ask of the development team?” That’s your api, your platform, this is your product as a platform engineer. It’s not images, docker, terraform, hcl, yaml, kubernetes, It’s building out the right api for your company to deploy its products effectively. https://www.youtube.com/watch?v=HdUbTyvrfKo&t=429s [1] timestamped References: [1]: https://www.youtube.com/watch?v=HdUbTyvrfKo&amp;t=429s
Check out andrii-kryvoviaz [1] and their project slink [2]. Self-hosted [3] image sharing service References: [1]: https://github.com/andrii-kryvoviaz [2]: https://github.com/andrii-kryvoviaz/slink [3]: /self-host/

notifications for static site builds

This morning I set up notifications for changes to my static site builds leveraging git name status [1] and ntfy. ![notification of changes](https://dropper.waylonwalker.com/file/1c69e648-5aa3-4f66-9085-a045b99450a5.webp) References: [1]: /git-name-status/

--name-status is a great way to see what files have changed in a git diff alongside the status code. I recently used this in a script to create a report of new and modified files during a build.

git diff --name-status
git diff --name-status origin/main
git diff --name-status --staged
git diff --name-status 'HEAD@{3 days ago}'
Dude Locked In
My son wanted to help shovel snow, usually this means, I'll piddle around, have Fun, maybe make things worse, but it's ok cause I'll make it a good time. Tonight he was LOCKED IN and got a good chunk of the neighbors drive and entire sidewalk done.

fast changing dev server today

The dev server is cooking today, I've dropped markata builds from 2m40s (hot cache) in prod to 15s (hot cache) in dev. Currently building 2745 posts and 274 feeds. ![screenshot of the dev builds from k9s](https://dropper.waylonwalker.com/file/c3e8b9de-d4be-4c7c-ab9b-a13a25c7673c.webp)

The Right Reasons To Run Kubernetes In Your Homelab

Running kubernetes in your homelab [1] is a fantastic way to learn, explore, express yourself, and run services that you use. The Right Reasons To Run Kubernetes In Your Homelab # [2] There are not many - You want to learn kubernetes - You like kubernetes - You want to learn to scale There are also The Wrong Reasons To Run Kubernetes In Your Homelab [3] You want to learn kubernetes # [4] Homelabbing is a such a great way to learn new skills, deploy real apps that you use. Create new custom apps for your specific use cases that no one else has. You should absolutely run kubernetes in your homelab if you want to learn it. I would recommend to start locally, pull up kind, minikube, or k3d and start from your local machine before putting it on a server. When you decide you are ready for a server, you probably don’t need any crazy hardware. You can probably run on some old retired Dell Optiplex or an old desktop someone is throwing out as it no longer runs windows. You like ku...

I learned to today that setting MEMORY on your minecraft server causes the JVM to egregiously allocate all of that memory. Not setting it causes slow downs and potential crashes, but setting INIT_MEMORY and MAX_MEMORY gives us the best of both worlds. It is allowed to use more, but does not gobble it all up on startup.

In this economy we need to save all the memory we can!

Here is a non-working snippet for a minecraft server deployment in kubernetes.

      containers:
        - name: dungeon
          image: itzg/minecraft-server
          env:
            - name: EULA
              value: "true"
            - name: INIT_MEMORY
              value: "512M"
            - name: MAX_MEMORY
              value: "3G"

and in docker compose

  dungeon:
    image: itzg/minecraft-server
    environment:
      EULA: "true"
      INIT_MEMORY: "512M"
      MAX_MEMORY: "3G"
Cogwork Core Gang Fight
- I did not realize all the places to be considered as AI water usage. Hank goes deep highlighting all of the sources he is aware of, most reports leave off a lot of these sources, some reports go maybe too far adding sources that may not make sense depending on the question you are asking. As someone that runs computers with gpus in their house, and watching LTT make AIO installs on GPUs I’ve wondered what would AI use water for, now I understand that its a lot. No where near agriculture, but a lot. Unlike running a gpu in your house, potentially with a closed loop AIO, data centers are filled with hardware making heat and it all must go somewhere. Current technology has this done with evaporative cooling, i.e. its not a closed loop, the water goes into the sky. He goes on to point out that its not just the data center, using water, but also chip fab and power plants. Something I hadn’t put a lot of thought into is the type of water. While a lot of agriculture and power applications do not use municipal water, a lot of data centers do, putting excess strain on water treatment. Something I find interesting is that Altman is doing the same thing here that he does on his fin...
Notes – 05:09 Tue 9 Dec 2025 Notes – 05:09 Tue 9 Dec 2025 dbushell.com · dbushell.com [1] Age verification hitting bluesky?? At least its not yet requiring your govt issued id or anything, but stepping that direction. I don’t know how I feel about age checks, does it actually protect kids when parents aren’t involved? I can’t say anything there, but it really does feel like its about ready to hurt the rest of us, requiring us to whip out ids and personal data for anything done online. This is a real problem that is hard to solve, and reasons why it has not been solved yet. References: [1]: https://dbushell.com/notes/2025-12-09T05:09Z/
Deprecations via warnings don’t work for Python libraries Seth Larson reports that urllib3 2.6.0 released on the 5th of December and finally removed the HTTPResponse.getheaders() and HTTPResponse.getheader(name, default) methods, which have been marked as... Simon Willison’s Weblog · simonwillison.net [1] Deprecation warnings are so easy to miss, ignore, become numb to. Creating tools and processes to catch and address these issues is important. I’m surprised such big projects let deprecations just hang around for years. References: [1]: https://simonwillison.net/2025/Dec/9/deprecations-via-warnings/#atom-everything
A quote from Claude I found the problem and it's really bad. Looking at your log, here's the catastrophic command that was run: rm -rf tests/ patches/ plan/ ~/ See that ~/ at the … Simon Willison’s Weblog · simonwillison.net [1] damn this is a rough one. A users entire home directory removed by claude code from an rm command. rm -rf tests/ patches/ plan/ ~/ Reading the first half of that command it LGTM. If you had approved rm, you are hosed. If this is inside a larger script its running, you really gotta read close. This one still feels pretty obvious, but I can imagine some bash doing some nasty things I miss if I read it and understand it let alone glance at it. I’ll take this as a reminder that I really need to be paying full-ass attention to agents, and moving towards a better sandbox for them, something in docker, maybe something like distrobox that is a magic wrapper over podman that just gives you the things you need for what it does. Something that starts up with access to start web servers, run agentic cli of choice, see project, git [2] commit. It feels like the right thing has a lot of what distrobox does, but distrobox has too much and would be prone to this us...
Cogwork Dancers Fight

One Year Of Shots

I’ve been running my shot scraper api for a year now. It creates og [1] images for my website and thumbnails for my Reader [2] using a headless chrome instance. - 25870 shots - 73 shots per day on average - 12-09-2025 first shot taken Histogram # [3] [4] a histogram of shot counts by day You can see in the histogram that I’ve had a few big spike days, This has been mostly for days that I’ve integrated into a new service or changed the endpoint. On February 13, 2025 I swapped over from using the post to using template specific to open graph images. -content = "https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}&height=600&width=1200&scaled_width=1200&scaled_height=600" +content = "https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}/og/&height=600&width=1200&scaled_width=1200&scaled_height=600" Image Comparison Original Post Image [5] originally I simply used an image of the post itself New OG Image [6] In Feb 2025 I made OG spe...
2 min read

I found snow-fall component from zachleat, and its beautiful… to me. I like the way it looks, its simple and whimsical.

Install #

There is an npm package <a href="https://zachleat.com" class="mention" data-name="Zach Leatherman" data-bio="A post by Zach Leatherman (zachleat)" data-avatar="https://www.zachleat.com/og/opengraph-default.png" data-handle="@zachleat">@zachleat</a>/snow-fall if that’s your thing. I like vendoring in small things like this.

curl -o static/snow-fall.js https://raw.githubusercontent.com/zachleat/snow-fall/refs/heads/main/snow-fall.js

I generally save it in my justfile so that I remember how I got it and how to update…. yaya I could use npm, but I don’t for no build sites.

get-snowfall:
    curl -o static/snow-fall.js https://raw.githubusercontent.com/zachleat/snow-fall/refs/heads/main/snow-fall.js

Usage #

Now add the component to your page.

<!-- This belongs somewhere inside <head> -->
<script type="module" src="snow-fall.js"></script> <!-- Adjust the src to your path -->

<!-- This belongs somewhere inside <body> -->
<!-- Anything before will be below the snow. -->
<snow-fall></snow-fall>
<!-- Anything after will show above the snow. -->

Today I learned an important lesson that you should periodically check on your kubeconfigs expiration date. It’s easy to do. You can ask for the client-certificate-data from your kubeconfig, decode it, and use openssl to get the expiration date.

kubectl config view --raw -o jsonpath='{.users[0].user.client-certificate-data}' \
  | base64 -d 2>/dev/null \
  | openssl x509 -noout -dates

Note

This will only work for the first user, if you have more than one user or context defined in your kubeconfig you will need to adjust.

Not every print needs supports

Not every print needs supports. So many models default to having it on, whether needed or not. Well designed parts, designed for 3d printing almost never need supports (depending on constraints).
Slab Fight
Stolen Dress
Moss Mother 2 Fight

reminder Include steps to reproduce

Include steps to reproduce your bug when you file a bug report or issue. You may quickly forget how you got there, and no one can fix a bug that is not reproducible.
- This looks like a really good low cost option for some workholding. There is never a shortage of workholding in the shop and everything has a place. Having something low cost that you can have a bunch of makes a lot of sense. Maybe you still need a super scucum unit for really clamping the shit out of something, but this easily covers most use cases in a garage workshop. I want to build it.
Moorwing
- Moore’s Law is Dead pitches a pretty ingenious sku for the new gabecube aka steam machine. I fully support repairability and ewaste reduction. most of these components have not had MAJOR improvements in years, hence his channel name. There is a possibility here that Valve could ship with their unique hardware, (apu, psu, case, ports, networking) and let you bring your own ssd and ram from an old device that you might not use anymore. I love this idea. At the same time it feels like entering the star wars universe where there are no more new manufacturing and everything is cobbled together from old hardware made long ago.

All I want for Christmas is, filliment

All I want for Christmas is filament I don’t need gifts or fancy things I just wanna model, tinker, and print, watch layers stack just right. Santa, if you’re listening... PLA, PETG, ABS will do.
Needle Strike
Conchflies Fight

When using two GitHub accounts the gh cli gives very easy gh auth switch workflow from the cli.

from the docs

gh auth switch –help Switch the active account for a GitHub host.

This command changes the authentication configuration that will be used when running commands targeting the specified GitHub host.

If the specified host has two accounts, the active account will be switched automatically. If there are more than two accounts, disambiguation will be required either through the --user flag or an interactive prompt.

# list accounts
gh auth status
# switch accounds (interactive if more than 2, i've never seen this personally)
gh auth switch
Check out basecamp [1] and their project fizzy [2]. Kanban as it should be. Not as it has been. References: [1]: https://github.com/basecamp [2]: https://github.com/basecamp/fizzy
- What a heart breaking video to listen to. I’m trying to do a better job of being positive right now. I’m trying to look at the world in what I have control over (not much more than my attitude about it). AI is killing so much right now I’m trying to look at it as the good tools the engineers made it to be. Ownership is dying around every goddamn corner. Hats off to Edison, this guy gets it. We need more companies like this taking a stand for the average person who wants to make it out there.
- What a great campfire story Casey stumbled into. Whether any of this is true few will ever know, but its very reasonable that a race condition and a stalled job to apply configuration caused by someone who left the company 10 years ago caused an outage. I find it hilarious that they call this guy he answers, yup I still know the password, but how do I know you’re legit, I’m not just handing out the password. Casey did a stand up job telling this story.
- Linus is Techbrophobic [1] like the rest of us. This is such an unexpectedly mild take from him. I expected some threat to the mother of the vibe coder, but he gave a pretty great middle of the road take. The industry sucks, it smells off, we know a lot wrong with it, it feels like theres a lot more wrong than we know. But the tools that its making are really good when used in the right ways. They are not a replacement for anything, they are assistive. They can lift someone from not knowing how to code to making a small webapp for their use. Someone who wants to write backend and give them a decent front end, someone who whats to write front end and give them a decent backend. Great take from someone with more experience than most can ever dream of having, worth a listen. References: [1]: /techbrophobic/

gpus are awesome and I need one for Bambu Studio to be usable in a distrobox. Adding the --nvidia flag to distrobox create bind mounts the nvidia /dev/ devices and sets up the necessary environment variables. Once we are in there are a couple of packages to install to make it work.

distrobox create --name bambu-studio --image archlinux:latest --nvidia
distrobox enter bambu-studio
sudo pacman -S nvidia-utils lib32-nvidia-utils vulkan-icd-loader
nvidia-smi
glxinfo | gprep OpenGL
sudo pacman -Syu --needed base-devel git
git clone https://aur.archlinux.org/paru-bin.git
cd paru-bin
makepkg -si
paru -S bambustudio-bin

bambu-studio

distrobox-export --app bambu-studio