Today I Learned

Short TIL posts

1864 posts latest post 2026-06-04 simple view
Publishing rhythm
May 2026 | 29 posts
The work on treefmt [1] by numtide [2]. one CLI to format your repo [maintainers=@zimbatm,@brianmcgee] References: [1]: https://github.com/numtide/treefmt [2]: https://github.com/numtide
The rich console is themeable, I’ve been a long time user of rich and had no Idea. You can define your own theme keywords and use them just like you use normal rich keywords in square brackets like'[bold red]'. from rich.console import Console from rich.theme import Theme custom_theme = Theme({ "info": "dim cyan", "warning": "magenta", "danger": "bold red" }) console = Console(theme=custom_theme) console.print("This is information", style="info") console.print("[warning]The pod bay doors are locked[/warning]") console.print("Something terrible happened!", style="danger")
The ethics of README ads I’ve been considering accepting sponsorship again for my projects. Will McGugan · willmcgugan.github.io [1] I’ve long avoided running ads on my blog for the same reason. For a few months I ran an ad above the fold. It was a “Your Ad Here” kind of thing, and in the messaging I was looking for content relevant to my content, not google driven ads. This resulted in nothing, no hits, not a one. I’m kinda with Will on this one beer money is not worth degrading the project for. I seriously thought some of the big projects with a moderate level of success got a good cut for these sponsorships. Some of the companies are big companies, like how do they even go through meetings and decide who gets beer money without spending more than that in decision making resources. Maybe they have a guy with more autonomy than I would expect. 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://willmcgugan.github.io/the-ethics-of-readme-ads/ [2]: /thoughts/
minio/minio - Docker Image hub.docker.com [1] Browsing for the minio tag that I have running right now I discovered that you can do minio --version and you get the same version that matches the docker tag, this is super convenient and helpful. I also notice that they use timestamped version numbers. I kinda dont mind this. It feels easy to understand how far behind it is. I really appreciate that the version in the container matches the version inside the container. It’s not as pretty or flexible as semver, it does not communicate trees of majors and minors, but how often do we continue supporting/patching older majors and minors, in my experience only really big teams or teams with sufficient motivation are doing this. food for thought. 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://hub.docker.com/r/minio/minio/tags?name=RELEASE.2025-04-08 [2]: /thoughts/
You can unset multiple environment variables at once. I did not know this was a thing, its something that ended up happening organically on a call and asking someone to run unset. They had never done it before and did not know how it works, but did exactly as I said instead of what I meant. I like this handy shortcut doing it in one line rather than each one individually, I will be using this in the future. You might need this for something like running aws cli commands with localstack [1]. unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION References: [1]: /running-aws-cli-commands-with-localstack/
- I am going to start trying to employ this rhythm to my writing. I’m not very sure how I feel about it, there is something almost too assertive about it. It’s giving me a (i’m great and you should too) kind of vibe. I want to become more assertive in my writing. I’m giving this a shot and see what I learn, you might notice in my tils. 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/
i3lock is a fantastic lockscreen for tiling window managers. If you are using a tiling window manager within a public space you need to add a lockscreen. I have one machine that I take with me to a public space. Its secure enough that I can leave it, but not secure enough that I want to leave it unlocked. So when I need to leave it behind for the restroom I need to lock it up. arch wiki [1] paru -S i3lock # or apt install i3lock Now that you have i3lock installed lets lock that screen. # lock it with a pure white flashbang i3lock # lock it with a black background i3lock -c 000000 # lock it with a custom color i3lock -c 2e1330 # lock it with a wallpaper i3lock -c 000000 ~/Pictures/Wallpapers/mywallpaper.png You can use your window manager or something more generic like xbindkeys to set a hotkey. This way you don’t have to open a terminal and type out the command every time you leave your desk. You can just press something like SUPER+L like you would on other OS’s. Fancy # [2] If you like it a bit fancier, you can use i3lock-fancy, it can blur, pixelate, and greyscale your current screen. I did not really like this because you can still tell what is going on the screen. I...
- This talk about live store really made me think about database transactions in a new way. They are talking about live-store, and the complexity of distributed applications like a notes app with the ability to go offline and continue working. The complexity of resyncing each instance is not simple, conflict resolution accross all the possible installs that may or may not even be online is a really hard problem. They go deep on discussing an event driven paradigm that is driven off of a log of events and how this changes how we deal with databases. Using the event log as the source of truth we can do things like forget about database migrations, we can replay all of the events onto a new database. Its very interesting to rethink in terms of a log system that speaks in terms of understandable events (not table operations) as the source of truth for an application. 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/
DHH (@dhh) on X You don't need a mentor. There's no secret sauce left inside anyone's head any more. It's all been tapped, bottled, tweeted, and shared a million times. Sample some of that, but also guard your ign... X (formerly Twitter) · x.com [1] I need to find this podcast, was DHH this animated through the whole thing? You don’t need a mentor. There’s no secret sauce left inside anyone’s head any more. It’s all been tapped, bottled, tweeted, and shared a million times. Sample some of that, but also guard your ignorance. You’ll lose it soon enough. It takes work, one on one hand holding is a shortcut. Sometimes one that we need. Sometimes we need to level up quick, hence why your job might pair you up with someone for the first few months, but it is not something you need, you can figure shit out on your own with hard work. These days we have things like gippity to bounce ideas off, and you can generally get the sense of the direction the average of the internet it was trained on. Always add your own experience and make a choice for yourself. Note This post is a thought [2]. It’s a short note that I make about someone else’s content online #thoughts References: [1]: ...
Self-Host Weekly (30 May 2025) Self-hosted news, updates, launches, and content for the week ending Friday, May 30, 2025 selfh.st · selfh.st [1] The object storage (S3-compatible) platform MinIO created a bit of a stir this week I had not heard about this before it came in through selfh.st. I use minio a lot, and did not know there are so many great alternatives out there for it. I might be looking into some of these options such as garage [2]. Its hard to tell from this article what mino dropped, but luckily for me it seems to be all ui related. I use the UI for debugging/feedback/sometimes learning, but at this point I’ve got good flows for setting up new access keys, buckets, and everything with the cli. 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://selfh.st/weekly/2025-05-30/ [2]: https://garagehq.deuxfleurs.fr/?ref=selfh.st [3]: /thoughts/
DHH (@dhh) on X NIH: Not Invented Here Syndrome might come from a good place, but almost everything that's good in this world came from people who ignored it. Virtually everything is a variation of something else.... X (formerly Twitter) · x.com [1] I suffer hard from NIH, I’m cheap, I like building things, I hate reading the docs, the perfect recipe for some bad NIH. I really like DHH’s take here. If no one builds anything new we get stuck with the same old shit. I think theres a lot of things that as far as my use case is concerned feature complete and needs no more. I would just build with it or on it, but not re-invent. It’s a slippery slope. 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://x.com/dhh/status/1928450457262850053 [2]: /thoughts/
feat: add hackernews hits on home page · jimniels/blog@b1a250b Contribute to jimniels/blog development by creating an account on GitHub. GitHub · github.com [1] Jim Nielsen fetches his hacker news ranked articles for his home page. 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://github.com/jimniels/blog/commit/b1a250b2357d21e69a58ce3265114e1761fb47f8 [2]: /thoughts/
External Link hn.algolia.com [1] this post [2] by Jim Nielsen, lead me to this commit [3] where I found that he was including posts of his that wound up on hackernews. I really like this idea and might take it, even though i have very few HN linked posts. Note This post is a thought [4]. It’s a short note that I make about someone else’s content online #thoughts References: [1]: https://hn.algolia.com/api/v1/search?query=waylonwalker.com&restrictSearchableAttributes=url [2]: https://blog.jim-nielsen.com/2022/playing-with-blog-home/ [3]: https://github.com/jimniels/blog/commit/b1a250b2357d21e69a58ce3265114e1761fb47f8 [4]: /thoughts/
External Links - Jim Nielsen’s Blog Writing about the big beautiful mess that is making things for the world wide web. blog.jim-nielsen.com [1] I really like the idea of Jim’s Eternal Links, and really want to take it for myself. To expand here I want to be able to look for common places for rss feeds, and be able to scrape out rss feeds for sites that I tend to link to often. Also if they have something like a /blogroll it might be a good place to find new great people to follow. 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://blog.jim-nielsen.com/about/external-links/ [2]: /thoughts/
Could I Have Some More Friction in My Life, Please? Writing about the big beautiful mess that is making things for the world wide web. blog.jim-nielsen.com [1] Maybe we need a little more friction in the world. More things that merit our time. Less things that don’t. I can resonate with this post, less friction feels like it leads me to thinking less, having less skin in the game, understanding less, feeling less fulfilled. Vibe coding [2] is a new trend of 2025, it feels like the future, but it does not quite feel like the present yet. It’s riddled with errors and I only get frustrated when it doesn’t work. I like having some friction that leads me to think and pay attention. There might be a future where this is not required for some things like coding up crud apps, but that does not feel like today. 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://blog.jim-nielsen.com/2025/more-friction-please/ [2]: /vibe-coding/ [3]: /thoughts/
A Gentle Intro to RSS A guide to RSS for the less tech savvy. Derek Kedziora · derekkedziora.com [1] Some of the best things from the old internet are still preserved with RSS. Content is shared via simple files, which means the slow-loading, ad-stuffed and tracker-filled clutter of the modern internet are mostly absent. There aren’t any algorithms. RSS readers are wonderfully dumb. There’s no AI sifting through content to find whatever will outrage you the most. You just get new posts and mark them as read. It’s a calmer world. With RSS I follow lots of people writing about normal people things. People blog about getting back into playing the drums, a fun book they just read, a tough problem they’re working through and the other day to day things of life. This type of content tends to get buried on social media — it doesn’t get the clicks and sell ads like fear and outrage do. I feel like a curmudgeon, but i feel all of these things. I dont think that the new web is completely terrible, what is terrible is that the options of an algorithm ran by companies with differing goals is seemingly the only option. RSS still works, its fantastic, I personally love it, but theres on...
Command Line | gitignore.io / docs To run gitignore.io from your command line you need an active internet connection and an environment function. You need to add a function to your environment that lets you access the gitignore.io API. docs.gitignore.io [1] This is a very interesting cli, its so simple. I stumbled accross the gi command awhile back and was like pfft, I dont want to install something for that. Didn’t even realize that you don’t install it, its just http. Their install instructions lead you to putting a curl funtion in your bashrc. function gi() { curl -sLw \"\\\n\" https://www.toptal.com/developers/gitignore/api/\$@ ;} This now has me wondering “What else can build like this?” 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://docs.gitignore.io/install/command-line [2]: /thoughts/
- linkarzu has a way to navigate his entire mac using a hyper key. Everything looks so tight and polished, also a lot to remember! Lucky he has a system of mnemonics that make it easy to remember. His setup is very Mac focused using mac only apps, so this would not work for me, though I’m sure I could get something similar on linux. He did mention Kanata which is cross platform. What I do # [1] I use a far different system that is fast loose and easy. On every system I run I have 9 workspaces that let me put 9 applications, I can easily move apps to different workspaces and have a side by side if I need. The core of what I do is terminal, web browser, and chat. Those go on workspaces 4,5,6, whch are home-row keys. If I’m running obs, that is on 8, steam goes on 1. but I have some freedom to move. Sometimes 2 will be an image editor or a video editor, sometimes something else all together, but I can quickly go to each app. What I like from Linkazru # [2] I do like his layered approach. I run a 42 key keyboard so things can get a bit cramped quickly. And when thinking in mnemonics you only get 26 letters in the alphabet, but prefixing these with another layer this number goes...
Forrest Knight (@ForrestPKnight) on X you're not allowed to write comments in your code anymore, because if you do everyone will just think it's ai generated. X (formerly Twitter) · x.com [1] Oh, I feel this. I go through the effort of removing dum ai comments so the ai looks less ai. you’re not allowed to write comments in your code anymore, because if you do everyone will just think it’s ai generated. 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://x.com/ForrestPKnight/status/1927398791398719997 [2]: /thoughts/
The adapter pattern in python The Adapter pattern is a design pattern that allows objects with incompatible interfaces to work together. It provides a way to convert the interface of an object into another interface that client... Rob Parsons · robp.dev [1] This has me wondering if I need to really learn more patterns, data structures, and algorithms. This looks particularly useful when trying to combine several objects that you dont have full control over and make them behave similarly. 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://robp.dev/the-adapter-pattern-in-python/ [2]: /thoughts/