41554 blogs · [ { "id": "01a0874a-31f5-7207-bd75-1bf72a0626e6", "title": "Resetting an Ideal Halo Zigbee Thermostat", "url": "https://blog.gpkb.org/posts/reset-ideal-halo-thermostat/", "published_at": "2025-11-27T20:59:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72ac0809a", "title": "My Homelab", "url": "https://blog.gpkb.org/posts/homelab-2025/", "published_at": "2025-10-26T22:25:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72af940ab", "title": "Run AI Agents in Lightweight Sandboxes", "url": "https://blog.gpkb.org/posts/ai-agent-sandbox/", "published_at": "2025-08-31T12:18:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72bec5a93", "title": "Think Twice about Boolean Fields in your Data Model", "url": "https://blog.gpkb.org/posts/no-booleans-in-normalised-model/", "published_at": "2025-08-31T11:50:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72c6ca26b", "title": "Just Send Me the Prompt", "url": "https://blog.gpkb.org/posts/just-send-me-the-prompt/", "published_at": "2025-07-31T09:41:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72d0252aa", "title": "Automating Metabase Upgrades on Kubernetes with Flux", "url": "https://blog.gpkb.org/posts/automate-metabase-flux/", "published_at": "2025-05-27T21:04:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72dee2261", "title": "Clean Domain Models with SQLAlchemy", "url": "https://blog.gpkb.org/posts/clean-domain-models-sqlalchemy/", "published_at": "2024-12-08T21:42:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72ec9f625", "title": "Talos Linux on XCP-ng", "url": "https://blog.gpkb.org/posts/talos-linux-xcp-ng/", "published_at": "2024-11-09T16:19:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72f19fbf1", "title": "Hillshading on my Static Maps", "url": "https://blog.gpkb.org/posts/hillshading-static-maps/", "published_at": "2024-10-15T21:43:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72f524bec", "title": "West Highland Way", "url": "https://blog.gpkb.org/posts/west-highland-way/", "published_at": "2024-10-10T22:33:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf72ff4813e", "title": "Kubernetes Ingress vs Load Balancer", "url": "https://blog.gpkb.org/posts/k8s-ingress-v-load-balancer/", "published_at": "2024-08-06T21:10:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf730b1c260", "title": "Make Reading a Habit", "url": "https://blog.gpkb.org/posts/make-reading-habit/", "published_at": "2024-08-04T12:18:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf731b0a04b", "title": "Odd Problem Accessing OPNsense Web UI via \"OPT1\" Interface", "url": "https://blog.gpkb.org/posts/opnsense-pfsense-reply-to/", "published_at": "2024-04-24T21:50:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf7323264f3", "title": "Git is a Version Control System", "url": "https://blog.gpkb.org/posts/git-is-a-version-control-system/", "published_at": "2024-02-24T17:23:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf732b02e73", "title": "Norfolk Coast Path", "url": "https://blog.gpkb.org/posts/norfolk-coast-path/", "published_at": "2024-02-15T23:33:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf732bad4e7", "title": "Emacs Undo Redo", "url": "https://blog.gpkb.org/posts/emacs-undo/", "published_at": "2023-12-14T22:18:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf733490c89", "title": "Bash History Hacks", "url": "https://blog.gpkb.org/posts/project-local-bash-history/", "published_at": "2023-12-05T22:22:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf733b66413", "title": "A Lament for the Firefox Quick Find Key", "url": "https://blog.gpkb.org/posts/lamenting-firefox-quick-find/", "published_at": "2023-11-16T20:14:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf7347260cf", "title": "Using Nerd Icons in Org Agenda", "url": "https://blog.gpkb.org/posts/org-agenda-nerd-icons/", "published_at": "2023-11-14T23:56:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf7350f443a", "title": "Custom Static Vector Maps on your Hugo Static Site", "url": "https://blog.gpkb.org/posts/hugo-static-site-maps/", "published_at": "2023-10-27T00:11:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf735d0f8ad", "title": "Working on Multiple Web Projects with Docker Compose and Traefik", "url": "https://blog.gpkb.org/posts/multiple-web-projects-traefik/", "published_at": "2023-10-02T09:00:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf7362a7251", "title": "Resolving Private IP Addresses with pfSense DNS Resolver", "url": "https://blog.gpkb.org/posts/pfsense-unbound-private/", "published_at": "2023-10-01T23:10:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf736a5731f", "title": "Why is Emacs Hanging?", "url": "https://blog.gpkb.org/posts/emacs-hangs-debug/", "published_at": "2023-09-21T14:10:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf7371a4518", "title": "Replacing Strings in an Entire Project", "url": "https://blog.gpkb.org/posts/emacs-regexp-replace/", "published_at": "2023-08-22T14:22:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf738160989", "title": "My 2023 Emacs Python Setup", "url": "https://blog.gpkb.org/posts/emacs-python-2023/", "published_at": "2023-08-15T14:19:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf738ff650f", "title": "Install Calibre without Root", "url": "https://blog.gpkb.org/posts/calibre-rootless-install/", "published_at": "2023-08-13T13:23:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf739d1ae58", "title": "Cooking with Make", "url": "https://blog.gpkb.org/posts/cooking-with-make/", "published_at": "2023-08-03T00:00:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf73a4fe031", "title": "Arduino Programming with Emacs", "url": "https://blog.gpkb.org/posts/emacs-arduino/", "published_at": "2023-07-31T19:30:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf73a765fb1", "title": "Building a Home Cinema on a Shoestring", "url": "https://blog.gpkb.org/posts/shoestring-home-cinema/", "published_at": "2023-07-24T14:25:00+00:00" }, { "id": "01a0874a-31f5-7207-bd75-1bf73ac0852b", "title": "Writing a Blog with Org-mode", "url": "https://blog.gpkb.org/posts/hugo-org-mode/", "published_at": "2023-07-15T13:43:00+00:00" } ] posts Claim your blog
Back to gpk blog
Blog · corpus.blog/blogs/blog.gpkb.org/posts

gpk blog

blog.gpkb.org

2025

2024

2023