Today I Learned

Short TIL posts

1852 posts latest post 2026-05-13
Publishing rhythm
Apr 2026 | 23 posts
GitHub - kndndrj/nvim-dbee: Interactive database client for neovim Interactive database client for neovim. Contribute to kndndrj/nvim-dbee development by creating an account on GitHub. GitHub · github.com [1] A neovim database client that I need to check out. 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/kndndrj/nvim-dbee [2]: /thoughts/
Relocating the Docker root directory If the space in the file system where the Docker root directory is located is not adequate and cannot be increased, you must relocate the directory. ibm.com [1] A very straightforward guide to moving your docker data, such as container storage to a different location. In my case I wanted it off of my boot drive. 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://www.ibm.com/docs/en/z-logdata-analytics/5.1.0?topic=compose-relocating-docker-root-directory [2]: /thoughts/
GitHub - containers/aardvark-dns: Authoritative dns server for A/AAAA container records. Forwards other request to host's /etc/resolv.conf Authoritative dns server for A/AAAA container records. Forwards other request to host's /etc/resolv.conf - containers/aardvark-dns GitHub · github.com [1] I ran into some dns issues while running podman on arch, aparantly I had missed an optional dependency of aardvark-dns for container to container dns resolution. paru -S aardvark-dns 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/containers/aardvark-dns [2]: /thoughts/
Podman - ArchWiki wiki.archlinux.org [1] I kept running into limits in the number of subuid and subgid’s I had on my system by default. As always thank the arch wiki guide for having the most comprehensive yet consice guide to setup podman. What I needed to do to fix the error. usermod --add-subuids 100000-165535 --add-subgids 100000-165535 username 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://wiki.archlinux.org/title/Podman [2]: /thoughts/
TestDisk Step By Step CGSecurity · cgsecurity.org [1] testdisk is an amazing command line utility (interactive tui) that just saved me a hard drive that was filled with data, but every machine that I plugged it into told me that it was completely unpartitioned. 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://www.cgsecurity.org/wiki/TestDisk_Step_By_Step [2]: /thoughts/
Textual - Using Rich Inspect to interrogate Python objects Textual is a TUI framework for Python, inspired by modern web development. Textual Documentation · textual.textualize.io [1] I love rich inspect. It’s one of my most often used features of rich. It gives you a great human readable insight into python object instances. >>> from rich import inspect >>> text_file = open("foo.txt", "w") >>> inspect(text_file) I have a pyflyby entry for it so that I can just run it ang get automatic imports. To not clash with the standard library inspect, which is quite useful on it’s own, I have aliased it to rinspect. from rich import inspect as rinspect 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://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/ [2]: /thoughts/
Reasons to avoid Javascript CDNs Wesley Aptekar-Cassels · blog.wesleyac.com [1] And this is why we don’t run cdn in prod, respect your users who can’t control where the assets are stored. There are so many fast static hosting providers out there, if you are worried about performance reasons use one of those to self host [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://blog.wesleyac.com/posts/why-not-javascript-cdn [2]: /self-host/ [3]: /thoughts/
Just starred nvim-dbee [1] by kndndrj [2]. It’s an exciting project with a lot to offer. Interactive database client for neovim References: [1]: https://github.com/kndndrj/nvim-dbee [2]: https://github.com/kndndrj
How to Manage 'Systemd' Services and Units Using 'Systemctl' in Linux Systemctl is a systemd utility which is responsible for Controlling the systemd system and service manager. Systemd is a collection of system management daemons, utilities and libraries which serve... How to Manage ‘Systemd’ Services and Units Using ‘Systemctl’ in Linux · tecmint.com [1] A fantastic overview of the systemd cli. 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://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-linux/ [2]: /thoughts/
How to fix ZFS pool not importing at boot You have probably tried Stack Exchange and reddit at this point, so what do you have to lose? ./techtipsy · ounapuu.ee [1] Hacky solution to get zpool import tank to work on boot right away. This has been an issue that has plagued my system for months and no matter what dependencies I add in it never works, but adding a sleep as ExecStartPre did the trick. 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://ounapuu.ee/posts/2021/02/01/how-to-fix-zfs-pool-not-importing-at-boot/ [2]: /thoughts/
External Link stackoverflow.com [1] In flask apps I often get a 404 for routes with a trailing slash. This Stack Overflow post shows how to configure flask to allow trailing slashes on some or all routes. 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://stackoverflow.com/questions/33241050/trailing-slash-triggers-404-in-flask-path-rule [2]: /thoughts/
Deleting Specific Lines in a File with sed or yq — Nick Janetakis We Nick Janetakis · nickjanetakis.com [1] sed can be a tricky beast, I often stumble when trying to pipe into it. Next time I need to use sed, I should reference this article by Nick Janetakis. He makes it looks much easier than my experience has been, and it appears to behave like a vim :%s/ substitution does, or a g/ g command. 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://nickjanetakis.com/blog/deleting-specific-lines-in-a-file-with-sed-or-yq [2]: /thoughts/
External Link htmx.org [1] json-enc extension converts url encoded form values into json encoded data, this is very useful for fastapi [2] to have the same interface for htmx [3] and curl type of interfaces. 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://htmx.org/extensions/json-enc/ [2]: /fastapi/ [3]: /htmx/ [4]: /thoughts/
Header Parameters - FastAPI FastAPI framework, high performance, easy to learn, fast to code, ready for production fastapi.tiangolo.com [1] Getting request headers in fastapi [2] has a pretty nice stetup, it allows you to get headers values as function arguments, I was able to use headers to detect if a request was made from htmx [3] or not. If the request was made from htmx, then we want a html [4] format, otherwise I’m probably hitting the api programatically from something like curl or python @post_router.post("/post/") async def post_post( request: Request, post: PostCreate, current_user: Annotated[User, Depends(try_get_current_active_user)], session: Session = Depends(get_session), is_hx_request: Annotated[str | None, Header()] = None, ) -> PostRead: "create a post" print('hx_request', hx_request) db_post = Post.from_orm(post) session.add(db_post) session.commit() session.refresh(db_post) if is_hx_request: return templates.TemplateResponse("post_item.html", {"request": request, "config": config, "post": db_post}) return db_post Note This post is a thought [5]. It’s a short note that I make about someone else’s content online #thoughts References: [1]:...
GitHub - 1j01/textual-paint: :art: MS Paint in your terminal. :art: MS Paint in your terminal. Contribute to 1j01/textual-paint development by creating an account on GitHub. GitHub · github.com [1] 1j01 [2] created a complete working clone of ms paint in the terminal using the textual framework. It’s incredible. 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://github.com/1j01/textual-paint [2]: https://github.com/1j01 [3]: /thoughts/
Dear Red Hat… featuring Jeff Geerling (Changelog & Friends #7) Red Hat's decision to lock down RHEL sources behind a subscription paywall was met with much ire and opened opportunity for Oracle to get a smack in and SUSE to announce a fork with $10 million beh… Changelog · changelog.com [1] Loved this explanation about all the recent lock down with RHEL from Jeff Geerling. 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://changelog.com/friends/7 [2]: /thoughts/
sqlite-utils now supports plugins sqlite-utils 3.34 is out with a major new feature: support for plugins. sqlite-utils is my combination Python library and command-line tool for manipulating SQLite databases. It recently celebrated... Simon Willison’s Weblog · simonwillison.net [1] As the title states sqlite-utils now supports plugins. I dug in just a bit and Simon implemented this completely with entrypoints, no framework or library at all. 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://simonwillison.net/2023/Jul/24/sqlite-utils-plugins/ [2]: /thoughts/
Form Data - FastAPI FastAPI framework, high performance, easy to learn, fast to code, ready for production fastapi.tiangolo.com [1] Getting form data inside of fastapi [2] was not intuitive to me at first. Everything I had used in fastapi leaned on pydantic models. Form data comes in differently and needs collected differently. from typing import Annotated from fastapi import FastAPI, Form app = FastAPI() @app.post("/login/") async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]): return {"username": username} 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://fastapi.tiangolo.com/tutorial/request-forms/#define-form-parameters [2]: /fastapi/ [3]: /thoughts/
[1] I am creating this post from a desktop app that I created in 3 lines. import webview webview.create_window('Woah dude!', 'https://thoughts.waylonwalker.com') webview.start() 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://pywebview.flowrl.com/guide/usage.html [2]: /thoughts/