Archive

All published posts

2605 posts latest post 2026-10-24
Publishing rhythm
Sep 2026 | 28 posts

Feb 10 – Feb 16, 20251 year ago

Featured this weekWriting

fragmention

This post is still WIP. ….. https://indieweb.org/fragmention##Challenges I’ve been digging through David Bushell’s blog over the past day, he has some really good ideas about blogging and webdev. One really interesting post I came accross is url-fragment-text-directives. I’ve long had id’s linked on my headings, though…

Writing

I’m building in a [[ fragmentions ]] implementation into my blog, I wanted to add some text before the fragment to indidate that it was the highlighted fragment that someone may have intended to share with you.

To get a newline in a :before I need to use \A and white-space: pre-line.

body :target::before,
body [fragmention]::before {
    content: "Highlighted Fragment:\A";
    white-space: pre-line;
    @apply font-bold text-yellow-600;
}

Here is what it looks like on my not yet live implementation of fragmentions.

screenshot-2025-02-15T15-43-06-372Z.png

Writing

fixed long standing nvim startup error

Here’s the diff, this is it. The error On first install of my dotfiles I’m presenting with this flashbang of an error filling the screen with red background. Its kinda hard to read, I’m not deep into lua and reading their tracebacks. It pops up in this pager that if I scroll too far it quits and the error is gone befor…

Writing

Testing fresh nvim installs can be a pain, and hard to di without borking your known good install. I’ve been using NVIM_APPNAME to run a test nvim in a sandbox that wont bork my main install. This usually runs for me in under a minute, can be down under 15s if I remove some of the TreeSitter installs at the end. This beats a full docker build of my full devtainer to test out nvim packaging woes.

rm ~/.cache/wwtest -rf
rm ~/.local/share/wwtest -rf
rm ~/.config/wwtest -rf
cp -r nvim/.config/nvim/ ~/.config/wwtest
NVIM_APPNAME=wwtest nvim --headless "+Lazy sync" +qa
NVIM_APPNAME=wwtest nvim --headless "+TSUpdateSync" "+sleep 5000m" +qa
NVIM_APPNAME=wwtest nvim --headless "+MasonUpdate" +qa
NVIM_APPNAME=wwtest nvim --headless "+TSInstallSync! c cpp go lua python rust tsx javascript typescript vimdoc vim bash yaml toml vue just" +qa
NVIM_APPNAME=wwtest nvim --headless "+MasonInstall lua-language-server rustywind ruff ruff-lsp html-lsp typescript-language-server beautysh fixjson isort markdownlint stylua yamlfmt python-lsp-server" +qa
NVIM_APPNAME=wwtest nvim

I’ve started to use this as a just recipe to run before deploying a new version of my dotfiles. So far its pairing nicely with nvim-manager

Writing

Setting up 4G Backup with Google Fi and Netgear LM1200

I connected my home network to have 4G bakcup with Google Fi and Netgear LM1200. Goodle Fi offers free data-only sim cards that you can order from their service. It takes a couple of days, and a new sim arrives in the mail free of charge. It does pull data from your account, so if you are not on an unlimited plan be ca…

Writing

ahrefs-cleanup-2024

This post is a big work in progress, expect it to keep getting better. Initial Score 404 Not Found, generate a page for each tag Title too long 404 Not Found, comma separated tags Another hit on 404’s caused by tags, was tag parsing from thoughts into posts, this cause links to the full comma separated list of tags rat…

Writing

When I want to put a date in a document like a blog post from vim I use !!date from insert mode. Note that entering !! from normal mode puts you in command mode with :.! filled out. This runs a shell command, i.e. date for this example.

It outputs the following

Fri Jan 31 08:46:11 PM CST 2025

You can also pass in a date such as tommorrow by pasdding in the -d date -d tomorrow.

It outputs the following

Sat Feb 1 08:53:20 PM CST 2025

codeium just taught me this one with autocomplete

:put =strftime('%Y-%m-%d')

