<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Home</title><description>Projects, notes, and articles from my work as a Software Engineer.</description><link>https://brianschiller.com/</link><item><title>prq: A tool for recycling worktrees</title><link>https://brianschiller.com/blog/2026/05/12/prq-tmux-worktrees/</link><guid isPermaLink="true">https://brianschiller.com/blog/2026/05/12/prq-tmux-worktrees/</guid><description>prq is a PR queue with warm worktrees and tmux notifications</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title>Time to Close the Windows</title><link>https://brianschiller.com/blog/2026/05/12/time-to-close-the-windows/</link><guid isPermaLink="true">https://brianschiller.com/blog/2026/05/12/time-to-close-the-windows/</guid><description>A vibe-coded script reminding me to close the windows as it gets warm is still useful after a year</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title>Libby Web Downloader</title><link>https://brianschiller.com/blog/2026/04/20/libby-web-downloader/</link><guid isPermaLink="true">https://brianschiller.com/blog/2026/04/20/libby-web-downloader/</guid><description>Download audiobooks from Libby to listen offline</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Stacked MRs with git branchless</title><link>https://brianschiller.com/blog/2026/02/15/git-branchless-stacked/</link><guid isPermaLink="true">https://brianschiller.com/blog/2026/02/15/git-branchless-stacked/</guid><description>Managing stacked Merge Requests with git branchless</description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Mark Generated Files with gitattributes</title><link>https://brianschiller.com/blog/2025/10/14/read-only-and-generated-files/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/10/14/read-only-and-generated-files/</guid><description>Mark files as generated for easier review in Github and Gitlab</description><pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate></item><item><title>AI Position Statement</title><link>https://brianschiller.com/blog/2025/10/05/ai-position-statement/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/10/05/ai-position-statement/</guid><description>My feelings about AI are complicated</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Claude techniques I like</title><link>https://brianschiller.com/blog/2025/10/05/claude-techniques-i-like/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/10/05/claude-techniques-i-like/</guid><description>A couple of simple techniques for getting better results from Claude Code</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Check that two types are the same in TypeScript</title><link>https://brianschiller.com/blog/2025/08/06/two-types-are-the-same/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/08/06/two-types-are-the-same/</guid><description>A TypeScript pattern for ensuring that two types are the same.</description><pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Commit Changeset</title><link>https://brianschiller.com/blog/2025/06/24/commit-changeset/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/06/24/commit-changeset/</guid><description>A git alias to use changeset descriptions as commit messages</description><pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Inferred Config for Nx Monorepos</title><link>https://brianschiller.com/blog/2025/06/04/inferred-nx-config/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/06/04/inferred-nx-config/</guid><description>Nx supports inferring tasks by looking at config files, but that&apos;s backwards. Better to infer the configs themselves.</description><pubDate>Wed, 04 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Privacy-preserving Analytics with Counterscale</title><link>https://brianschiller.com/blog/2025/03/08/analytics-with-counterscale/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/03/08/analytics-with-counterscale/</guid><description>Using self-hosted Counterscale to track page views on my blog</description><pubDate>Sat, 08 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Constraint Solving in Spreadsheets</title><link>https://brianschiller.com/blog/2025/02/11/constraint-solving-in-spreadsheets/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/02/11/constraint-solving-in-spreadsheets/</guid><description>Can we create a tool that allows users to specify constraints in a spreadsheet and then solve them?</description><pubDate>Tue, 11 Feb 2025 00:00:00 GMT</pubDate></item><item><title>The best Result type for TypeScript</title><link>https://brianschiller.com/blog/2025/02/07/the-best-ts-result/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/02/07/the-best-ts-result/</guid><description>Make Result types in TypeScript as ergonomic as Rust&apos;s ? operator</description><pubDate>Fri, 07 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Sync and Swim App</title><link>https://brianschiller.com/blog/2025/01/13/sync-and-swim-app/</link><guid isPermaLink="true">https://brianschiller.com/blog/2025/01/13/sync-and-swim-app/</guid><description>An app to load music and audiobooks onto Shokz OpenSwim headphones</description><pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate></item><item><title>sync-and-swim</title><link>https://brianschiller.com/projects/sync-and-swim/</link><guid isPermaLink="true">https://brianschiller.com/projects/sync-and-swim/</guid><pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Scheduling Conference Talks with Linear Programming</title><link>https://brianschiller.com/blog/2024/11/07/scheduling-conference-talks-lp/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/11/07/scheduling-conference-talks-lp/</guid><description>Schedule talks for a multi-track conference with an eye to avoiding conflicts</description><pubDate>Thu, 07 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Baby advice</title><link>https://brianschiller.com/blog/2024/11/03/baby-advice/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/11/03/baby-advice/</guid><description>What I wish I&apos;d known before having a baby</description><pubDate>Sun, 03 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Cross-platform dotfile Management with dotbot</title><link>https://brianschiller.com/blog/2024/08/05/cross-platform-dotbot/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/08/05/cross-platform-dotbot/</guid><description>Use dotbot to link your dotfiles to the right spots on macOS, Linux and Windows</description><pubDate>Mon, 05 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Neovim smart-splits on macOS</title><link>https://brianschiller.com/blog/2024/07/17/neovim-smart-splits-on-macos/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/07/17/neovim-smart-splits-on-macos/</guid><description>Setting up neovim smart-splits with kitty on macOS</description><pubDate>Wed, 17 Jul 2024 00:00:00 GMT</pubDate></item><item><title>Fix line breaks in comments with VS Code Rewrap</title><link>https://brianschiller.com/blog/2024/06/13/vscode-comment-wrapping/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/06/13/vscode-comment-wrapping/</guid><description>VS Code Rewrap is a handy extension for wrapping long comments in your code.</description><pubDate>Thu, 13 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Using Alpine.js with Astro View Transitions</title><link>https://brianschiller.com/blog/2024/05/03/alpinejs-with-astro/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/05/03/alpinejs-with-astro/</guid><description>Astro View Transitions can break Alpine.js components. Here&apos;s how to fix it.</description><pubDate>Fri, 03 May 2024 00:00:00 GMT</pubDate></item><item><title>JavaScript Package Development</title><link>https://brianschiller.com/blog/2024/04/29/js-package-dev/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/04/29/js-package-dev/</guid><description>Setting up a JavaScript package repo with multiple packages, TypeScript, testing, codegen, and automatic releases</description><pubDate>Mon, 29 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Solving the New York Times Letter Boxed Puzzle with Regular Expressions</title><link>https://brianschiller.com/blog/2024/04/20/letter-boxed-regex/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/04/20/letter-boxed-regex/</guid><description>Can we solve the Letter Boxed puzzle with a regex?</description><pubDate>Sat, 20 Apr 2024 00:00:00 GMT</pubDate></item><item><title>vitest-unsettled</title><link>https://brianschiller.com/projects/vitest-unsettled/</link><guid isPermaLink="true">https://brianschiller.com/projects/vitest-unsettled/</guid><description>Custom matcher for checking if a Promise is settled (either resolved or rejected).</description><pubDate>Sat, 20 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Behind the Scenes: How We Fixed Leftover Underlines in the Grammarly Text Editor Plugin</title><link>https://brianschiller.com/blog/2024/01/03/how-we-fixed-leftover-underlines-text-editor-plugin/</link><guid isPermaLink="true">https://brianschiller.com/blog/2024/01/03/how-we-fixed-leftover-underlines-text-editor-plugin/</guid><description>A look at the challenges faced by the Grammarly for Developers team when fixing a bug in the Grammarly Text Editor Plugin.</description><pubDate>Wed, 03 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Recover a Lost Commit Message</title><link>https://brianschiller.com/blog/2023/12/19/recover-commit-message/</link><guid isPermaLink="true">https://brianschiller.com/blog/2023/12/19/recover-commit-message/</guid><description>How to recover a lost git commit message</description><pubDate>Tue, 19 Dec 2023 00:00:00 GMT</pubDate></item><item><title>Swimming with Audiobooks</title><link>https://brianschiller.com/blog/2023/12/13/swimming-audiobooks/</link><guid isPermaLink="true">https://brianschiller.com/blog/2023/12/13/swimming-audiobooks/</guid><description>I&apos;ve been swimming a lot recently. I find swimming to be pretty boring, so I&apos;ve been listening to music with swim headphones to occupy my mind. A few weeks ago, my cheapo headphones were stolen from the side of the pool. To replace them, I bought some Shokz OpenSwim headphones. Wow, these are so much better.</description><pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate></item><item><title>Changesets vs Semantic Release</title><link>https://brianschiller.com/blog/2023/09/18/changesets-vs-semantic-release/</link><guid isPermaLink="true">https://brianschiller.com/blog/2023/09/18/changesets-vs-semantic-release/</guid><description>A comparison of two tools for managing version numbers and changelogs in a monorepo</description><pubDate>Mon, 18 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Contentful migration strategy</title><link>https://brianschiller.com/blog/2022/03/24/contentful-migrations/</link><guid isPermaLink="true">https://brianschiller.com/blog/2022/03/24/contentful-migrations/</guid><description>Contentful&apos;s migration strategy is lacking. Here&apos;s how I&apos;ve worked around it.</description><pubDate>Thu, 24 Mar 2022 00:00:00 GMT</pubDate></item><item><title>Raw SQL Array parameters in Rails</title><link>https://brianschiller.com/blog/2022/02/23/raw-sql-array-parameters-in-rails/</link><guid isPermaLink="true">https://brianschiller.com/blog/2022/02/23/raw-sql-array-parameters-in-rails/</guid><description>How to pass an array as a parameter to a raw SQL query in Rails</description><pubDate>Wed, 23 Feb 2022 00:00:00 GMT</pubDate></item><item><title>cpp-subprocess</title><link>https://brianschiller.com/projects/cpp-subprocess/</link><guid isPermaLink="true">https://brianschiller.com/projects/cpp-subprocess/</guid><description>A C++ library for safely invoking external commands and pipelines.</description><pubDate>Wed, 17 Nov 2021 00:00:00 GMT</pubDate></item><item><title>Alpine.js vs Stimulus</title><link>https://brianschiller.com/blog/2021/11/05/alpine-stimulus-js/</link><guid isPermaLink="true">https://brianschiller.com/blog/2021/11/05/alpine-stimulus-js/</guid><description>A comparison of Alpine.js and Stimulus.js for adding interactivity to server-rendered pages (Alpine.js wins IMO).</description><pubDate>Fri, 05 Nov 2021 00:00:00 GMT</pubDate></item><item><title>Avoiding CORS with a proxy</title><link>https://brianschiller.com/blog/2021/10/01/avoiding-cors-with-a-proxy/</link><guid isPermaLink="true">https://brianschiller.com/blog/2021/10/01/avoiding-cors-with-a-proxy/</guid><description>How to avoid CORS restrictions by setting up a proxy with AWS Cloudfront</description><pubDate>Fri, 01 Oct 2021 00:00:00 GMT</pubDate></item><item><title>Clipbox for S3</title><link>https://brianschiller.com/blog/2021/08/29/linux-clipbox/</link><guid isPermaLink="true">https://brianschiller.com/blog/2021/08/29/linux-clipbox/</guid><description>Clipbox is a little utility that I&apos;ve been using in some form or another for years. It is a utility that provides a keyboard shortcut to select a region of the screen, upload the screenshot to a server, and put a link to the image on your clipboard.</description><pubDate>Sun, 29 Aug 2021 00:00:00 GMT</pubDate></item><item><title>Aurora Serverless DB Export</title><link>https://brianschiller.com/blog/2021/05/20/aurora-serverless-db-export/</link><guid isPermaLink="true">https://brianschiller.com/blog/2021/05/20/aurora-serverless-db-export/</guid><description>Save a snapshot of an Aurora Serverless database to an S3 bucket</description><pubDate>Thu, 08 Jul 2021 00:00:00 GMT</pubDate></item><item><title>DB Export for Datalake</title><link>https://brianschiller.com/blog/2021/07/08/serverless-db-export/</link><guid isPermaLink="true">https://brianschiller.com/blog/2021/07/08/serverless-db-export/</guid><description>Solving a difficult problem with Aurora Serverless</description><pubDate>Thu, 08 Jul 2021 00:00:00 GMT</pubDate></item><item><title>Readable Bash Scripts</title><link>https://brianschiller.com/blog/2021/01/07/readable-bash-scripts/</link><guid isPermaLink="true">https://brianschiller.com/blog/2021/01/07/readable-bash-scripts/</guid><description>A technique for breaking bash pipelines into smaller, more easily debuggable pieces.</description><pubDate>Thu, 07 Jan 2021 00:00:00 GMT</pubDate></item><item><title>Vue Browser Extensions with Parcel</title><link>https://brianschiller.com/blog/2020/11/17/vue-parcel-web-extension/</link><guid isPermaLink="true">https://brianschiller.com/blog/2020/11/17/vue-parcel-web-extension/</guid><description>Use parcel to build a browser extension with Vue</description><pubDate>Tue, 17 Nov 2020 00:00:00 GMT</pubDate></item><item><title>backsplash</title><link>https://brianschiller.com/projects/backsplash/</link><guid isPermaLink="true">https://brianschiller.com/projects/backsplash/</guid><description>Convert between lat-lng, web mercator tiles, and pixel coordinates.</description><pubDate>Fri, 08 May 2020 00:00:00 GMT</pubDate></item><item><title>I was Promised Pizza</title><link>https://brianschiller.com/blog/2020/01/01/promised-pizza/</link><guid isPermaLink="true">https://brianschiller.com/blog/2020/01/01/promised-pizza/</guid><description>A coworker had a question about combining the values from multiple javascript Promises. I&apos;ve tried to cull the interesting Promise construction out of the original problem, and came up with an example about pizza.</description><pubDate>Wed, 01 Jan 2020 00:00:00 GMT</pubDate></item><item><title>Writing an Implementation Plan</title><link>https://brianschiller.com/blog/2019/12/30/writing-implementation-plan/</link><guid isPermaLink="true">https://brianschiller.com/blog/2019/12/30/writing-implementation-plan/</guid><description>A technique for getting work done in the face of overwhelming challenges.</description><pubDate>Mon, 30 Dec 2019 00:00:00 GMT</pubDate></item><item><title>A Tale of Two Sorted Lists: Comparing Inheritance and Composition</title><link>https://brianschiller.com/blog/2019/05/03/two-sorted-lists/</link><guid isPermaLink="true">https://brianschiller.com/blog/2019/05/03/two-sorted-lists/</guid><description>We&apos;ll explore two different approaches to solving the same problem: Inheritance and Composition. At first glance, the Inheritance example looks more correct and is a bit shorter. I want to convince you that the Composition approach is more correct.</description><pubDate>Fri, 03 May 2019 00:00:00 GMT</pubDate></item><item><title>superdelegate</title><link>https://brianschiller.com/projects/superdelegate/</link><guid isPermaLink="true">https://brianschiller.com/projects/superdelegate/</guid><pubDate>Thu, 02 May 2019 00:00:00 GMT</pubDate></item><item><title>alfred-clipbox</title><link>https://brianschiller.com/projects/alfred-clipbox/</link><guid isPermaLink="true">https://brianschiller.com/projects/alfred-clipbox/</guid><pubDate>Sun, 03 Feb 2019 00:00:00 GMT</pubDate></item><item><title>inspect.macro</title><link>https://brianschiller.com/projects/inspectmacro/</link><guid isPermaLink="true">https://brianschiller.com/projects/inspectmacro/</guid><pubDate>Sun, 03 Feb 2019 00:00:00 GMT</pubDate></item><item><title>Scheduling a Medical Residency using Python</title><link>https://brianschiller.com/blog/2019/01/26/residency-scheduling/</link><guid isPermaLink="true">https://brianschiller.com/blog/2019/01/26/residency-scheduling/</guid><description>Using linear programming to schedule a medical residency program</description><pubDate>Sat, 26 Jan 2019 00:00:00 GMT</pubDate></item><item><title>Migrating an ASP Web App to .NET Core</title><link>https://brianschiller.com/blog/2018/12/12/asp-dotnet-core-migration/</link><guid isPermaLink="true">https://brianschiller.com/blog/2018/12/12/asp-dotnet-core-migration/</guid><description>Migrating a small ASP.NET web api from .NET Framework 4.6 to .NET Core.</description><pubDate>Wed, 12 Dec 2018 00:00:00 GMT</pubDate></item><item><title>Vanquishing CORS with CloudFront and Lambda@Edge</title><link>https://brianschiller.com/blog/2018/12/03/vanquishing-cors-cloudfront/</link><guid isPermaLink="true">https://brianschiller.com/blog/2018/12/03/vanquishing-cors-cloudfront/</guid><description>Using CloudFront to host a single-page web app and avoid CORS issues</description><pubDate>Mon, 03 Dec 2018 00:00:00 GMT</pubDate></item><item><title>vue-await</title><link>https://brianschiller.com/projects/vue-await/</link><guid isPermaLink="true">https://brianschiller.com/projects/vue-await/</guid><pubDate>Tue, 27 Nov 2018 00:00:00 GMT</pubDate></item><item><title>Programming on MacOS in 2018</title><link>https://brianschiller.com/blog/2018/11/03/programming-on-macos/</link><guid isPermaLink="true">https://brianschiller.com/blog/2018/11/03/programming-on-macos/</guid><description>A list of software I find useful for programming on MacOS, circa 2018.</description><pubDate>Sat, 03 Nov 2018 00:00:00 GMT</pubDate></item><item><title>A Cloudfront Mystery</title><link>https://brianschiller.com/blog/2018/10/24/cloudfront-host-header/</link><guid isPermaLink="true">https://brianschiller.com/blog/2018/10/24/cloudfront-host-header/</guid><description>A detective story of debugging a Cloudfront 502 error</description><pubDate>Wed, 24 Oct 2018 00:00:00 GMT</pubDate></item><item><title>citrus</title><link>https://brianschiller.com/projects/citrus/</link><guid isPermaLink="true">https://brianschiller.com/projects/citrus/</guid><pubDate>Sat, 02 Jun 2018 00:00:00 GMT</pubDate></item><item><title>floorspace.js</title><link>https://brianschiller.com/projects/floorspace-js/</link><guid isPermaLink="true">https://brianschiller.com/projects/floorspace-js/</guid><pubDate>Sat, 10 Feb 2018 00:00:00 GMT</pubDate></item><item><title>Mongo Schemas with Pokemon</title><link>https://brianschiller.com/blog/2018/01/03/pokemon-mongo-schemer/</link><guid isPermaLink="true">https://brianschiller.com/blog/2018/01/03/pokemon-mongo-schemer/</guid><description>Using JSON Schema to validate pokemon documents in MongoDB.</description><pubDate>Wed, 03 Jan 2018 00:00:00 GMT</pubDate></item><item><title>Copy on Read with ES6 Proxy</title><link>https://brianschiller.com/blog/2017/12/07/copy-on-read-js-proxy/</link><guid isPermaLink="true">https://brianschiller.com/blog/2017/12/07/copy-on-read-js-proxy/</guid><description>Using a Proxy object to enforce making a deep copy of default values on read.</description><pubDate>Thu, 07 Dec 2017 00:00:00 GMT</pubDate></item><item><title>d3 Event Issues</title><link>https://brianschiller.com/blog/2017/09/28/d3-event-issues/</link><guid isPermaLink="true">https://brianschiller.com/blog/2017/09/28/d3-event-issues/</guid><description>A detective story tracking down why d3.event was null in a throttled function.</description><pubDate>Thu, 28 Sep 2017 00:00:00 GMT</pubDate></item><item><title>Inline SVG styles</title><link>https://brianschiller.com/blog/2017/09/26/inline-svg-styles/</link><guid isPermaLink="true">https://brianschiller.com/blog/2017/09/26/inline-svg-styles/</guid><description>A quick script to inline styles in SVGs</description><pubDate>Tue, 26 Sep 2017 00:00:00 GMT</pubDate></item><item><title>Python-style Context Managers in JavaScript</title><link>https://brianschiller.com/blog/2017/09/20/python-style-context-managers-in-js/</link><guid isPermaLink="true">https://brianschiller.com/blog/2017/09/20/python-style-context-managers-in-js/</guid><description>Python&apos;s context managers are a great feature. Here&apos;s how to approximate them in JavaScript.</description><pubDate>Wed, 20 Sep 2017 00:00:00 GMT</pubDate></item><item><title>winnow</title><link>https://brianschiller.com/projects/winnow/</link><guid isPermaLink="true">https://brianschiller.com/projects/winnow/</guid><pubDate>Sat, 20 May 2017 00:00:00 GMT</pubDate></item><item><title>Migrating a Primary Key to Bigint</title><link>https://brianschiller.com/blog/2017/03/23/django-migrate-to-bigint/</link><guid isPermaLink="true">https://brianschiller.com/blog/2017/03/23/django-migrate-to-bigint/</guid><description>High volume tables can run out of ids. Here&apos;s how to convert a Django model&apos;s primary key to a bigint.</description><pubDate>Thu, 23 Mar 2017 00:00:00 GMT</pubDate></item><item><title>Django Migrations Tribulations</title><link>https://brianschiller.com/blog/2017/03/22/django-migrations/</link><guid isPermaLink="true">https://brianschiller.com/blog/2017/03/22/django-migrations/</guid><description>Ensuring merge migrations are unique in Django</description><pubDate>Wed, 22 Mar 2017 00:00:00 GMT</pubDate></item><item><title>Setting up GNU pass with Alfred</title><link>https://brianschiller.com/blog/2016/08/31/gnu-pass-alfred/</link><guid isPermaLink="true">https://brianschiller.com/blog/2016/08/31/gnu-pass-alfred/</guid><description>How to set up pass, the open source password manager, with Alfred on OSX</description><pubDate>Wed, 31 Aug 2016 00:00:00 GMT</pubDate></item><item><title>Meddlesome Decorators</title><link>https://brianschiller.com/blog/2016/03/31/meddlesome-decorators/</link><guid isPermaLink="true">https://brianschiller.com/blog/2016/03/31/meddlesome-decorators/</guid><description>When your decorators want to meddle with the function&apos;s arguments, things can get tricky. Here&apos;s a pattern for writing decorators that need to access the function&apos;s arguments.</description><pubDate>Thu, 31 Mar 2016 00:00:00 GMT</pubDate></item><item><title>Facebook Messages Auto-reply</title><link>https://brianschiller.com/blog/2016/03/15/fb-messages-auto-reply/</link><guid isPermaLink="true">https://brianschiller.com/blog/2016/03/15/fb-messages-auto-reply/</guid><description>Use selenium to check for unread Facebook messages and send a reply</description><pubDate>Tue, 15 Mar 2016 00:00:00 GMT</pubDate></item><item><title>postgres-kernel</title><link>https://brianschiller.com/projects/postgres-kernel/</link><guid isPermaLink="true">https://brianschiller.com/projects/postgres-kernel/</guid><pubDate>Wed, 15 Jul 2015 00:00:00 GMT</pubDate></item><item><title>Postgres Advisory Locks</title><link>https://brianschiller.com/blog/2015/07/02/postgres-advisory-locks/</link><guid isPermaLink="true">https://brianschiller.com/blog/2015/07/02/postgres-advisory-locks/</guid><description>Acquire and release postgres advisory locks from python with a decorator</description><pubDate>Thu, 02 Jul 2015 00:00:00 GMT</pubDate></item><item><title>Decorators without the Magic</title><link>https://brianschiller.com/blog/2015/02/01/decorators-without-magic/</link><guid isPermaLink="true">https://brianschiller.com/blog/2015/02/01/decorators-without-magic/</guid><description>Decorators look like magic when you first see them, but they don’t feel like something mere mortals could write. We’ll go through some examples of exactly how they work (without the scary &lt;code&gt;@&lt;/code&gt; syntax), and why they are a nice pattern for writing elegant, easy to understand code.</description><pubDate>Sun, 01 Feb 2015 00:00:00 GMT</pubDate></item><item><title>Pair Programming with wemux and ngrok</title><link>https://brianschiller.com/blog/2014/07/18/pair-programming-wemux/</link><guid isPermaLink="true">https://brianschiller.com/blog/2014/07/18/pair-programming-wemux/</guid><description>Share your terminal with friends!</description><pubDate>Fri, 18 Jul 2014 00:00:00 GMT</pubDate></item><item><title>Where&apos;s the Facebook app?</title><link>https://brianschiller.com/blog/2014/03/07/facebook-app/</link><guid isPermaLink="true">https://brianschiller.com/blog/2014/03/07/facebook-app/</guid><description>Disappointed by the lack of an official Facebook app for your Mac? Make your own! (download provided for the lazy)</description><pubDate>Fri, 07 Mar 2014 00:00:00 GMT</pubDate></item><item><title>Event Triggered Averages Tutorial</title><link>https://brianschiller.com/blog/2014/02/28/event-triggered-average-tutorial/</link><guid isPermaLink="true">https://brianschiller.com/blog/2014/02/28/event-triggered-average-tutorial/</guid><description>Event-triggered averages, also known as Peristimulus Time Histograms (PETHs) are a method of analysis commonly used in neuroscience, but also in the finance industry and others.</description><pubDate>Fri, 28 Feb 2014 00:00:00 GMT</pubDate></item><item><title>pthreads and PRNGs, oh my!</title><link>https://brianschiller.com/blog/2013/12/12/pthreads-and-prngs-oh-my/</link><guid isPermaLink="true">https://brianschiller.com/blog/2013/12/12/pthreads-and-prngs-oh-my/</guid><description>Professors teaching Concurrency classes are fond of saying that when there is a race condition in your code, anything can happen. But can it?</description><pubDate>Thu, 12 Dec 2013 00:00:00 GMT</pubDate></item><item><title>Grading on a Curve</title><link>https://brianschiller.com/blog/2013/11/10/grading-curve/</link><guid isPermaLink="true">https://brianschiller.com/blog/2013/11/10/grading-curve/</guid><description>Everyone&apos;s happy to hear that a test will be curved, but what does that even mean?</description><pubDate>Sun, 10 Nov 2013 00:00:00 GMT</pubDate></item><item><title>latex-therefore</title><link>https://brianschiller.com/projects/latex-therefore/</link><guid isPermaLink="true">https://brianschiller.com/projects/latex-therefore/</guid><pubDate>Wed, 09 Oct 2013 00:00:00 GMT</pubDate></item><item><title>Putnam Boxes and Balls</title><link>https://brianschiller.com/blog/2013/09/19/putnam-boxes/</link><guid isPermaLink="true">https://brianschiller.com/blog/2013/09/19/putnam-boxes/</guid><description>Every December, undergrads across the country take the Putnam Exam, regarded as one of the toughest math competitions around. This is a walkthrough of a problem from the 2010 test.</description><pubDate>Thu, 19 Sep 2013 00:00:00 GMT</pubDate></item><item><title>Muggles and Base Two</title><link>https://brianschiller.com/blog/2013/08/31/muggles-base-two/</link><guid isPermaLink="true">https://brianschiller.com/blog/2013/08/31/muggles-base-two/</guid><description>You can be half muggle, quarter muggle, or even 13/16 muggle. But can you be 1/3 muggle?</description><pubDate>Sat, 31 Aug 2013 00:00:00 GMT</pubDate></item><item><title>LaTeX Therefore package</title><link>https://brianschiller.com/blog/2013/06/21/latex-therefore/</link><guid isPermaLink="true">https://brianschiller.com/blog/2013/06/21/latex-therefore/</guid><description>This LaTeX package alleviates the constant struggle in mathematical writing of finding synonyms for &apos;therefore&apos;.</description><pubDate>Fri, 21 Jun 2013 00:00:00 GMT</pubDate></item><item><title>Minishell</title><link>https://brianschiller.com/blog/2012/06/01/minishell/</link><guid isPermaLink="true">https://brianschiller.com/blog/2012/06/01/minishell/</guid><description>As part of the UNIX Systems class at WWU, each student makes a basic shell program, msh.</description><pubDate>Fri, 01 Jun 2012 00:00:00 GMT</pubDate></item><item><title>LaTeX Class</title><link>https://brianschiller.com/blog/2011/09/01/latex-class/</link><guid isPermaLink="true">https://brianschiller.com/blog/2011/09/01/latex-class/</guid><description>LaTeX is a markup language that&apos;s particularly useful for typesetting mathematics. When I was at WWU, I taught a 1.5 hour class covering the basics.</description><pubDate>Wed, 28 Sep 2011 00:00:00 GMT</pubDate></item></channel></rss>