41554 blogs · [ { "id": "01a08d22-7805-703d-a88d-dd557b7ef730", "title": "Draw the REST of the HOWL", "url": "https://brojonat.com/posts/datastar-kalshi/", "published_at": "2026-08-12T17:55:12+00:00" }, { "id": "01a08d22-7805-703d-a88d-dd557c52cb55", "title": "How I Learned to Stop Worrying and Trust Statistics", "url": "https://brojonat.com/posts/duckspc/", "published_at": "2026-06-05T00:00:00+00:00" }, { "id": "01a08d22-7805-703d-a88d-dd557d123152", "title": "You Probably Don't Need Kafka (You Need Postgres and a Bucket)", "url": "https://brojonat.com/posts/you-dont-need-kafka/", "published_at": "2026-05-26T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e86395be2d7", "title": "Agent Skills: Reusable Plugins for AI Coding Agents", "url": "https://brojonat.com/posts/snippet-skills/", "published_at": "2026-03-28T07:04:50+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8639605bf0", "title": "I'm Lazy (but not Complacent)", "url": "https://brojonat.com/posts/im-lazy/", "published_at": "2026-01-03T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863972556a", "title": "Kubernetes: Part 2", "url": "https://brojonat.com/posts/kubernetes-part-2/", "published_at": "2025-10-25T15:48:35+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e86398b5005", "title": "NATS-Forohtoo: Payment Invite Required", "url": "https://brojonat.com/posts/forohtoo/", "published_at": "2025-10-11T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8639c349c8", "title": "The Best Comment System is No Comment System...It's a Bluesky Thread", "url": "https://brojonat.com/posts/bluesky-hugo-comments/", "published_at": "2025-09-20T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863a0dd686", "title": "IncentivizeThis: the Carrot and the Click", "url": "https://brojonat.com/posts/incentivizethis/", "published_at": "2025-07-08T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863abd77d7", "title": "DuckLake: Generally Regarded as a Good Idea", "url": "https://brojonat.com/posts/ducklake/", "published_at": "2025-05-30T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863ad21000", "title": "The Absolute Minimum Everyone Must Know About Managing Python Dependencies in 2025 Period No Excuses", "url": "https://brojonat.com/posts/python-dependencies-2025/", "published_at": "2025-04-11T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863b230b64", "title": "Simon Willison's llm, datasette, and sqlite-utils", "url": "https://brojonat.com/posts/llm-datasette-setup/", "published_at": "2025-02-04T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863b7bae2d", "title": "Snippets: Python and the uv Shebang", "url": "https://brojonat.com/posts/uv/", "published_at": "2025-01-30T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863c438bef", "title": "Multi-Label Classification", "url": "https://brojonat.com/posts/multi-label-classification/", "published_at": "2024-09-20T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863cfe7c94", "title": "Window Functions", "url": "https://brojonat.com/posts/window-functions/", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863d9a70d8", "title": "Temporal Schedules", "url": "https://brojonat.com/posts/temporal-schedules/", "published_at": "2024-08-08T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863e20a2e6", "title": "No Time for Caution: Getting Started with TimescaleDB", "url": "https://brojonat.com/posts/timescale-db-getting-started/", "published_at": "2024-08-05T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863efbec04", "title": "Go and Postgres Listen/Notify or: How I Learned to Stop Worrying and Love PubSub", "url": "https://brojonat.com/posts/go-postgres-listen-notify/", "published_at": "2024-06-18T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e863fed2fb9", "title": "Bringing it Together: Go, SQL, Code Gen", "url": "https://brojonat.com/posts/go-postgres-sqlc-atlas/", "published_at": "2024-05-12T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e86403825ba", "title": "Channel Merging for (Periodic) Func", "url": "https://brojonat.com/posts/chan-merging/", "published_at": "2024-03-21T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8640e3b39d", "title": "Pumping Messages with Websocket", "url": "https://brojonat.com/posts/websockets/", "published_at": "2024-03-20T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8641e08000", "title": "Channel Smuggling for Fun and Profit", "url": "https://brojonat.com/posts/chan-smuggling/", "published_at": "2024-03-14T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8642891160", "title": "Portugal", "url": "https://brojonat.com/posts/portugal/", "published_at": "2024-01-05T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864317f4ac", "title": "Kubernetes: Part 1", "url": "https://brojonat.com/posts/kubernetes-part-1/", "published_at": "2023-08-18T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8643864226", "title": "Workflow Series: Apache Airflow", "url": "https://brojonat.com/posts/workflows-airflow/", "published_at": "2023-07-14T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8643b11da0", "title": "Observable Plot for Fast EDA", "url": "https://brojonat.com/posts/observable-plot/", "published_at": "2023-05-22T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864472716e", "title": "Getting Starting with go-redis", "url": "https://brojonat.com/posts/go-redis/", "published_at": "2023-04-25T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8644bb64d4", "title": "Minimal Go HTTP Servers", "url": "https://brojonat.com/posts/minimal-go-http-server/", "published_at": "2023-03-20T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864515f5d6", "title": "Snippets: Vim Cheat Sheet", "url": "https://brojonat.com/posts/snippets_vim_cheatsheet/", "published_at": "2023-03-08T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e86455c0b57", "title": "Python Geographic Plotting", "url": "https://brojonat.com/posts/python-geo-plotting/", "published_at": "2023-02-13T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8646488e3e", "title": "Snippets: JWTs and Go", "url": "https://brojonat.com/posts/snippets_go_jwt/", "published_at": "2023-01-16T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8646626810", "title": "Reddit API Authentication with Go", "url": "https://brojonat.com/posts/reddit_api_auth/", "published_at": "2022-12-30T19:50:34+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8646787373", "title": "Snippets: Go For-Select", "url": "https://brojonat.com/posts/snippets_go_for_select/", "published_at": "2022-12-12T03:11:31+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8646c8412a", "title": "Scikit-learn Datasets 1: make_classification", "url": "https://brojonat.com/posts/sklearn_datasets_1_make_classification/", "published_at": "2022-12-01T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e86476322ab", "title": "Snippets: tmux", "url": "https://brojonat.com/posts/snippets_tmux/", "published_at": "2022-11-26T04:32:31+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8648513872", "title": "Snippets: All About Go Strings", "url": "https://brojonat.com/posts/snippets_go_strings/", "published_at": "2022-11-18T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e86493a23a9", "title": "Snippets: Docker and Dockerfile", "url": "https://brojonat.com/posts/snippets_docker/", "published_at": "2022-11-17T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e8649c427b9", "title": "Go Adapter Pattern Part 3: Service Handlers", "url": "https://brojonat.com/posts/adapter_pattern_3_service_handlers/", "published_at": "2022-11-09T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864a9f0317", "title": "Go Adapter Pattern Part 2: Router Middleware", "url": "https://brojonat.com/posts/adapter_pattern_2_middleware_adapter/", "published_at": "2022-11-07T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864b24e39e", "title": "Go Adapter Pattern Part 1: Functional Variadic Arguments", "url": "https://brojonat.com/posts/adapter_pattern_1_func_opts/", "published_at": "2022-10-27T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864bfb841b", "title": "Python JSON Encoding", "url": "https://brojonat.com/posts/python-json-encoding/", "published_at": "2022-10-02T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864c65c1ac", "title": "Hello World!", "url": "https://brojonat.com/posts/hello_world/", "published_at": "2022-10-01T00:00:00+00:00" }, { "id": "01a08d22-7806-722c-97f6-7e864cba8b38", "title": ":: Jon Brown's Webpage", "url": "https://brojonat.com/jon_brown_resume/", "published_at": null }, { "id": "01a08d22-7806-722c-97f6-7e864cddc1db", "title": ":: Jon Brown's Webpage", "url": "https://brojonat.com/tags/", "published_at": null }, { "id": "01a08d22-7806-722c-97f6-7e864dbed85f", "title": "Consultation Services", "url": "https://brojonat.com/consultation/", "published_at": null }, { "id": "01a08d22-7806-722c-97f6-7e864ea64546", "title": "Noteworth Apps", "url": "https://brojonat.com/apps/", "published_at": null }, { "id": "01a08d22-7806-722c-97f6-7e864ebf2355", "title": "Publications", "url": "https://brojonat.com/publications/", "published_at": null } ] posts Claim your blog
Back to brojonat.com
Blog · corpus.blog/blogs/brojonat.com/posts

brojonat.com

brojonat.com

2026

2025

2024

2023

2022

Undated