Today I Learned

Short TIL posts

1834 posts latest post 2026-04-18
Publishing rhythm
Apr 2026 | 20 posts

I needed to display some hover text in a web app that I am using tailwind and jinja on. It has no js, and no build other than the tailwind. I want this to remain simple. Turns out that you can use a span with a title attribute to get hover text in HTML.

Today I learned how to use tar over ssh to save hours in file transfers. I keep all of my projects in ~/git (very creative I know, I’ve done it for years and haven’t changed). I just swapped out my main desktop from bazzite to hyprland, and wanted to get all of my projects back. Before killing my bazzite install I moved everything over (16GB of many small files), it took over 14 hours, maybe longer. I had started in the morning and just let it churn.

This was not going to happen for re-seeding all of my projects on my new system, I knew there had to be a better way, I looked at rsync, but for seeding I ran into this tar over ssh technique and it only took me 6m51s to pull all of my projects off of my remote server.

When you fill all of your time with a bunch of other things, it becomes really hard to become a friendly person. Prime talked about trying to learn how to drop the hurry in his life, and how to not always be in a frenzy of going from one thing to the next. It’s something that puts us in a state that its hard to remember to be friendly. Hard to remember that theres always time for coffee.

I do my best to always leave time for coffee, whether at home with my wife and kids, as well as at work. I am in a very unique place at work where I have a rare set of skills for the industry I am in. This comes with a lot of people insterested in how to do things like running data pipelines or managing server infrastructure. I always take time for these conversations, I find them interesting, and useful. Sometimes you end up with someone who asks the same questions every 6 months, other times, you have someone flourish from these conversations. I’m...

...

I’ve been leaning on lazy-self-installing-python-scripts more and more, but I did not realize how much tooling that uv gives you to help manage your scripts.

uv init --script up uv add --script up typer rich uv remove --script up rich sed -i '1i #!/usr/bin/env -S uv run --script' up chmod +x up ./up

The result is a script that looks like this, its executable as what looks like regular command in your shell.

Only 1 hour into the release of silksong, and it’s taken down all of the eshops, and steamdb dows 100K concurrent players. The Humble store ran out of steam keys for silksong already.

You guys better not break this thing before I get off work and My son gets home cause we are playing this tonight!!

I just Check steamDB, and they have 441K concurrent players right now. An Indie game! This shows when you treat your fans right and make something incredible they stand behind you.

Everything is becoming political these days! I hate it. I regularly hear a friend say these podcasts need to set the politics to the side, but you know what its fukin hard when the gov is upending every corner of life and rebranding it with their own new twist. The billionaire class is winning and it looks like there ain’t a thing we can do about it. Here’s another example of someone taking head of an office they have no business being in. An entire set of working class folks let go for this guy to take over. And what does he want to do, make govt services as satisfying as apple. Apple is cutting edge, it is not something that is one bit sustainable. Their launch sites are generally super heavy, hard to scroll, slow, over animated, but damn they are satisfying the first time you scroll through them, after that just let me through.

Brilliantly said. Vibe coding is legacy code. It’s code that we forget exists. Code that no one touches, you replace it. If you touch it you are more likely to break it.

The worst possible situation is to have a non-programmer vibe code a large project that they intend to maintain. This would be the equivalent of giving a credit card to a child without first explaining the concept of debt.

As you can imagine, the first phase is ecstatic. I can wave this little piece of plastic in stores and take whatever I want! …

Read more in the full post

I saw this post from Simon and I had to give it a go and got some pretty good results. His script is a small cli wrapper around Darren Burns’s Rich Pixels. It works well even through tmux, since there is no terminal magic, just unicode blocks.

Some not so good, and needed the terminal font size cranked up.

This one is one that I’ve been using quite often, I did’t have a hotkey for it, I just used the rm shell command.

!!rm %<TAB><CR>

When you type !! from normal mode it will automatically put you in command mode with .! pre-filled, then you just type rm and <TAB> to auto-complete the current file name, and <CR> to execute the command.

:.!rm %<TAB><CR>

Making it better #

The one quirk that I don’t like about this is that the buffer remains open after deleting, and sometimes I forget to close it and end up re-creating it by mistake when running :wall or :xall.

Create a DeleteFile command with vim command.

...