Archive

All published posts

2501 posts latest post 2026-06-21 simple view
Publishing rhythm
May 2026 | 56 posts

I’m giving obsidian a go as an editor for my blog and one of the main things I want to fix in my workflow is the ability to quickly drop in images. on first look through the community plugins I found Image Converter. I set it up to convert to webp and drop them in a git submodule. I may make it something other than a git repo in the future, but I’ve learned that adding images to my blog repo quickly makes it heavy and hard to clone on other machines.

obsidian-image-converter-20240731211310793.webp

Once the images are there they are pushed and deployed as their own site to cloudflare pages. I made a quick edit to my sick wikilink hover plugin for my blog. if it sees a wikilink ending in webp, convert the domain over to obsidian-assets.waylonwalker.com, and clean up the remaining "! " that the python md-it library leaves behind.

Note

after first try I needed to increase the width from 600 to 1400, the image in this post was unreadable.

This is part of me getting set up and Trying Obsidian

- Docker no Docker, what!!! So fly.io uses Dockerfiles to deploy your app, but no docker. They use containerd to download your docker images into firecracker microvms to run your app. Firecracker is the same tech that runs aws lambda functions. Fascinating short post on the beans under the hood at fly.io and how they scale your app globally.
Reddit - Please wait for verification reddit.com [1] This is a pretty sick design, touch screen macropad, trackball, ring, and knobs for days. I just want to play with it and see what I can make it do. As I’m typing I think I just realized that its modular, each rectangle is it’s own section! References: [1]: https://www.reddit.com/r/MechanicalKeyboards/comments/1dyf0d8/ultimate_modular_macro_keyboard_kibly/
- Damn Johnny is always such a positive vibe, just getting steamrolled by this braille shit. WTF are these brand sleeping on. Happy to hear that Andy and Brian are supporting him well. Also kinds shows what shoes are good when he goes to buy shoes cause no one will send him any and he goes with Etnies. Johnny keep it going!
- Niklas Luhmann created the Zettelkasten method of notetaking, He was the Da Vinci of writing, holding a high standard that we can take inspiration from even today in this digital era. As many times as I have seem the Zettelkasten covered, I never knew that it roughly translated to little cards in a box. Four Principles # [1] Mischa lays out four principles of Zettelkasten. - Atomic - each card conains one idea - Link - cards are linked together - Structure - comes from the links - Own Words - You write the note in your own words My blog, tils, and thoughts make up my own zettelkasten. I am not going to say that mine is a perfect representation of his method, but the components are here. rather than building books, my thoughts and tils build up to blog posts. The rate of blog posts I write definitely changes with the seasons of life, as seasons change it becomes a bigger or smaller part of the season. I really like Mischa’s most important note to Write in your own words, this is what really promotes learning, and proves to yourself that you can form a thought around the topic. Up until recently I’ve wrote everything, but lately I’ve taken to copy pasting some quotes i...
add quick-tap-ms and require-prior-idle-ms · WaylonWalker/zmk-config-42block@cb2cda4 Contribute to WaylonWalker/zmk-config-42block development by creating an account on GitHub. GitHub · github.com [1] Even after switching to my hm and ht behaviors I am running into some issues where sometimes I am still accidentally hitting mods(&hm) and layers(&ht) while typing and it’s been getting frustrating. My main issue has been on &ht, they are configured the same so I suspect that my pinkies just move a bit slower over the keys than my pointer/middle finger. I just added quick-tap-ms and require-prior-idle-ms to my &hm and &ht behaviors, and a few intentionally sloppy passes through monkeytype seem to show that its working well. A few days of trying this will tell whether it was a good fix or if I have maybe gone too far the other way. The end goal here is to be able to roll over keys faster without worrying about hitting other layers or mods. References: [1]: https://github.com/WaylonWalker/zmk-config-42block/commit/cb2cda4cf7b3776995dbc2e8608b60670a2cf8b2

I’ve had a couple of uploads to twitter fail recently and has been a pain. I tried some online converters for convenience, but none of them worked. I reached out to chatgpt and found succeess with this ffmpeg command.

