Just starred xan [1] by medialab [2]. It’s an exciting project with a lot to offer.
The CSV magician
References:
[1]: https://github.com/medialab/xan
[2]: https://github.com/medialab
Archive
All published posts
2469 posts
latest post 2026-05-08
Publishing rhythm
I’m impressed by upvote-rss [1] from johnwarne [2].
Generate rich RSS feeds from Reddit, Hacker News, and Lemmy
References:
[1]: https://github.com/johnwarne/upvote-rss
[2]: https://github.com/johnwarne
Looking for inspiration? rugpulls.dev [1] by caniszczyk [2].
No description available.
References:
[1]: https://github.com/caniszczyk/rugpulls.dev
[2]: https://github.com/caniszczyk
I’m really excited about pangolin [1], an amazing project by fosrl [2]. It’s worth exploring!
Tunneled Mesh Reverse Proxy Server with Identity and Access Control and Dashboard UI
References:
[1]: https://github.com/fosrl/pangolin
[2]: https://github.com/fosrl
Looking for inspiration? Flexbox-Labs [1] by prazzon [2].
A web app for creating flexible layouts with the power of CSS Flexbox.
References:
[1]: https://github.com/prazzon/Flexbox-Labs
[2]: https://github.com/prazzon
Check out llm-sort [1] by vagos [2]. It’s a well-crafted project with great potential.
Sort input lines semantically with llm
References:
[1]: https://github.com/vagos/llm-sort
[2]: https://github.com/vagos
fixed long standing nvim startup error
Here’s the diff, this is it.
local M = {}
M.setup = require("waylonwalker.setup")
M.settings = require("waylonwalker.settings")
+ M.lazy = require("waylonwalker.lazy")
M.options = require("waylonwalker.options")
M.globals = require("waylonwalker.globals")
M.keymap = require("waylonwalker.keymap")
- M.lazy = require("waylonwalker.lazy")
M.autocmds = require("waylonwalker.autocmds")
M.util = require("waylonwalker.util")
M.plugins = require("waylonwalker.plugins")
M.snippets = require("waylonwalker.snippets")
return M
The error # [1]
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 before I know what it is or how
it got there.
[2]
For the longest time it just felt like it randomly showed up without much warning.
I sent ai at the issue # [3]
I...
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...
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 careful of how much you let go through the sim.
I’ve owned this for a few years now, but it’s been disconnected for a good six
months or so. I’m not s[e what happened, but it stopped recognizing the old
sim card. no need to point out the coffee stains at the end, its
definitely not related
Follow the provided instuctions # [1]
Activating the sim asked for a confirmation code shipped with the sim card,
then brought me to this page.
[2]
Clicking Have a Different Device? brought up instructions to set up the APN in the LM1200.
[3]
Restart # [4]
First thing for me was that the sim was not recognized, restarting the LM1200
did the trick to recognize it as a Google F...
ahrefs-cleanup-2024
This post is a big work in progress, expect it to keep getting better.
Initial Score # [1]
[2]
404 Not Found, generate a page for each tag # [3]
[4]
Title too long # [5]
[6]
404 Not Found, comma separated tags # [7]
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 rather than one per
tag.
[8]
You can see on the website the whole dang set of tags was being treated as a single tag.
[9]
Broken images # [10]
I’m not fully sure what happened to all of these gifs in my old host and why
they didn’t show up, but I moved them all and they are solid now.
[11]
I burned all of my January Credits # [12]
So I had an issue with my self hosted [13] shots not making them fast enough for
ahrefs, and essentially ddosing myself on one of their runs. The long wait
times for images burnt all of my credits.
Here was the next successful run with a HUGE improvement in overall score.
[14]
The tre...
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 # [1]
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-...
I like DigitalHarbor7’s [1] project engineering-status-pages [2].
Static sites for engineering project status updates
References:
[1]: https://github.com/DigitalHarbor7
[2]: https://github.com/DigitalHarbor7/engineering-status-pages
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 # [1]
apt install aptitude
Why tzdata # [2]
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
References:
[1]: #install-aptitude
[2]: #why-tzdata
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 # [1]
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 # [2]
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
D...
Colors - Core concepts
Using and customizing the color palette in Tailwind CSS projects.
tailwindcss.com [1]
Tailwind has the best color system, very well done. Even if you don’t use it, it serves as a great color picker.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://tailwindcss.com/docs/colors
[2]: /thoughts/
External Link
wyattbubbylee.com [1]
So proud of Wyatt for writing in his own blog!
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://wyattbubbylee.com/dst-forever-world/
[2]: /thoughts/
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 # [1]
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 out
so you always have a weapon and way to chop wood with you.
dst-1-1.mp4 [2]
First encounter with a Tall Bird # [3]
On the first day I made a look around my home biome, and ran into a Tall Bird
dst-1-2.mp4 [4]
Tall Bird Stats # [5]
[6]
Here are the tall bird stats from the wiki [7]
Setting up base # [8]
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.
dst-1-3.mp4 [9]
Opening up the garden # [10]
On day two I had enough ma...
-
Big fan of Primes setup. I was not far off of his setup before he really came on the scene, but I’ve picked up a ton of nuggets from him and how he operates. I took his first developer productivity course on Front End Masters as it came out.
It is interesting to see him roll back his ansible scripts for bash scripts here. I converted my setup to ansible after watching his first, but have also since rolled back to bash scripts for quite similar reasons. Ansible is great for remote tasks that need to be done on a fleet of machines, but like he says here overkill for this purpose and ends up something that you need to read the docs for every change to your dotfiles.
Unlike prime I’ve really leaned harder on installing everything in a docker image and developing out of a docker image. I’ve long built docker images of my dotfiles with the idea that its nice to be able to just use them on other machines, but it rarely happened.
In the past year I’ve moved bazzite, an immutable distro. It comes with podman and distrobox, so I install very little on it, a few flatpaks from the store for brave and signal, but most of what I really use day to day comes from my devtainer. It’s nice t...
https://www.youtube.com/watch?v=03KsS09YS4E&t=610s [1]
Today I learned about the basic calculator, bc. At the very end of this video
prime uses it to add numbers in vim.
REPL # [2]
You can start a calculator repl at the command line, by running bc.
Vim # [3]
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
References:
[1]: https://www.youtube.com/watch?v=03KsS09YS4E&t=610s
[2]: #repl
[3]: #vim
emoji [1] by carpedm20 [2] is a game-changer in its space. Excited to see how it evolves.
emoji terminal output for Python
References:
[1]: https://github.com/carpedm20/emoji
[2]: https://github.com/carpedm20
The work on sqlite-s3vfs [1] by uktrade [2].
Python writable virtual filesystem for SQLite on S3
References:
[1]: https://github.com/uktrade/sqlite-s3vfs
[2]: https://github.com/uktrade
Jhey ʕ·ᴥ· ʔ (@jhey.dev)
breakin' down classics
CSS background-image + background-blend-mode + custom properties = holo-like effects with parallax ✨
Bluesky Social · bsky.app [1]
Jhey has the coolest webdev demos!
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://bsky.app/profile/jhey.dev/post/3lgoev36hps2h
[2]: /thoughts/
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Learn how to troubleshoot ERR_SSL_VERSION_OR_CIPHER_MISMATCH when using Cloudflare SSL/TLS.
Cloudflare Docs · developers.cloudflare.com [1]
Today I learned that cloudflare free tier universal certs do not support multilevel subdomains.
By default, Cloudflare Universal SSL certificates only cover your apex domain and one level of subdomain.
[2]
Note
This post is a thought [3]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://developers.cloudflare.com/ssl/troubleshooting/version-cipher-mismatch/
[2]: https://dropper.waylonwalker.com/api/file/7d1fe806-a3d0-47e3-8eb1-08c1a0965728.webp
[3]: /thoughts/
[1]
Migrating from kedro 0.18.4 to the latest version involves handling the deprecated OmegaConf loader. Switching over does not look as bad as I originally thought.
- installing kedro 0.18.5+
- set the CONFIG_LOADER_CLASS in settings.py
- swap out import statements
- config must be yaml or json
- getting values from config must be done with bracket __getattr__ style not with .get
- any Exceptions caught from Templated config loader will need to be swapped to OmegaConfig exceptions, similar to #3
- templated values must lead with an _
- Globals are handled different
- OmegaConfig does not support jinja2 sytax, but rather a ${variable} syntax
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /static/https://docs.kedro.org/en/stable/configuration/config_loader_migration.html
[2]: /thoughts/
[1]
Prime mentioned on stream that Whites were his favorite switch. I tend to like lighter switches and want to give it a try. I really like my Durock lupine’s at 55g, the box whites are 45g, that feels like it would take quite a bit more control, floating over the keys.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /static/https://www.kailh.net/search?q=box+white&_pos=2&_psq=white&_ss=e&_v=1.0
[2]: /thoughts/
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.
[1]
Mobile Users 🔄
You will need to rotate your device to see the side by side feature.
The Markdown # [2]
This is what I am going for, one admonition that is easy to remember, that
nests inside of itself , and I can put as much markdown on the inside that I
want.
!!! vsplit I Have two opinions
!!! vsplit Left Opinion
supporting arguments
* lorem ipsum
* ipsum dolor
- [x] lorem ipsum
- [ ] ipsum dolor
!!! vsplit Right Opinion
supporting arguments
* lorem ipsum
* ipsum dolor
- [ ] lorem ipsum
- [x] ipsum dolor
Here is the result of that markdown.
I Have two opinions
Left Opinion
supporting arguments
- lorem ipsum
- ipsum dolor
- lorem ipsum
- ipsum dolor
Right Opinion
supporting arguments
- lorem ipsum
- ipsum dolor
- lorem ipsum
- ipsum dolor
Vsplit
Hello World
Here is a hello worl...
Make MinIO Access Key
Today in my homelab [1] 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.
[2]
Global Level vs User Level # [3]
The MinIO CLI has two levels of access, global and user level. Most of the
commands in this post will have several ways to do similar tasks that would
potentially work. We are going to prefer to use the user level commands for
more control. For some commands such as listing Keys it is handy to use the
global level.
The Policy # [4]
First we are going to make a new policy file named mypages_rw_policy.json.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::mybucket"
]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Effect": "Allow",
"Resource": [...
Check out cloudnative-pg [1] and their project cloudnative-pg [2].
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
References:
[1]: https://github.com/cloudnative-pg
[2]: https://github.com/cloudnative-pg/cloudnative-pg
Just starred open-webui [1] by open-webui [2]. It’s an exciting project with a lot to offer.
User-friendly AI Interface (Supports Ollama, OpenAI API, …)
References:
[1]: https://github.com/open-webui/open-webui
[2]: https://github.com/open-webui
I like fcsonline’s [1] project tmux-thumbs [2].
A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator
References:
[1]: https://github.com/fcsonline
[2]: https://github.com/fcsonline/tmux-thumbs
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
[1]
References:
[1]: https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png
An Aspect Ratio Guide for Every Filmmaker
How can the aspect ratio of your film or TV show contribute to your story?
No Film School · nofilmschool.com [1]
A good reference of common screen ratios. I just realized that 16:9 is also 1.78:1. I’ve been putting some images on my blog again, and thinking about using some 2.39:1 ratio on them.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://nofilmschool.com/cinematic-aspect-ratio
[2]: /thoughts/
-
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 through this homelab [1] exercise.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /homelab/
[2]: /thoughts/
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.
{.aspect-[2.39/1]}
{.cinematic}
{.cinematic}

We get the following output with only the middle one working correctly.
[1]{.aspect-[2.39/1]}
[1]
[1]
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.
References:
[1]: https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png
-
Oh, this kills me to hear it. RSS is the OG [1] 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
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /og/
[2]: /thoughts/
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.
[1]
Pydantic Support Was kinda big # [2]
Markata is leaning on pydanttic for configuration and Post models. These
models are filled with validators such that you can give it an empty markdown
post and it will figure out some pretty sane default values for the
frontmatter. From there you can progressivly enhance your post with more
information like title, date, tags, slug, description.
validators are awesome!! for instance I don’t set the description on many
of my posts by hand, I let the auto_description grab the first bit of text
from the post most of the time.
Multi Feeds # [3]
Markata==0.8.1 brought multiple feeds into the mix, and started to take place
of rss and sitemap. Feeds are a list of posts that are configured with a slug,
filter, sort, reverse, description, and ...
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.
[1]
Pydantic Support Was kinda big # [2]
Markata is leaning on pydantic for configuration and Post models. These
models are filled with validators such that you can give it an empty markdown
post and it will figure out some pretty sane default values for the
frontmatter. From there you can progressively enhance your post with more
information like title, date, tags, slug, description.
validators are awesome!! for instance I don’t set the description on many
of my posts by hand, I let the auto_description grab the first bit of text
from the post most of the time.
Multi Feeds # [3]
Markata==0.8.1 brought multiple feeds into the mix, and started to take place
of RSS and sitemap. Feeds are a list of posts that are configured with a slug,
filter, sort, reverse, description, and ...
asottile [1] has done a fantastic job with all-repos [2]. Highly recommend taking a look.
Clone all your repositories and apply sweeping changes.
References:
[1]: https://github.com/asottile
[2]: https://github.com/asottile/all-repos
If you’re into interesting projects, don’t miss out on tailpipe [1], created by turbot [2].
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.
References:
[1]: https://github.com/turbot/tailpipe
[2]: https://github.com/turbot
I recently discovered roomy [1] by muni-town [2], and it’s truly impressive.
ATproto-connected p2p group comms
References:
[1]: https://github.com/muni-town/roomy
[2]: https://github.com/muni-town
Behold, the Steam Brick
A modder has transformed the Steam Deck in a screen-less, controller-less Steam Brick.
Rock Paper Shotgun · rockpapershotgun.com [1]
I fully believe in our right to repair, ewaste reduction, and bringing a second life to still good hardware that is not up for it’s originally intended purpose. This is a sick console like experience you can strap to the back of a tv, throw in your back to take on a trip, or leave stuffed in your vehicle to game in the backseat. Sucks that it cant do 4k, but I’ve used mine on large screens, and it does quite well for a lot of games, maybe not AAA, but the cartoony multplayer games I play with my kids do quite well.
[2]
Note
This post is a thought [3]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://www.rockpapershotgun.com/behold-the-steam-brick
[2]: https://dropper.waylonwalker.com/api/file/f3114f19-21cd-4ee6-84a8-06b83346d052.webp
[3]: /thoughts/
-
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 post is a thought [1]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /thoughts/
markata search
A side effect of Markata DidYouMean [1] is that we are able to implement some
rudimentary search based on slug, title, tags, and description.
[2]
I made a video of the early work on using this side effect to search for content on markata.dev.
Replay markata-search-1.mp4 [3]
This was first implemented to solve 404 pages giving users a way to try to find
the page that they tried to access. But it turned out to be a decent way to
search through the docs.
References:
[1]: /markata-didyoumean/
[2]: https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png
[3]: https://dropper.waylonwalker.com/api/file/fd677374-5ef1-41c7-8845-6de0e10f224b.mp4
-
👏👏👏 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 companies get taken by huge bills soon by building off of someone else’s service.
On the flip side I’m definitely the guy that gets in a rut of just copy paste to the ai, wait for codeium to to inject. I feel like I have issues of momentum more than anything. When I’m on one side or the other I tend to stick it out for too long, but less so on going without because that llm drug is calling you when you hit a hard problem.
I’m excited to see him build out a homelab [1] for llm stuff that he mentioned at the top. I’m interested, but probably not building one out for myself until we start to see some cheaper maybe used hardware to do it.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /homelab/
[2]: /thoughts/
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
/markta/plugins/feeds, sometimes I might try /markata/feeds or
/plugins/feeds.py or /feeds or I might even forget the plugin name exactly
and try something like feed and get a 404. So I added a didyoumean plugin
to markata that takes care of this.
[1]
I made a quick recording of this early feature, pay close attention to the url
as it automatically updates to the correct page.
markata-didyoumean.mp4 [2]
Happy Path # [3]
direct forward
If you have one post called /markata/plugins/feeds, and it is the only post
called feeds, any combination of /markata/feeds or /plugins/feeds or
/feeds will all automatically redirect with an html [4] page (not a server 3xx)
to the /markata/plugins/feeds post.
Here is the snippet that does the redirect.
<div class="container ...