41554 blogs · [ { "id": "01a08759-491a-7181-86d0-22a1c4d5ba23", "title": "Claude's Smoking Gun", "url": "https://brianschiller.com/blog/2026/08/19/claudes-smoking-gun/", "published_at": "2026-08-19T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c4fc7324", "title": "prq: A tool for recycling worktrees", "url": "https://brianschiller.com/blog/2026/05/12/prq-tmux-worktrees/", "published_at": "2026-05-12T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c59c0dc0", "title": "Time to Close the Windows", "url": "https://brianschiller.com/blog/2026/05/12/time-to-close-the-windows/", "published_at": "2026-05-12T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c67f8100", "title": "Libby Web Downloader", "url": "https://brianschiller.com/blog/2026/04/20/libby-web-downloader/", "published_at": "2026-03-20T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c719007e", "title": "Stacked MRs with git branchless", "url": "https://brianschiller.com/blog/2026/02/15/git-branchless-stacked/", "published_at": "2026-02-13T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c7b922b4", "title": "Mark Generated Files with gitattributes", "url": "https://brianschiller.com/blog/2025/10/14/read-only-and-generated-files/", "published_at": "2025-10-14T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c7ef2a41", "title": "AI Position Statement", "url": "https://brianschiller.com/blog/2025/10/05/ai-position-statement/", "published_at": "2025-10-05T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c87b4f31", "title": "Claude techniques I like", "url": "https://brianschiller.com/blog/2025/10/05/claude-techniques-i-like/", "published_at": "2025-10-05T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c8d64a6d", "title": "Check that two types are the same in TypeScript", "url": "https://brianschiller.com/blog/2025/08/06/two-types-are-the-same/", "published_at": "2025-08-06T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c8e7a932", "title": "Commit Changeset", "url": "https://brianschiller.com/blog/2025/06/24/commit-changeset/", "published_at": "2025-06-24T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c985691d", "title": "Inferred Config for Nx Monorepos", "url": "https://brianschiller.com/blog/2025/06/04/inferred-nx-config/", "published_at": "2025-06-04T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1c9a831b0", "title": "Privacy-preserving Analytics with Counterscale", "url": "https://brianschiller.com/blog/2025/03/08/analytics-with-counterscale/", "published_at": "2025-03-08T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1caa07d33", "title": "Constraint Solving in Spreadsheets", "url": "https://brianschiller.com/blog/2025/02/11/constraint-solving-in-spreadsheets/", "published_at": "2025-02-11T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cabaa20b", "title": "The best Result type for TypeScript", "url": "https://brianschiller.com/blog/2025/02/07/the-best-ts-result/", "published_at": "2025-02-07T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cb46a12c", "title": "Sync and Swim App", "url": "https://brianschiller.com/blog/2025/01/13/sync-and-swim-app/", "published_at": "2025-01-13T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cc37f1ac", "title": "sync-and-swim", "url": "https://brianschiller.com/projects/sync-and-swim/", "published_at": "2025-01-13T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1ccbee27f", "title": "Scheduling Conference Talks with Linear Programming", "url": "https://brianschiller.com/blog/2024/11/07/scheduling-conference-talks-lp/", "published_at": "2024-11-07T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cd1f83b5", "title": "Baby advice", "url": "https://brianschiller.com/blog/2024/11/03/baby-advice/", "published_at": "2024-11-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cdb5da3f", "title": "Cross-platform dotfile Management with dotbot", "url": "https://brianschiller.com/blog/2024/08/05/cross-platform-dotbot/", "published_at": "2024-08-05T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1ce27d732", "title": "Neovim smart-splits on macOS", "url": "https://brianschiller.com/blog/2024/07/17/neovim-smart-splits-on-macos/", "published_at": "2024-07-17T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1ce94467f", "title": "Fix line breaks in comments with VS Code Rewrap", "url": "https://brianschiller.com/blog/2024/06/13/vscode-comment-wrapping/", "published_at": "2024-06-13T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cf87dae4", "title": "Using Alpine.js with Astro View Transitions", "url": "https://brianschiller.com/blog/2024/05/03/alpinejs-with-astro/", "published_at": "2024-05-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1cfa8e037", "title": "JavaScript Package Development", "url": "https://brianschiller.com/blog/2024/04/29/js-package-dev/", "published_at": "2024-04-29T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d02c8469", "title": "Solving the New York Times Letter Boxed Puzzle with Regular Expressions", "url": "https://brianschiller.com/blog/2024/04/20/letter-boxed-regex/", "published_at": "2024-04-20T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d0ef0a7d", "title": "vitest-unsettled", "url": "https://brianschiller.com/projects/vitest-unsettled/", "published_at": "2024-04-20T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d1846e02", "title": "Behind the Scenes: How We Fixed Leftover Underlines in the Grammarly Text Editor Plugin", "url": "https://brianschiller.com/blog/2024/01/03/how-we-fixed-leftover-underlines-text-editor-plugin/", "published_at": "2024-01-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d1ffd91a", "title": "Recover a Lost Commit Message", "url": "https://brianschiller.com/blog/2023/12/19/recover-commit-message/", "published_at": "2023-12-19T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d2289f0c", "title": "Swimming with Audiobooks", "url": "https://brianschiller.com/blog/2023/12/13/swimming-audiobooks/", "published_at": "2023-12-13T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d2e5a109", "title": "Changesets vs Semantic Release", "url": "https://brianschiller.com/blog/2023/09/18/changesets-vs-semantic-release/", "published_at": "2023-09-18T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d3673099", "title": "Contentful migration strategy", "url": "https://brianschiller.com/blog/2022/03/24/contentful-migrations/", "published_at": "2022-03-24T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d3e42b0a", "title": "Raw SQL Array parameters in Rails", "url": "https://brianschiller.com/blog/2022/02/23/raw-sql-array-parameters-in-rails/", "published_at": "2022-02-23T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d46626b3", "title": "cpp-subprocess", "url": "https://brianschiller.com/projects/cpp-subprocess/", "published_at": "2021-11-17T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d52ef244", "title": "Alpine.js vs Stimulus", "url": "https://brianschiller.com/blog/2021/11/05/alpine-stimulus-js/", "published_at": "2021-11-05T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d5b4fe38", "title": "Avoiding CORS with a proxy", "url": "https://brianschiller.com/blog/2021/10/01/avoiding-cors-with-a-proxy/", "published_at": "2021-10-01T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d607d010", "title": "Clipbox for S3", "url": "https://brianschiller.com/blog/2021/08/29/linux-clipbox/", "published_at": "2021-08-29T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d6dafa37", "title": "Aurora Serverless DB Export", "url": "https://brianschiller.com/blog/2021/05/20/aurora-serverless-db-export/", "published_at": "2021-07-08T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d76aee35", "title": "DB Export for Datalake", "url": "https://brianschiller.com/blog/2021/07/08/serverless-db-export/", "published_at": "2021-07-08T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d7cec0cd", "title": "Readable Bash Scripts", "url": "https://brianschiller.com/blog/2021/01/07/readable-bash-scripts/", "published_at": "2021-01-07T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d890cd26", "title": "Vue Browser Extensions with Parcel", "url": "https://brianschiller.com/blog/2020/11/17/vue-parcel-web-extension/", "published_at": "2020-11-17T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d8a0db4a", "title": "backsplash", "url": "https://brianschiller.com/projects/backsplash/", "published_at": "2020-05-08T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d8c3f0a4", "title": "I was Promised Pizza", "url": "https://brianschiller.com/blog/2020/01/01/promised-pizza/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d8c8302c", "title": "Writing an Implementation Plan", "url": "https://brianschiller.com/blog/2019/12/30/writing-implementation-plan/", "published_at": "2019-12-30T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d8c86d75", "title": "A Tale of Two Sorted Lists: Comparing Inheritance and Composition", "url": "https://brianschiller.com/blog/2019/05/03/two-sorted-lists/", "published_at": "2019-05-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d8d6892e", "title": "superdelegate", "url": "https://brianschiller.com/projects/superdelegate/", "published_at": "2019-05-02T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d98ca9d6", "title": "alfred-clipbox", "url": "https://brianschiller.com/projects/alfred-clipbox/", "published_at": "2019-02-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1d9a2ad45", "title": "inspect.macro", "url": "https://brianschiller.com/projects/inspectmacro/", "published_at": "2019-02-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1da86db01", "title": "Scheduling a Medical Residency using Python", "url": "https://brianschiller.com/blog/2019/01/26/residency-scheduling/", "published_at": "2019-01-26T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1db1fcbcc", "title": "Migrating an ASP Web App to .NET Core", "url": "https://brianschiller.com/blog/2018/12/12/asp-dotnet-core-migration/", "published_at": "2018-12-12T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1dbf03644", "title": "Vanquishing CORS with CloudFront and Lambda@Edge", "url": "https://brianschiller.com/blog/2018/12/03/vanquishing-cors-cloudfront/", "published_at": "2018-12-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1dce979ec", "title": "vue-await", "url": "https://brianschiller.com/projects/vue-await/", "published_at": "2018-11-27T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1dd411686", "title": "Programming on MacOS in 2018", "url": "https://brianschiller.com/blog/2018/11/03/programming-on-macos/", "published_at": "2018-11-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1dd814bbc", "title": "A Cloudfront Mystery", "url": "https://brianschiller.com/blog/2018/10/24/cloudfront-host-header/", "published_at": "2018-10-24T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1de58db24", "title": "citrus", "url": "https://brianschiller.com/projects/citrus/", "published_at": "2018-06-02T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1de619ec6", "title": "floorspace.js", "url": "https://brianschiller.com/projects/floorspace-js/", "published_at": "2018-02-10T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1de96c620", "title": "Mongo Schemas with Pokemon", "url": "https://brianschiller.com/blog/2018/01/03/pokemon-mongo-schemer/", "published_at": "2018-01-03T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1df543cce", "title": "Copy on Read with ES6 Proxy", "url": "https://brianschiller.com/blog/2017/12/07/copy-on-read-js-proxy/", "published_at": "2017-12-07T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1df688ac3", "title": "d3 Event Issues", "url": "https://brianschiller.com/blog/2017/09/28/d3-event-issues/", "published_at": "2017-09-28T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1dfd6eaee", "title": "Inline SVG styles", "url": "https://brianschiller.com/blog/2017/09/26/inline-svg-styles/", "published_at": "2017-09-26T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e01df104", "title": "Python-style Context Managers in JavaScript", "url": "https://brianschiller.com/blog/2017/09/20/python-style-context-managers-in-js/", "published_at": "2017-09-20T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e041e77a", "title": "winnow", "url": "https://brianschiller.com/projects/winnow/", "published_at": "2017-05-20T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e0f00b2c", "title": "Migrating a Primary Key to Bigint", "url": "https://brianschiller.com/blog/2017/03/23/django-migrate-to-bigint/", "published_at": "2017-03-23T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e1903c0a", "title": "Django Migrations Tribulations", "url": "https://brianschiller.com/blog/2017/03/22/django-migrations/", "published_at": "2017-03-22T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e23c7429", "title": "Setting up GNU pass with Alfred", "url": "https://brianschiller.com/blog/2016/08/31/gnu-pass-alfred/", "published_at": "2016-08-31T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e2567672", "title": "Meddlesome Decorators", "url": "https://brianschiller.com/blog/2016/03/31/meddlesome-decorators/", "published_at": "2016-03-31T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e3357a76", "title": "Facebook Messages Auto-reply", "url": "https://brianschiller.com/blog/2016/03/15/fb-messages-auto-reply/", "published_at": "2016-03-15T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e3e9e4bd", "title": "postgres-kernel", "url": "https://brianschiller.com/projects/postgres-kernel/", "published_at": "2015-07-15T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e4d20792", "title": "Postgres Advisory Locks", "url": "https://brianschiller.com/blog/2015/07/02/postgres-advisory-locks/", "published_at": "2015-07-02T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e4d7dfb0", "title": "Decorators without the Magic", "url": "https://brianschiller.com/blog/2015/02/01/decorators-without-magic/", "published_at": "2015-02-01T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e52bafc0", "title": "Pair Programming with wemux and ngrok", "url": "https://brianschiller.com/blog/2014/07/18/pair-programming-wemux/", "published_at": "2014-07-18T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e5caf823", "title": "Where's the Facebook app?", "url": "https://brianschiller.com/blog/2014/03/07/facebook-app/", "published_at": "2014-03-07T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e64b1480", "title": "Event Triggered Averages Tutorial", "url": "https://brianschiller.com/blog/2014/02/28/event-triggered-average-tutorial/", "published_at": "2014-02-28T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e68ad896", "title": "pthreads and PRNGs, oh my!", "url": "https://brianschiller.com/blog/2013/12/12/pthreads-and-prngs-oh-my/", "published_at": "2013-12-12T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e702218b", "title": "Grading on a Curve", "url": "https://brianschiller.com/blog/2013/11/10/grading-curve/", "published_at": "2013-11-10T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e77f48d7", "title": "latex-therefore", "url": "https://brianschiller.com/projects/latex-therefore/", "published_at": "2013-10-09T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e7daae82", "title": "Putnam Boxes and Balls", "url": "https://brianschiller.com/blog/2013/09/19/putnam-boxes/", "published_at": "2013-09-19T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e858811f", "title": "Muggles and Base Two", "url": "https://brianschiller.com/blog/2013/08/31/muggles-base-two/", "published_at": "2013-08-31T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e9131453", "title": "LaTeX Therefore package", "url": "https://brianschiller.com/blog/2013/06/21/latex-therefore/", "published_at": "2013-06-21T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e944913f", "title": "Minishell", "url": "https://brianschiller.com/blog/2012/06/01/minishell/", "published_at": "2012-06-01T00:00:00+00:00" }, { "id": "01a08759-491a-7181-86d0-22a1e9b39d9b", "title": "LaTeX Class", "url": "https://brianschiller.com/blog/2011/09/01/latex-class/", "published_at": "2011-09-28T00:00:00+00:00" } ] posts Claim your blog
Back to brianschiller.com
Blog · corpus.blog/blogs/brianschiller.com/posts

brianschiller.com

brianschiller.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011