This outputs the following

2025-01-31

What I like about the :put =strftime( method is that you can add a format, but that is a lot more for me to remember than !!date

A few weeks later #

I’m going through a bunch of blog posts and dont want my date formats to change to the Wed Feb format so I broke down and made these keybindings. I think I’m still going to be using .!date a lot, but these keybindings will be nice for editing blog post frontmatter.

set("n", "<leader>dd", "<cmd>put =strftime('%Y-%m-%d')<cr>", { noremap = true, silent = true })
set("n", "<leader>dt", "<cmd>put =strftime('%Y-%m-%d %H:%M:%S')<cr>", { noremap = true, silent = true })
  • dd 2025-02-12
  • dt 2025-02-12 12:53:47
  • :.!date Wed Feb 12 12:53:47 PM CST 2025

Writing

Today I ran into an interesting question, why am I being asked to configure tzdata while installing npm. Turns out that the aptitude cli has a why command that very handily nails down why you have something installed on a debian based system.

Install aptitude #

apt install aptitude

Why tzdata #

Now we can query why we need tzdata and see the full chain with the root package being npm.

root@47685221fb82:/# aptitude why tzdata
i   npm        Depends  node-gyp
i A node-gyp   Depends  gyp (>= 0.1+20200513gitcaa6002)
i A gyp        Depends  python3:any
i A python3    Provides python3:any
i A python3    Depends  python3.12 (>= 3.12.3-0~)
i A python3.12 Depends  tzdata

Writing

Today I ran into this interactive prompt on ubuntu while installing node and npm, and I do not want to manually configure this interactively every time I run an install, moreso in docker I do not have the interactive terminal to do so.

Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located.

  1. Africa  2. America  3. Antarctica  4. Arctic  5. Asia  6. Atlantic  7. Australia  8. Europe  9. Indian  10. Pacific  11. Etc  12. Legacy
Geographic area:

Why tzdata #

Checking aptitude why tzdata it shows that the chain goes back through npm.

root@47685221fb82:/# aptitude why tzdata
i   npm        Depends  node-gyp
i A node-gyp   Depends  gyp (>= 0.1+20200513gitcaa6002)
i A gyp        Depends  python3:any
i A python3    Provides python3:any
i A python3    Depends  python3.12 (>= 3.12.3-0~)
i A python3.12 Depends  tzdata

The solution, configure tzdata #

export TZ="America/Chicago"
export DEBIAN_FRONTEND=noninteractive
apt update
apt install tzdata -y
ln -fs /usr/share/zoneinfo/$TZ /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

DEBIAN_FRONTEND=noninteractive

This is required, because apt installing tzdata will trigger the interactive prompt. You will manually configure it in the next two steps.

Link

Link

Link

Link

Link

Link

I’m really excited about pangolin, an amazing project by fosrl. It’s worth exploring! Tunneled Mesh Reverse Proxy Server with Identity and Access Control and Dashboard UI

Link

Link

Check out llm-sort by vagos. It’s a well-crafted project with great potential. Sort input lines semantically with llm

Link

Photo journal · Feb 10 – Feb 16, 2025

In pictures 7 photographs

To kick off the second session, I noticed that when you have a torch you can light your cooking pot, what I did not realize was that this burns your cooking pot to smitherines. Nothing left but a frame of ** ashes.
As I was gathering resources with Lucy, minding my own business ** I got hit with an attack from a Clockwork Bishop, man these things hit hard and have really good aim. I took three hits before getting away, leaving me with very low heath at the end of this play session.
I had the grass for a hat, so I figured why not. I'm not sure if it really helps this time of year, but I thought it looked good on Woodie.
On day two I had enough materials gathered to make the garden digamajig to prep the soil for gardening. I planted the few seeds that I stole from the birds right away.
Just after the first night started I found my way back to the center of the map and made a stone campfire. I really like to use the stone campfires as they last forever, you just have to add wood. I was lucky enough to find stone by the Tall Bird to make this one on first day.
On the first day I made a look around my home biome, and ran into a Tall Bird
I always select the character _. He comes with an axe called _ she has some dark humor (but not too dark), I like her. She also does not wear out so you always have a weapon and way to chop wood with you.

Note

Fragmentions - linking to any text kevinmarks.com I can’t believe I’ve never see this Tim Berners-Lee quote, but I can’t unsee it and will be required to reference it from now on. eventually every URL ends up as a porn site I had a friend let his blog domain expire, within a short period it was scooped up and was hosti…

Note

Note

I’m going to leave the title off this post and see what happens. Titles are a lot of pressure! I think there is a reason that the big text-based social networking sites (Mastodon, X, Facebook… Chris Coyier · chriscoyier.net Interesting thoughts here on blog post titles, do we need them? They are so ingrained into every…

Note

Note

Note

Note

Feb 3 – Feb 9, 20251 year ago

Featured this weekWriting

dst session one

Wyatt is also documenting his run, while we aren’t playing in the same world we are playing together. https://wyattbubbylee.com/dst-forever-world/ Loading into the world I always select the character Woodie. He comes with an axe called Lucy she has some dark humor (but not too dark), I like her. She also does not wear…
3 min read

Writing

https://www.youtube.com/watch?v=03KsS09YS4E&t=610s

Today I learned about the basic calculator, bc. At the very end of this video prime uses it to add numbers in vim.

REPL #

You can start a calculator repl at the command line, by running bc.

Vim #

Since bc supports standard unix pipes you can easily pipe data from vim into bc and back out using !!bc. All you need is a string of math on the line you want to calculate, go to normal mode and run !!bc to get the answer.

Traditionally I will open my system calculator or ipython to do something like this.

To keep the equation and the result in the same line you can send the equation to stderr and the result to stdout using tee.

:.!tee >(cat >&2) | bc

Writing

markdown split panel

Today I was playing with markdown split panels. I want to be able to compare and constrast occasionually, today the inspiration hit to do this using admonitions. Mobile Users 🔄 You will need to rotate your device to see the side by side feature. The Markdown This is what I am going for, one admonition that is easy to r…

Link

emoji by carpedm20 is a game-changer in its space. Excited to see how it evolves. emoji terminal output for Python

Link

Note

Note

Note

Note

Note

Jan 27 – Feb 2, 20251 year ago

Featured this weekWriting

Make MinIO Access Key

Today in my homelab I wanted to setup a new service that needed a MinIO access key. So I created a new user and a new access key with the MinIO CLI rather than poking through the ui like I have before. Global Level vs User Level The MinIO CLI has two levels of access, global and user level. Most of the commands in this…

Writing

I’ve been back to putting some images on my blog lately and thinking about making them a bit thinner through the use of aspect ratio for simplicity. I’m leaning pretty heavy on tailwindcss these days due to some weird quirks of markdown-it-attrs I cannot have slashes in classes from markdown so I made a .cinematic class to achieve this.

.cinematic {
  @apply aspect-[2.39/1];
}

Example

a stable diffusion generated image of an astronaut working in a neon pink lab with beakers and papers all over, he is reading through pages.

Writing

Attrs does not like ‘/’ characters in its classes, so to use some tailwind classes with custom values we must make new classes in our tailwind input css.

.cinematic {
  @apply aspect-[2.39/1];
}

Given the following markdown with attrs added to the image and to the paragraph block.

![a stable diffusion generated image of an astronaut working in a neon pink lab with beakers and papers all over, he is reading through pages.](https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png){.aspect-[2.39/1]}

![screenshot-2025-01-31T14-50-00-094Z.png](https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png){.cinematic}

{.cinematic}
![screenshot-2025-01-31T14-50-00-094Z.png](https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png)

We get the following output with only the middle one working correctly.

screenshot-2025-01-31T14-50-00-094Z.png{.aspect-[2.39/1]}

screenshot-2025-01-31T14-50-00-094Z.png

screenshot-2025-01-31T14-50-00-094Z.png

Note

The inline version of .cinematic works, but .aspect-[2.39/1] does not, it turns into text after the image. The block version with the class before the image applies to the paragraph, not the image.

Writing

markata 0.8.0

I realize that I never did a post on markata 0.8.0, so here it is. 0.8.0 was released on Jan 2, 2024, just over a year ago at this point. This was the release that we got pydantic support, and multi feeds. Pydantic Support Was kinda big Markata is leaning on pydanttic for configuration and Post models. These models are…
2 min read

Writing

markata 0.8.0

I realize that I never did a post on markata 0.8.0, so here it is. 0.8.0 was released on Jan 2, 2024, just over a year ago at this point. This was the release that we got pydantic support, and multi feeds. Pydantic Support Was kinda big Markata is leaning on pydantic for configuration and Post models. These models are…

Writing

markata search

A side effect of Markata DidYouMean is that we are able to implement some rudimentary search based on slug, title, tags, and description. I made a video of the early work on using this side effect to search for content on markata.dev. This was first implemented to solve 404 pages giving users a way to try to find the p…

Writing

Markata DidYouMean

Coming in Markata 0.9.1 is far better documentation. i.e. Documentation that actually exists for everything. As part of poking around I realized that I often go to look up the docs for a plugin and forget that the path is, sometimes I might try or or or I might even forget the plugin name exactly and try something like…
2 min read

Writing

cold builds

Here are a list of some cold builds from my site. I’ve ran this site for a long time and would like to have some references to go back to, and wish I had kept a few profiles of cold builds laying around to compare with. The time is now lets keep some cold build links around for reference. 01/27/2025 https://ec314b08.wa…
1 min read

Link

Check out cloudnative-pg and their project cloudnative-pg. CloudNativePG is a comprehensive platform designed to seamlessly manage PostgreSQL databases within Kubernetes environments, covering the entire operational lifecycle from initial deployment to ongoing maintenance

Link

Just starred open-webui by open-webui. It’s an exciting project with a lot to offer. User-friendly AI Interface (Supports Ollama, OpenAI API, …)

Link

I like fcsonline’s project tmux-thumbs. A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator

Link

asottile has done a fantastic job with all-repos. Highly recommend taking a look. Clone all your repositories and apply sweeping changes.

Link

If you’re into interesting projects, don’t miss out on tailpipe, created by turbot. select * from logs; Tailpipe is an open source SIEM for instant log insights, powered by DuckDB. Analyze millions of events in seconds, right from your terminal.

Link

Note

Note

There is a glimmer of hope out there that normal people can scrap together enough gpu to really run the latest models themselves. The ui really appears to be having huge leaps forward such that doing things like rag is no longer such a research project that it was just a few years ago. So excited to see Prime go throug…

Note

Oh, this kills me to hear it. RSS is the OG way to subscribe and share content out to others. It gives you control of what you subscribe to and reminds you when new content lands on your favorite sites. It is a huge component of web 1.0 and I feel is the most decentralized social media can ever hope to be.

Note

Note

Damn these deepseek memes go hard. Wild to see openai get played by their own game. It’s crazy that the normie news that I have seen on deepseek shows that the Chinese made what the Americans did at a fraction of the price, without taking notice that they are building on the shoulders of openai.

Note

👏👏👏 This one is really good. I’m right there with him on most of this. I am very hesitant on subscription models, and all the ai tools feel like they are getting ready to be the next round of death by a thousand cuts, this time with pretty limited free tier and relatively high prices to run. I’m sure we will see compan…

Note

Note

Models Pydantic Docs · docs.pydantic.dev I came accross from_attributes today it allows creation of pydantic models from objects such as a sqlalchemy Model or while nesting pydantic models. I believe in the past I have ran into some inconsistencies with nesting pydantic models and I’ll bet one had from_attributes set a…

Note