41554 blogs · [ { "id": "01a0877c-768f-71bc-a9fb-bd120bf0ce17", "title": "Using marimo with Django", "url": "https://geoff.tuxpup.com/posts/django-and-marimo/", "published_at": "2026-03-23T06:29:16+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd120c40d975", "title": "A New Management Command for Running Django + npm dev scripts", "url": "https://geoff.tuxpup.com/posts/django-npm-dev/", "published_at": "2026-03-20T17:08:09+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd120cf8c3f5", "title": "Read QR codes from your Mac Screen", "url": "https://geoff.tuxpup.com/posts/read-qr-codes-mac-screen/", "published_at": "2026-03-11T14:30:07+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd120dc79e3b", "title": "Upgrading Python Packages (pip-tools and uv)", "url": "https://geoff.tuxpup.com/posts/upgrading-python-packages/", "published_at": "2026-02-03T18:22:01+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd120dfc0f9a", "title": "Python Bindings for Ammonia (HTML sanitization library)", "url": "https://geoff.tuxpup.com/posts/python-bindings-ammonia/", "published_at": "2026-01-30T14:09:49+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd120edd5844", "title": "Hosting a Static Site in the Silliest Way Possible (Part 2)", "url": "https://geoff.tuxpup.com/posts/silly-static-site-hosting-2/", "published_at": "2026-01-23T23:19:56+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd120fc0f01f", "title": "Python One-liner: Django Secret Key", "url": "https://geoff.tuxpup.com/posts/oneliner_django_secret_key/", "published_at": "2026-01-21T14:03:14+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1210529158", "title": "docker inspect and jq", "url": "https://geoff.tuxpup.com/posts/docker-inspect/", "published_at": "2026-01-20T21:41:21+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121084bca0", "title": "Hosting a Static Site in the Silliest Way Possible (Part 1)", "url": "https://geoff.tuxpup.com/posts/silly-static-site-hosting/", "published_at": "2026-01-20T15:17:27+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1210d95550", "title": "Mailpit for Web Apps that Send Email", "url": "https://geoff.tuxpup.com/posts/mailpit/", "published_at": "2025-02-09T14:00:18+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12116c1353", "title": "Fischer, Part 4: Configuring Django Authentication", "url": "https://geoff.tuxpup.com/posts/90s-homepage-5/", "published_at": "2024-10-08T12:27:42+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121176a1ae", "title": "Fischer, Part 3: Importing and Exporting Bookmarks", "url": "https://geoff.tuxpup.com/posts/90s-homepage-4/", "published_at": "2024-10-06T04:29:46+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12117b599f", "title": "Fischer, Part 2: Tagging", "url": "https://geoff.tuxpup.com/posts/90s-homepage-3/", "published_at": "2024-10-05T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1211d86972", "title": "Fischer, Part 1: Getting Started", "url": "https://geoff.tuxpup.com/posts/90s-homepage-2/", "published_at": "2024-10-04T21:33:44+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12122a7b9d", "title": "'90s-style Start Page for my Browsers", "url": "https://geoff.tuxpup.com/posts/90s-homepage/", "published_at": "2024-10-03T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121288799a", "title": "xlsx-dict-reader 0.2.0, or, publishing to pypi in 2024", "url": "https://geoff.tuxpup.com/posts/pypi-2024/", "published_at": "2024-03-25T02:50:38+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1212fbe26c", "title": "Fantasy Baseball 2024", "url": "https://geoff.tuxpup.com/posts/baseball-blogroll/", "published_at": "2024-02-19T16:15:24+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1213488e92", "title": "Upgrading an Alpine Linux Installation After Waiting Way Too Long", "url": "https://geoff.tuxpup.com/posts/upgrading-alpine-too-long/", "published_at": "2024-01-15T17:07:38+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12142cf867", "title": "dj-notebook: the REPL I've Always Wanted for Django", "url": "https://geoff.tuxpup.com/posts/dj-notebook-superpowers/", "published_at": "2023-10-22T07:34:16+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1214bb56f7", "title": "Hypermedia Systems - Using Django - More htmx patterns", "url": "https://geoff.tuxpup.com/posts/hypermedia-systems-django-more-htmx-1/", "published_at": "2023-10-14T06:03:32+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1215412df4", "title": "Hypermedia Systems - Using Django - Adding htmx (pt 2)", "url": "https://geoff.tuxpup.com/posts/hypermedia-systems-django-htmx-2/", "published_at": "2023-10-13T21:14:40+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1215555fb7", "title": "Hypermedia Systems - Using Django - Adding htmx (pt 1)", "url": "https://geoff.tuxpup.com/posts/hypermedia-systems-django-htmx-1/", "published_at": "2023-10-12T02:55:25+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12157a1c94", "title": "Hypermedia Systems - Using Django - Contacts.app Web 1.0 edition", "url": "https://geoff.tuxpup.com/posts/hypermedia-systems-django-web-1/", "published_at": "2023-10-11T13:55:25+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12158ad613", "title": "Hypermedia Systems - Using Django (introduction)", "url": "https://geoff.tuxpup.com/posts/hypermedia-systems-django-intro/", "published_at": "2023-10-11T11:45:46+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12167b6377", "title": "Flipper Zero Notes", "url": "https://geoff.tuxpup.com/posts/flipper-zero-notes/", "published_at": "2023-10-02T05:35:27+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1216873898", "title": "PSA: Docker Will Edit Host-Based Firewall Rules For You", "url": "https://geoff.tuxpup.com/posts/psa_docker_edits_firewall_rules/", "published_at": "2023-02-19T13:48:20+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1216b18079", "title": "Working on a Dependency Locally", "url": "https://geoff.tuxpup.com/posts/working_on_a_dependency/", "published_at": "2022-09-22T12:12:41+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12179a9347", "title": "Django, HTMX, and front-end scripting", "url": "https://geoff.tuxpup.com/posts/django_htmx_modal_notes/", "published_at": "2022-07-14T03:34:26+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1217c3fce7", "title": "How I Start: Django, Tailwind, HTMX (part 5)", "url": "https://geoff.tuxpup.com/posts/django_tailwind_htmx_how_i_start_5/", "published_at": "2022-07-10T10:09:46+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12189970f6", "title": "How I Start: Django, Tailwind, HTMX (part 4)", "url": "https://geoff.tuxpup.com/posts/django_tailwind_htmx_how_i_start_4/", "published_at": "2022-07-08T12:30:11+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121998c7da", "title": "Adding `shell_plus` for Django to PyCharm's Python Console", "url": "https://geoff.tuxpup.com/posts/django_shell_plus_in_pycharm/", "published_at": "2022-06-27T14:53:49+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121a4f3570", "title": "How I Start: Django, Tailwind, HTMX (part 3)", "url": "https://geoff.tuxpup.com/posts/django_tailwind_htmx_how_i_start_3/", "published_at": "2022-06-25T09:24:25+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121abb91ab", "title": "How I Start: Django, Tailwind, HTMX (part 2)", "url": "https://geoff.tuxpup.com/posts/django_tailwind_htmx_how_i_start_2/", "published_at": "2022-06-24T07:18:14+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121ae6e859", "title": "How I Start: Django, Tailwind, HTMX (part 1)", "url": "https://geoff.tuxpup.com/posts/django_tailwind_htmx_how_i_start/", "published_at": "2022-06-23T06:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121bbee3c6", "title": "Is This Thing On?", "url": "https://geoff.tuxpup.com/posts/is_this_thing_on/", "published_at": "2022-06-22T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121bf91359", "title": "A Nice Regex Tester I Keep Needing To Search For", "url": "https://geoff.tuxpup.com/posts/regex_tester/", "published_at": "2020-10-19T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121cf8b932", "title": "Hosting Side Projects in my Basement", "url": "https://geoff.tuxpup.com/posts/hosting_side_projects_in_my_basement/", "published_at": "2020-10-18T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121de69e8a", "title": "Stock Toolkit: Conclusion", "url": "https://geoff.tuxpup.com/posts/stock_toolkit_4/", "published_at": "2020-10-15T01:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121dea2918", "title": "Tailwind CSS and Svelte", "url": "https://geoff.tuxpup.com/posts/tailwind_svelte/", "published_at": "2020-10-08T01:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121ed64e12", "title": "A Detour into Smelte", "url": "https://geoff.tuxpup.com/posts/smelte_detour/", "published_at": "2020-10-07T01:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121f4e3e44", "title": "Learning FastAPI (3): \"Stock Toolkit\"", "url": "https://geoff.tuxpup.com/posts/stock_toolkit_2/", "published_at": "2020-10-07T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121f732ec6", "title": "Learning FastAPI (2): \"Stock Toolkit\"", "url": "https://geoff.tuxpup.com/posts/stock_toolkit/", "published_at": "2020-10-06T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd121fff00e4", "title": "FastAPI + Svelte", "url": "https://geoff.tuxpup.com/posts/fastapi_svelte_notes/", "published_at": "2020-10-05T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1220d966c5", "title": "Excalidraw", "url": "https://geoff.tuxpup.com/posts/excalidraw/", "published_at": "2020-10-03T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1221c6775e", "title": "Baseball App Wishlist", "url": "https://geoff.tuxpup.com/posts/baseball_app_wishlist/", "published_at": "2020-09-30T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12228fba04", "title": "Hacking a Cheap IP Camera", "url": "https://geoff.tuxpup.com/posts/hacking_a_cheap_ip_camera/", "published_at": "2020-09-29T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1223710e4c", "title": "TRIM - Fedora 32 edition", "url": "https://geoff.tuxpup.com/posts/f32_trim_luks_nvme/", "published_at": "2020-09-29T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1223d8514f", "title": "Fun with Nginx as an API cache", "url": "https://geoff.tuxpup.com/posts/fun_with_nginx_as_api_cache/", "published_at": "2020-09-25T22:15:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1224964457", "title": "Making VMWare Workstation launch on Linux 5.8", "url": "https://geoff.tuxpup.com/posts/fixing_vmware_workstation_again/", "published_at": "2020-09-25T19:15:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12258c700b", "title": "Source Debugging for LÖVE2D", "url": "https://geoff.tuxpup.com/posts/source_debugging_for_love2d/", "published_at": "2020-05-11T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1225f3d05f", "title": "Distributing LÖVE games on Windows", "url": "https://geoff.tuxpup.com/posts/distributing_love_games_on_windows/", "published_at": "2020-05-08T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122666dd4b", "title": "I Will Miss Keybase", "url": "https://geoff.tuxpup.com/posts/keybase/", "published_at": "2020-05-07T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12269e4f00", "title": "A REPL for LÖVE 2D 10.2", "url": "https://geoff.tuxpup.com/posts/love2d_repl/", "published_at": "2020-05-06T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122742ac93", "title": "Sound Levels on Kdenlive", "url": "https://geoff.tuxpup.com/posts/levels_on_kdenlive/", "published_at": "2020-05-05T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12283dd36a", "title": "Pushing to a Non-default Remote Branch", "url": "https://geoff.tuxpup.com/posts/pushing_to_non_default_branch/", "published_at": "2020-05-04T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122883b1fa", "title": "Thinkpad T480 Firmware Updates on Fedora KDE", "url": "https://geoff.tuxpup.com/posts/t480_firmware_updates_on_fedora_kde/", "published_at": "2020-05-03T23:55:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd12295d09d9", "title": "Trying out Aseprite on Fedora 31", "url": "https://geoff.tuxpup.com/posts/aseprite_on_fedora/", "published_at": "2020-05-02T14:21:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122a153b83", "title": "Supporting Gamepads in my LÖVE projects", "url": "https://geoff.tuxpup.com/posts/gamepad_support_in_class_projects/", "published_at": "2020-05-01T21:05:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122abc28f6", "title": "GNU poke binary data editor", "url": "https://geoff.tuxpup.com/posts/poke_hex_editor/", "published_at": "2020-04-30T23:35:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122ad82232", "title": "On Screencasting", "url": "https://geoff.tuxpup.com/posts/screencasting/", "published_at": "2020-04-29T23:55:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122b296f3c", "title": "Getting LÖVE 2D 10.2 running on Fedora 31", "url": "https://geoff.tuxpup.com/posts/love_2d_fedora_31/", "published_at": "2020-04-28T22:30:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122b94aee2", "title": "Neat feature on Source Hut", "url": "https://geoff.tuxpup.com/posts/cool_sr_ht_feature/", "published_at": "2020-04-27T22:17:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122c63b53b", "title": "Reverse-Proxying HTTPS Traffic to a Server in my Basement Using Caddy and Wireguard", "url": "https://geoff.tuxpup.com/posts/caddy_and_wireguard/", "published_at": "2020-03-29T23:15:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122d248daf", "title": "Unknown", "url": "https://geoff.tuxpup.com/posts/census/", "published_at": "2020-03-22T22:18:19+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122daef864", "title": "Python and Google Sheets", "url": "https://geoff.tuxpup.com/posts/python_and_google_sheets/", "published_at": "2020-02-29T02:22:26+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122e75c714", "title": "Anbox on Fedora 31", "url": "https://geoff.tuxpup.com/posts/anbox_on_fedora/", "published_at": "2020-02-01T23:00:24+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122f626963", "title": "Pinebook Pro - First Impressions", "url": "https://geoff.tuxpup.com/posts/pinebook_pro_first_impression/", "published_at": "2020-01-25T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd122fa1781c", "title": "Making VMWare Workstation Work with New Host Kernels (on Fedora)", "url": "https://geoff.tuxpup.com/posts/fixing_vmware_workstation_fedora/", "published_at": "2020-01-09T23:01:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd123087238b", "title": "A Comfortable Arduino Development Environment", "url": "https://geoff.tuxpup.com/posts/arduino_comfortable/", "published_at": "2020-01-08T23:15:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd123142f28a", "title": "Kitty and CoreOS", "url": "https://geoff.tuxpup.com/posts/kitty_and_coreos/", "published_at": "2019-11-30T23:11:24+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1231592d25", "title": "TRIM on a cheap NVMe SSD", "url": "https://geoff.tuxpup.com/posts/trim_luks_nvme/", "published_at": "2019-11-05T00:00:00+00:00" }, { "id": "01a0877c-768f-71bc-a9fb-bd1231a2691b", "title": "Transmission Plugin on FreeNAS 11.2", "url": "https://geoff.tuxpup.com/posts/transmission_on_freenas_11.2/", "published_at": "2019-11-01T00:00:00+00:00" } ] posts Claim your blog
Back to Brain Dump — Geoff's Technical Notebook
Blog · corpus.blog/blogs/geoff.tuxpup.com/posts

Brain Dump — Geoff's Technical Notebook

geoff.tuxpup.com

2026

2025

2024

2023

2022

2020

2019