ffmpeg -i input.mp4 \
  -vf "scale=trunc(oh*a/2)*2:min(720\,trunc(ih*a/2)*2)" \
  -c:v libx264 -profile:v high -level:v 4.1 \
  -b:v 3500k -maxrate 3500k -bufsize 7000k \
  -pix_fmt yuv420p \
  -c:a aac -b:a 128k -ar 44100 \
  -movflags +faststart \
  output.mp4
Tickle My Keys Keyboards so good your fingers will be begging to tickle these keys. ticklemykeys.com [1] I’ve been working on something, I’m gong to combine my mechanical engineering skills with my love of great keyboards and start a custom keyboard shop for building custom keyboards for exactly what people need with an emphasis on portability. References: [1]: https://ticklemykeys.com/
- Damn Prime covers this so well from all angles. Can’t overstate the importance of that last step. Look at the issues, and raise an issue if there is not one before putting in a bunch of hard work. Make sure that the maintainers are open for your changes and no one else is already working on it. References: [1]: /glossary/git/
Looking for inspiration? jiff [1] by BurntSushi [2]. A datetime library for Rust that encourages you to jump into the pit of success. References: [1]: https://github.com/BurntSushi/jiff [2]: https://github.com/BurntSushi
I’m really excited about sqlite-jiff [1], an amazing project by asg017 [2]. It’s worth exploring! No description available. References: [1]: https://github.com/asg017/sqlite-jiff [2]: https://github.com/asg017
sqlite-jiff I linked to the brand new Jiff datetime library yesterday. Alex Garcia has already used it for an experimental SQLite extension providing a timezone-aware jiff_duration() function - a useful new … Simon Willison’s Weblog · simonwillison.net [1] Sqlite is getting rust extensions now, and datetimes make it totally worth if if they work well and and fast, two things that don’t always go together in datetime libraries References: [1]: https://simonwillison.net/2024/Jul/23/sqlite-jiff/
There’s a TUI for that with Nick Janetakis (Changelog & Friends #53) Nick Janetakis is back and this time we're talking about TUIs (text-based user interfaces) — some we've tried and some we plan to try. All are collected from Justin Garrison's Awesome TUIs repo o... Changelog · changelog.com [1] 50 minutes into this episode they start a discussion on seo, and naming posts. They give Jerod the task of googling for tmux and see how high up the ranking they find Nick, expecting a number one post, and he cant even get to Nick. The problem? Jerod is such a beginner he doesn’t even know what to search, he starts with a long query about getting started with tmux, but all of Nick’s videos are why you should use advanced features of tmux, but Jerod has yet to discover that these exist. As experts we often come up wtih a post title for the exact thing that we are trying to teach someone how to do, but yet, they haven’t discussed that they need that feature yet, they just want the getting started guide, or tell me why I should start using tmux. Not why sessions are better than windows, and tabs suck all together. Definitely an eye opening conversation listening to two experts sit in...
The Verge (@verge) on X Stress testing a snack-proof keyboard https://t.co/AsRdv6O0e8 X (formerly Twitter) · x.com [1] This is a wild keyboard test. This is exactly what I want to see from ticklemykeys.com. I want to make ergomechanical boards that you can use and abuse. I want you to not be afraid to take them with you or to eat a nutrigrain bar in the same room (cough 2015 mac). And If something does go out, I want users to be able to repair it themsleves, key caps, switches, batteries, and microcontrollers should be replacible parts they can get at a good cost from the shop if they have paid for a board. References: [1]: https://x.com/verge/status/984764889754456065
all lt keys to hl · WaylonWalker/zmk-config-42block@ce25356 Contribute to WaylonWalker/zmk-config-42block development by creating an account on GitHub. GitHub · github.com [1] Today I swapped out all of my keys that are used dual purpose for letters and layers to homerow layers. This prevents goofy things happening when rolling, and prefers-tap makes it so that keys that are rolled over get hit as letters instead of as layers. This was one of my biggest hurdles jumping into zmk, lt as a homerow key just does not behave the same as the ht/hm behaviors with tap-preferred set. Seealso See previous commit where I added the hl https://github.com/WaylonWalker/zmk-config-42block/commit/9522c859cdf024a2c2b73931c130ddc907c09ffc hl: homerow_layer { compatible = "zmk,behavior-hold-tap"; label = "HOMEROW_LAYER"; bindings = <&mo>, <&kp>; #binding-cells = <2>; tapping-term-ms = <150>; flavor = "tap-preferred"; }; References: [1]: https://github.com/WaylonWalker/zmk-config-42block/commit/ce25356e88eb2439182201700314133de719457e
I like Infisical’s [1] project infisical [2]. ♾ Infisical is the open-source secret management platform: Sync secrets across your team/infrastructure, prevent secret leaks, and manage internal PKI References: [1]: https://github.com/Infisical [2]: https://github.com/Infisical/infisical
Tips for Being Happier, Healthier, More Productive by The GaryVee Audio Experience Today's podcast episode is an interview I did on the Happier with Gretchen Rubin Podcast with Gretchen Rubin and Elizabeth Craft. We discuss balancing ambition, tenacity, humility, and patience. I … Spotify for Creators · podcasters.spotify.com [1] Deep breath, the deepest you can take in Smile, a real fukin smile not some pansy bullshit Say I’m not going to give a shit about this when I’m 90 References: [1]: https://podcasters.spotify.com/pod/show/garyvee/episodes/Tips-for-Being-Happier--Healthier--More-Productive-e2m4184
I came across zmk-config [1] from evantravers [2], and it’s packed with great features and ideas. No description available. References: [1]: https://github.com/evantravers/zmk-config [2]: https://github.com/evantravers
Can't use System update - invalid signature when validating ASN.1 encoded signature · Issue #1316 · ublue-os/bazzite Describe the bug Hello, I installed the nvidia KDE version of bazzite just 2 days ago. Today I wanted to update to the most recent release, but unfortunately, I keep getting the following error: Pu... GitHub · github.com [1] This fixed my bazzite update issues after the signing key was rotated recently. This team is killing it with such a great user experience. curl -sL https://fix.universal-blue.org/ | sudo bash References: [1]: https://github.com/ublue-os/bazzite/issues/1316
I like Textualize’s [1] project transcendent-textual [2]. Textual apps and libraries References: [1]: https://github.com/Textualize [2]: https://github.com/Textualize/transcendent-textual
Update Kconfig.shield rec by bravekarma · WaylonWalker/zmk-config-ninepad@8b76b76 zmk configuration for ninpad keyboard. Contribute to WaylonWalker/zmk-config-ninepad development by creating an account on GitHub. GitHub · github.com [1] This one space killed my whole config and held me back from learning zmk. References: [1]: https://github.com/WaylonWalker/zmk-config-ninepad/commit/8b76b76e2f094453aaf7ffe51bb405ce3a25a611
[1] The trackball spinner looks sick here. I can imagine using that spinner like a scroll wheel. References: [1]: /static/https://kbd.news/DragonFruit-2178.html
[1] They had split ergo boards back in 1983??? WTF who the heck keeps these row stagger boards going. This board looks like endgame material, If this thing was more normal, it’d kill a whole section of the ergo mechanical keyboard industry for good reason. References: [1]: /static/https://kbd.news/NEC-M-System-1729.html
Laying some wire in PortaJohn 1
Close-up view of a barebones custom mechanical keyboard plate and PCB.
Laying down the first test print of a portajohn on a laptop
A setup featuring an open laptop running Ubuntu next to a detached, custom mechanical keyboard.

animal well codes

fish room # [1] fish bubbles ul d dl l dl ur ul jellyfish d l d l d l u r egg room # [2] bar dir given bar codes top r mid dr bot dl calculated bar codes num dir 1 r 2 dr 3 d 4 dl 5 l 6 ul 7 u 8 ur bar code direction num bar 1 top 2 mid 3 top mid 4 bot 5 top bot 6 mid bot 7 top mid bot 8 empty egg room decode 6 3 3 6 3 1 3 4 2 4 3 2 8 3 5 8 _ 3 5 7 5_ __ 5 2 5 6 3 1 3 3 1 3 6 4 4 6 4 2 4 6 8 6 4 8 7 3 7 6 5 7 6 __ egg room decode dir ul dd __ dd ul dd rr dd __ dl dr dl dd __ dr ur__ dd ll ur __ dd ll uu ll __ ____ ll dr ll ul dd rr dd __ dd rr dd ul dl __ dl ul dl dr dl ul ur ul dl ur uu __ dd uu ul __ ll uu ul ____ References: [1]: #fish-room [2]: #egg-room
Command Line Interface Guidelines An open-source guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day. clig.dev [1] This is a pretty sick set of guidelines to help you write better cli programs, I’m definitely coming back to reading this one more in depth later. References: [1]: https://clig.dev/
External Link fullystacked.net [1] You can explicitly make a script render blocking, nothing will be rendered until this js is ready. <script blocking="render" src="important.js" defer></script> References: [1]: https://fullystacked.net/render-blocking-on-purpose/
Remove Background Web - a Hugging Face Space by Xenova In-browser background removal huggingface.co [1] I’ve long been a user of remove.bg, and I just discovered that you can run this transformer right within your browser with no api limits. References: [1]: https://huggingface.co/spaces/Xenova/remove-background-web
Check out volfpeter [1] and their project fasthx [2]. FastAPI [3] server-side rendering with built-in HTMX [4] support. References: [1]: https://github.com/volfpeter [2]: https://github.com/volfpeter/fasthx [3]: /fastapi/ [4]: /htmx/
FastHX - FastHX volfpeter.github.io [1] Very interesting approach to htmx [2] and fast api. It uses separate decorators for returning template partials and json that can be stacked to include both options on a single route. The templates are explicitly set in the decorator. Separate decorators are used for full page and partial pages. I don’t see an example of full and partial pages being combined. I think the demo app must be behaving in a spa like fashion where it does not get all of the data when it calls index and index will ask for user-list. Definitely going to keep my eye on this project and ponder on it. from fastapi import FastAPI from fastapi.templating import Jinja2Templates from fasthx import Jinja from pydantic import BaseModel # Pydantic model of the data the example API is using. class User(BaseModel): first_name: str last_name: str # Create the app. app = FastAPI() # Create a FastAPI Jinja2Templates instance and use it to create a # FastHX Jinja instance that will serve as your decorator. jinja = Jinja(Jinja2Templates("templates")) @app.get("/") @jinja.page("index.html") def index() -> None: ... @app.get("/user-list") @jinja.hx("user-list.html") async...
FastHX - FastHX volfpeter.github.io [1] Very interesting approach to htmx [2] and fast api. It uses separate decorators for returning template partials and json that can be stacked to include both options on a single route. The templates are explicitly set in the decorator. Separate decorators are used for full page and partial pages. I don’t see an example of full and partial pages being combined. I think the demo app must be behaving in a spa like fashion where it does not get all of the data when it calls index and index will ask for user-list. Definitely going to keep my eye on this project and ponder on it. from fastapi import FastAPI from fastapi.templating import Jinja2Templates from fasthx import Jinja from pydantic import BaseModel # Pydantic model of the data the example API is using. class User(BaseModel): first_name: str last_name: str # Create the app. app = FastAPI() # Create a FastAPI Jinja2Templates instance and use it to create a # FastHX Jinja instance that will serve as your decorator. jinja = Jinja(Jinja2Templates("templates")) @app.get("/") @jinja.page("index.html") def index() -> None: ... @app.get("/user-list") @jinja.hx("user-list.html") async...
Pinout and Schematic - nice!nano Pinout and schematic for the nice!nano nicekeyboards.com [1] Pinout for nice!nano boards. Note that P0.15 means gpio port 0 pin 15, they can be referenced in zmk when setting column and row pins. #include <dt-bindings/zmk/matrix_transform.h> / { chosen { zmk,kscan = &default_kscan; zmk,matrix_transform = &default_transform; /delete-property/ zephyr,console; /delete-property/ zephyr,shell-uart; }; default_kscan: kscan { compatible = "zmk,kscan-gpio-matrix"; label = "default_kscan"; diode-direction = "col2row"; col-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH> , <&gpio0 29 GPIO_ACTIVE_HIGH> , <&gpio0 2 GPIO_ACTIVE_HIGH> ; row-gpios = <&gpio1 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&gpio1 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&gpio1 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> ; }; default_transform: matrix_transform { compatible = "zmk,matrix-transform"; columns = <3>; rows = <3>; map = < RC(0,0) RC(0,1) RC(0,2) RC(1,0) RC(1,1) RC(1,2) RC(2,0) RC(2,1) RC(2,2) >; }; }; References: [1]: https://nicekeyboards.com/docs/nice-nano/pinout-schematic/
I’m impressed by shmux [1] from typecraft-dev [2]. the shell-script tmux management you didn’t know you needed. baby References: [1]: https://github.com/typecraft-dev/shmux [2]: https://github.com/typecraft-dev
I like iximiuz’s [1] project awesome-container-tinkering [2]. List of awesome tools to tinker with containers. References: [1]: https://github.com/iximiuz [2]: https://github.com/iximiuz/awesome-container-tinkering
GitHub - svenstaro/miniserve: 🌟 For when you really just want to serve some files over HTTP right now! 🌟 For when you really just want to serve some files over HTTP right now! - svenstaro/miniserve GitHub · github.com [1] miniserve is a sweet http server, replacement for python -m http.server. It’s fast, runs off a small binary, but why would I want to use it over something that already exists on most machines, because it includes a bunch of features like qr codes, pretty themes, and uploads. I’ve used python -m http.server many times to transfer files from one machine to another in a pinch, like at a family members house. But what if they have an android, windows, or something not easy to get a python repl running on, you can run miniserve and upload from their device rather than hosting from their device. References: [1]: https://github.com/svenstaro/miniserve
Looking for inspiration? miniserve [1] by svenstaro [2]. 🌟 For when you really just want to serve some files over HTTP right now! References: [1]: https://github.com/svenstaro/miniserve [2]: https://github.com/svenstaro
pacman/Tips and tricks - ArchWiki wiki.archlinux.org [1] The arch wiki is always full of good content, and pacman tips and tricks does not disappoint. Today I discovered this command to remove orphaned dependencies on my system. pacman -Qdtq | pacman -Rns - References: [1]: https://wiki.archlinux.org/title/pacman/Tips_and_tricks
Inside 22,734 Steam games About a year ago I blogged about games that use curl. In that post I listed a bunch of well-known titles I knew use curl and there was a list of 136 additional games giving credit to curl. Kind of ... daniel.haxx.se · daniel.haxx.se [1] Interesting to see that curl is used in so many places. I often think of things like games being so windows centric and curl being so linux centric I don’t even think of these things crossing paths as much as they do. References: [1]: https://daniel.haxx.se/blog/2024/06/20/inside-22734-steam-games/
wcurl is here Users tell us that remembering what curl options to use when they just want to download the contents of a URL is hard. This is one often repeated reason why some users reach for wget instead of cur... daniel.haxx.se · daniel.haxx.se [1] interesting, seems like such a simple way to completely remove the need of a whole other cli. No offense to anyone working on wget, but generally I use it out of lazyness or something wierd is happening and I am looking for a second opinion. Cool to know that wcurl exists and will start shipping with curl. References: [1]: https://daniel.haxx.se/blog/2024/07/03/wcurl-is-here/

I’ve started leaning in on kubernetes kustomize to customize my manifests per deployment per environment. Today I learned that it comes with a diff command.

kubectl diff -k k8s/overlays/local

You can enable color diffs by using an external diff provider like colordiff.

export KUBECTL_EXTERNAL_DIFF="colordiff -N -u"

You might need to install colordiff if you don’t already have it.

sudo pacman -S colordiff

sudo apt install colordiff

Now I can try out kustomize changes and see the change with kustomize diff.

kubectl dash k

Kubernetes ships with a feature called kustomize that allows you to customize your manifests in a declarative way. It's a bit like helm, but easier to use. I...

1 min

Animal well does not let you remap keys, and really doesn’t even inform you that it is keyboard compatible. I had to play around and discover the keymap, which can be a bit tricky on a 40% board. This is what I found.

  • wasd - move
  • space - jump / a
  • enter - interact / b
  • x - throw
  • c - inventory
  • 1 - left item / rb
  • 2 - open item menu / triangle
  • 3 - right item / lb
I recently discovered pydantic-sqlite [1] by Phil997 [2], and it’s truly impressive. Simple package for storing pydantic BaseModels in an in-memory SQLite database. References: [1]: https://github.com/Phil997/pydantic-sqlite [2]: https://github.com/Phil997