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
GitHub Stars
GitHub stars posts
1859 posts
latest post 2026-05-24
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
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...
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/
-
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/