41554 blogs · [ { "id": "01a0e6a6-433a-704b-bd1f-1cc8722e176b", "title": "How I've been paying for things in Nepal", "url": "https://brtkwr.com/posts/2026-09-28-how-ive-been-paying-for-things-in-nepal/", "published_at": "2026-09-28T03:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b51f73680c", "title": "Turning off auto-memory without losing the memories", "url": "https://brtkwr.com/posts/2026-08-28-turning-off-auto-memory-without-losing-the-memories/", "published_at": "2026-08-28T15:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b51ff42924", "title": "Handing side quests to a second Claude session", "url": "https://brtkwr.com/posts/2026-08-20-handing-side-quests-to-a-second-claude-session/", "published_at": "2026-08-20T10:52:16+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5201aeefd", "title": "Sideloading a library loan onto a Kobo without Adobe Digital Editions", "url": "https://brtkwr.com/posts/2026-08-18-sideloading-a-library-loan-onto-a-kobo-without-adobe-digital-editions/", "published_at": "2026-08-18T17:34:26+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5208e7498", "title": "Git-managed agent routines that propose their own fixes", "url": "https://brtkwr.com/posts/2026-07-30-git-managed-self-improving-agent-routines/", "published_at": "2026-07-30T23:45:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5213cb333", "title": "Don't put a long token in an email URL", "url": "https://brtkwr.com/posts/2026-07-17-the-404-that-mail-providers-caused/", "published_at": "2026-07-17T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52140fdf5", "title": "Trimming my Claude Code startup context", "url": "https://brtkwr.com/posts/2026-06-26-trimming-my-claude-code-startup-context/", "published_at": "2026-06-26T12:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b522369094", "title": "Notes on a stale provider cooldown in OpenClaw", "url": "https://brtkwr.com/posts/2026-06-05-openclaw-stale-provider-cooldown/", "published_at": "2026-06-05T12:45:02+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5229d5e5f", "title": "What I Trust When Verifying a Multi-Repo Migration", "url": "https://brtkwr.com/posts/2026-06-03-what-i-trust-when-verifying-a-multi-repo-migration/", "published_at": "2026-06-03T14:45:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5235b6168", "title": "Swapping uv Indexes Without Version Drift", "url": "https://brtkwr.com/posts/2026-06-03-swapping-uv-indexes-without-version-drift/", "published_at": "2026-06-03T14:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52425e5d5", "title": "The Postgres ownership migration that looked done but wasn't", "url": "https://brtkwr.com/posts/2026-06-01-transferring-postgres-database-ownership/", "published_at": "2026-06-01T15:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b524ec5977", "title": "When cert-manager can't help: GKE Gateway and Google Certificate Manager", "url": "https://brtkwr.com/posts/2026-05-28-cert-manager-vs-google-certificate-manager-for-gke-gateway/", "published_at": "2026-05-28T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5256ddc50", "title": "Reducing OpenClaw token usage", "url": "https://brtkwr.com/posts/2026-05-17-reducing-openclaw-token-usage/", "published_at": "2026-05-17T07:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5259eba77", "title": "Avoiding Cloud NAT cost for Artifact Registry image pulls", "url": "https://brtkwr.com/posts/2026-05-15-avoiding-cloud-nat-cost-for-artifact-registry-image-pulls/", "published_at": "2026-05-15T05:26:23+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b526067c17", "title": "Closing HA gaps in a redis-sentinel + haproxy setup", "url": "https://brtkwr.com/posts/2026-05-14-closing-ha-gaps-in-redis-sentinel-haproxy/", "published_at": "2026-05-14T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b526e13ed8", "title": "How a tidy refactor caused a release loop", "url": "https://brtkwr.com/posts/2026-05-09-how-a-tidy-refactor-caused-a-release-loop/", "published_at": "2026-05-09T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5272495de", "title": "Current state of my Claude Code memory files", "url": "https://brtkwr.com/posts/2026-05-08-current-state-of-my-claude-code-memory-files/", "published_at": "2026-05-08T21:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b527c01099", "title": "Is there an optimal cycling speed in the rain?", "url": "https://brtkwr.com/posts/2026-05-03-optimal-cycling-speed-in-the-rain/", "published_at": "2026-05-03T08:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5281bbbdf", "title": "OpenClaw: when a heartbeat session keeps your old model alive", "url": "https://brtkwr.com/posts/2026-04-29-openclaw-heartbeat-session-pinned-model/", "published_at": "2026-04-29T10:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b528698936", "title": "Tracking the ~/.openclaw config directory in git, with secrets kept out", "url": "https://brtkwr.com/posts/2026-04-20-tracking-openclaw-home-in-git/", "published_at": "2026-04-20T02:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b528af706b", "title": "What makes Go channels special", "url": "https://brtkwr.com/posts/2026-04-20-what-makes-go-channels-special/", "published_at": "2026-04-20T01:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52903803a", "title": "OpenClaw upgrade gotchas: schema validation and symlink rejection", "url": "https://brtkwr.com/posts/2026-04-19-openclaw-upgrade-gotchas/", "published_at": "2026-04-19T20:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b529dee1a6", "title": "Making Claude Code speak responses with a Stop hook", "url": "https://brtkwr.com/posts/2026-04-17-making-claude-code-speak-responses-with-a-stop-hook/", "published_at": "2026-04-17T17:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52ab1a4bb", "title": "Helm pre-upgrade hooks are not atomic", "url": "https://brtkwr.com/posts/2026-04-17-helm-pre-upgrade-hooks-are-not-atomic/", "published_at": "2026-04-17T01:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52af7967c", "title": "Making hot sauce is more engineering than cooking", "url": "https://brtkwr.com/posts/2026-04-09-making-hot-sauce-is-more-engineering-than-cooking/", "published_at": "2026-04-09T20:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52ba0b15c", "title": "Switching OpenClaw to CLI backends for Claude and Codex", "url": "https://brtkwr.com/posts/2026-04-09-switching-openclaw-to-cli-backends-for-claude-and-codex/", "published_at": "2026-04-09T08:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52c70abf2", "title": "Migrating OpenClaw from Jetson Nano to a VPS", "url": "https://brtkwr.com/posts/2026-04-08-migrating-openclaw-from-jetson-nano-to-a-vps/", "published_at": "2026-04-08T11:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52cf7b3c1", "title": "Fixing the post-quantum SSH warning", "url": "https://brtkwr.com/posts/2026-04-08-post-quantum-ssh-with-ml-kem/", "published_at": "2026-04-08T09:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52d09820b", "title": "GCS uniform bucket access silently breaks project owner reads", "url": "https://brtkwr.com/posts/2026-04-02-gcs-uniform-bucket-access-breaks-project-owner-reads/", "published_at": "2026-04-02T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52d269b43", "title": "What we can all learn from the Claude Code source", "url": "https://brtkwr.com/posts/2026-04-01-what-we-can-all-learn-from-the-claude-code-source/", "published_at": "2026-04-01T09:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52de4edea", "title": "Migrating from kube-prometheus-stack to Google Managed Prometheus", "url": "https://brtkwr.com/posts/2026-03-27-migrating-from-kube-prometheus-stack-to-google-managed-prometheus/", "published_at": "2026-03-27T06:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52ea60ff1", "title": "Why VPA ignores single-replica pods", "url": "https://brtkwr.com/posts/2026-03-22-why-vpa-ignores-single-replica-pods/", "published_at": "2026-03-22T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52efca6f0", "title": "Getting my Apple Watch workout history into Garmin", "url": "https://brtkwr.com/posts/2026-03-21-converting-apple-health-workouts-to-garmin/", "published_at": "2026-03-21T15:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b52f6a4012", "title": "Fixing Spotlight Search for Applications on macOS", "url": "https://brtkwr.com/posts/2026-03-17-fixing-spotlight-search-for-applications-on-macos/", "published_at": "2026-03-17T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5300e8661", "title": "jj for Git Users: A Practical Walkthrough", "url": "https://brtkwr.com/posts/2026-03-08-jj-for-git-users/", "published_at": "2026-03-08T22:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5303c7dc1", "title": "Why Jetson Nano Still Matters in 2026", "url": "https://brtkwr.com/posts/2026-03-06-why-jetson-nano-still-matters-in-2026/", "published_at": "2026-03-06T15:55:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b530cfdb4e", "title": "Mutating webhooks and ghost affinity on StatefulSets", "url": "https://brtkwr.com/posts/2026-03-06-mutating-webhooks-and-ghost-affinity-on-statefulsets/", "published_at": "2026-03-06T09:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b531175921", "title": "Bulk cleaning stale git worktrees and branches", "url": "https://brtkwr.com/posts/2026-03-06-bulk-cleaning-stale-git-worktrees/", "published_at": "2026-03-06T05:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b531830299", "title": "Rewriting Git History with an LLM for Conventional Commits", "url": "https://brtkwr.com/posts/2026-03-02-rewriting-git-history-with-llm-conventional-commits/", "published_at": "2026-03-02T20:21:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5322ab3f0", "title": "Upgrading OpenClaw to Latest on Jetson Nano with Node 22", "url": "https://brtkwr.com/posts/2026-03-02-upgrading-openclaw-to-latest-node22-on-jetson-nano/", "published_at": "2026-03-02T06:45:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b532e3ad8c", "title": "Go containers and the OOM killer", "url": "https://brtkwr.com/posts/2026-02-24-go-containers-and-the-oom-killer/", "published_at": "2026-02-24T12:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b533d30d96", "title": "Stop re-running BigQuery queries when paginating", "url": "https://brtkwr.com/posts/2026-02-23-free-bigquery-pagination-with-job-reuse/", "published_at": "2026-02-23T22:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b534a6949e", "title": "Happy — controlling Claude Code from your phone", "url": "https://brtkwr.com/posts/2026-02-18-happy-controlling-claude-code-from-your-phone/", "published_at": "2026-02-18T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b535960dd7", "title": "How Cloudflare proxy mode silently breaks SendGrid email delivery", "url": "https://brtkwr.com/posts/2026-02-16-how-cloudflare-proxy-mode-silently-breaks-sendgrid-email-delivery/", "published_at": "2026-02-16T14:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5365fb830", "title": "Switching from Poetry to uv", "url": "https://brtkwr.com/posts/2026-02-15-switching-from-poetry-to-uv/", "published_at": "2026-02-15T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53753a9a1", "title": "Kubernetes health probes for stateful Python services", "url": "https://brtkwr.com/posts/2026-02-13-kubernetes-health-probes/", "published_at": "2026-02-13T14:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53802eb51", "title": "Fixing slow Docker builds on ephemeral CI runners", "url": "https://brtkwr.com/posts/2026-02-12-fixing-slow-docker-builds-on-ephemeral-ci-runners/", "published_at": "2026-02-12T22:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5386ed746", "title": "SSH fallback hosts with ProxyCommand", "url": "https://brtkwr.com/posts/2026-02-09-ssh-fallback-hosts-with-proxycommand/", "published_at": "2026-02-09T09:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b538e16a24", "title": "Installing OpenClaw on a Jetson Nano", "url": "https://brtkwr.com/posts/2026-02-08-installing-openclaw-on-jetson-nano/", "published_at": "2026-02-08T21:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b539ca1881", "title": "Fixing HDMI resolution on a Jetson Nano", "url": "https://brtkwr.com/posts/2026-02-08-fixing-hdmi-resolution-on-jetson-nano/", "published_at": "2026-02-08T20:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53ab9b09a", "title": "Running HPA and VPA together on Kubernetes", "url": "https://brtkwr.com/posts/2026-02-07-running-hpa-and-vpa-together-on-kubernetes/", "published_at": "2026-02-07T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53b91df4c", "title": "Batch updating files across GitHub repos without cloning", "url": "https://brtkwr.com/posts/2026-02-06-batch-updating-files-across-github-repos-without-cloning/", "published_at": "2026-02-06T14:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53c89d5b4", "title": "Pulling Twilio Usage Data into Google Sheets", "url": "https://brtkwr.com/posts/2026-02-04-twilio-usage-google-sheets-apps-script/", "published_at": "2026-02-04T09:45:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53cbb1690", "title": "Using Google Sheets API with gcloud ADC", "url": "https://brtkwr.com/posts/2026-02-04-google-sheets-api-with-gcloud-adc/", "published_at": "2026-02-04T09:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53cd0425d", "title": "Getting VPA resourcePolicy right in Helm charts", "url": "https://brtkwr.com/posts/2026-02-01-getting-vpa-resourcepolicy-right-in-helm-charts/", "published_at": "2026-02-01T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53da45879", "title": "gcloud auth application-default login for kubectl", "url": "https://brtkwr.com/posts/2026-01-30-gcloud-auth-application-default-login-for-kubectl/", "published_at": "2026-01-30T09:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53dd064ae", "title": "Pruning Claude Code conversation history", "url": "https://brtkwr.com/posts/2026-01-22-pruning-claude-code-conversation-history/", "published_at": "2026-01-22T09:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53e7fd3d3", "title": "Extracting Travel Data from macOS Photos Library", "url": "https://brtkwr.com/posts/2026-01-18-extract-travel-data-macos-photos/", "published_at": "2026-01-18T13:30:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53f29681e", "title": "Using Claude to free 200GB from a nearly full disk", "url": "https://brtkwr.com/posts/2026-01-18-using-claude-to-free-200gb-from-a-full-disk/", "published_at": "2026-01-18T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b53f7f58f8", "title": "Making bumpver play nice with uv", "url": "https://brtkwr.com/posts/2026-01-14-bumpver-with-uv/", "published_at": "2026-01-14T15:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b540398d56", "title": "Migrating from a GitHub bot user to a GitHub App", "url": "https://brtkwr.com/posts/2026-01-06-migrating-from-github-bot-user-to-github-app/", "published_at": "2026-01-06T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5410d28fb", "title": "CCS: Search for Claude Code conversations", "url": "https://brtkwr.com/posts/2026-01-05-ccs-fuzzy-finder-for-claude-code-conversations/", "published_at": "2026-01-05T00:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b54150d50a", "title": "My Neovim setup in 2025", "url": "https://brtkwr.com/posts/2025-12-28-my-neovim-setup/", "published_at": "2025-12-28T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5425076a6", "title": "Python tools I used in 2025", "url": "https://brtkwr.com/posts/2025-12-27-python-tools-i-used-in-2025/", "published_at": "2025-12-27T11:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b543232dd9", "title": "Kubernetes debugging in 2025", "url": "https://brtkwr.com/posts/2025-12-27-kubernetes-debugging-in-2025/", "published_at": "2025-12-27T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5436f9ae9", "title": "Developing Magento plugins on Kubernetes with git-sync", "url": "https://brtkwr.com/posts/2025-12-22-operating-magento-on-kubernetes/", "published_at": "2025-12-22T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5442b0b30", "title": "Deploying Magento to Kubernetes", "url": "https://brtkwr.com/posts/2025-12-18-deploying-magento-to-kubernetes/", "published_at": "2025-12-18T12:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5452180e0", "title": "Git worktree helper with fzf", "url": "https://brtkwr.com/posts/2025-12-17-git-worktree-fzf-helper/", "published_at": "2025-12-17T11:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b545aab7ff", "title": "Cleaning up Docker", "url": "https://brtkwr.com/posts/2025-12-16-cleaning-up-docker/", "published_at": "2025-12-16T09:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b545dca028", "title": "Deploying to Cloudflare Pages with wrangler", "url": "https://brtkwr.com/posts/2025-12-14-wrangler-for-cloudflare-pages/", "published_at": "2025-12-14T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b54690eb58", "title": "Silencing alerts properly in Alertmanager", "url": "https://brtkwr.com/posts/2025-12-10-alertmanager-silences/", "published_at": "2025-12-10T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b546bbc1d2", "title": "Fix gcloud PATH in shell", "url": "https://brtkwr.com/posts/2025-12-09-fix-gcloud-path-in-shell/", "published_at": "2025-12-09T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b547938ab6", "title": "OpenSSL certificate testing with SNI", "url": "https://brtkwr.com/posts/2025-12-04-openssl-certificate-testing-with-sni/", "published_at": "2025-12-04T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b547b3402f", "title": "GitHub PR commands with gh", "url": "https://brtkwr.com/posts/2025-12-01-gh-pr-commands/", "published_at": "2025-12-01T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b548102774", "title": "Advent of Code tips", "url": "https://brtkwr.com/posts/2025-12-01-advent-of-code-tips/", "published_at": "2025-12-01T06:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5486126fc", "title": "Accessing secrets in GKE", "url": "https://brtkwr.com/posts/2025-11-29-accessing-gcloud-secrets/", "published_at": "2025-11-29T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5487abfd4", "title": "Viewing Docker container logs", "url": "https://brtkwr.com/posts/2025-11-27-viewing-docker-container-logs/", "published_at": "2025-11-27T09:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b5496db6f1", "title": "Getting your public IP with curl", "url": "https://brtkwr.com/posts/2025-11-26-curl-ifconfig-for-public-ip/", "published_at": "2025-11-26T10:00:00+00:00" }, { "id": "01a08759-cdc3-7322-914b-00b54a505f90", "title": "PostgreSQL WAL monitoring", "url": "https://brtkwr.com/posts/2025-11-25-postgresql-wal-monitoring/", "published_at": "2025-11-25T14:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493c9df80eb7", "title": "Connecting to Cloud SQL with gcloud", "url": "https://brtkwr.com/posts/2025-11-25-connecting-to-cloud-sql-with-gcloud/", "published_at": "2025-11-25T11:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493c9ea8c9ad", "title": "Running local stacks with Docker Compose", "url": "https://brtkwr.com/posts/2025-11-24-running-local-stacks-with-docker-compose/", "published_at": "2025-11-24T16:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493c9edc27e1", "title": "Searching code across GitHub with gh", "url": "https://brtkwr.com/posts/2025-11-24-searching-code-across-github-with-gh/", "published_at": "2025-11-24T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493c9f3b6b31", "title": "Troubleshoot stuck ArgoCD syncs", "url": "https://brtkwr.com/posts/2025-11-20-force-and-troubleshoot-argocd-syncs/", "published_at": "2025-11-20T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493c9f4c4101", "title": "Web scraping with Selenium: quick setup", "url": "https://brtkwr.com/posts/2025-11-19-web-scraping-with-selenium-quick-setup/", "published_at": "2025-11-19T14:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca022f523", "title": "Cost-optimising GKE with ComputeClass", "url": "https://brtkwr.com/posts/2025-11-19-gke-computeclass-cost-optimisation/", "published_at": "2025-11-19T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca037d7ca", "title": "direnv Python path issues", "url": "https://brtkwr.com/posts/2025-11-19-direnv-python-path-issues/", "published_at": "2025-11-19T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca0bb74f4", "title": "Content Security Policy headers", "url": "https://brtkwr.com/posts/2025-11-18-content-security-policy-headers/", "published_at": "2025-11-18T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca0c3530a", "title": "pytest-asyncio mode configuration", "url": "https://brtkwr.com/posts/2025-11-17-pytest-asyncio-mode/", "published_at": "2025-11-17T14:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca1732e96", "title": "Pydantic v2 migration tips", "url": "https://brtkwr.com/posts/2025-11-17-pydantic-v2-migration-tips/", "published_at": "2025-11-17T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca20d2ec1", "title": "Migrating from Redocly to Docusaurus", "url": "https://brtkwr.com/posts/2025-11-12-docusaurus-setup/", "published_at": "2025-11-12T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca21f8e96", "title": "FastAPI patterns for production APIs", "url": "https://brtkwr.com/posts/2025-11-08-fastapi-patterns-for-production-apis/", "published_at": "2025-11-08T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca233fddc", "title": "GKE cluster autoscaler", "url": "https://brtkwr.com/posts/2025-10-21-gke-cluster-autoscaler/", "published_at": "2025-10-21T14:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca315f146", "title": "Sentry DSN configuration", "url": "https://brtkwr.com/posts/2025-10-21-sentry-dsn-configuration/", "published_at": "2025-10-21T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca411bba0", "title": "Debug Helm charts before deploy with helm template", "url": "https://brtkwr.com/posts/2025-10-17-debug-helm-charts-with-helm-template/", "published_at": "2025-10-17T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca4482ccc", "title": "Debugging Kubernetes HPA scaling", "url": "https://brtkwr.com/posts/2025-10-15-debugging-kubernetes-hpa-scaling/", "published_at": "2025-10-15T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca4facc40", "title": "Kubernetes tolerations and node selectors", "url": "https://brtkwr.com/posts/2025-10-12-kubernetes-tolerations/", "published_at": "2025-10-12T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca5f1cbd9", "title": "Querying GCP logs with gcloud", "url": "https://brtkwr.com/posts/2025-10-11-querying-gcp-logs-with-gcloud/", "published_at": "2025-10-11T10:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca6be5146", "title": "Keeping Homebrew packages up to date", "url": "https://brtkwr.com/posts/2025-10-10-brew-upgrade/", "published_at": "2025-10-10T16:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca7bc8683", "title": "Moving commits between branches with cherry-pick", "url": "https://brtkwr.com/posts/2025-10-10-git-cherry-pick/", "published_at": "2025-10-10T14:00:00+00:00" }, { "id": "01a08759-cdc4-739b-987c-493ca86f73e8", "title": "Replacing venv script workflows with uv run", "url": "https://brtkwr.com/posts/2025-10-10-replacing-venv-script-workflows-with-uv-run/", "published_at": "2025-10-10T09:00:00+00:00" } ] posts Claim your blog
Back to brtkwr.com
Blog · corpus.blog/blogs/brtkwr.com/posts

brtkwr.com

brtkwr.com

2026

2025