41554 blogs · [ { "id": "01a087be-9684-704e-916b-7ef41c500115", "title": "Stow", "url": "https://pbrisbin.com/posts/stow/", "published_at": "2025-10-10T16:28:45+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b5f8f0e1", "title": "URI Encoding", "url": "https://pbrisbin.com/posts/uri-encoding/", "published_at": "2025-09-22T15:50:32+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b680e5f4", "title": "Codeberg", "url": "https://pbrisbin.com/posts/codeberg/", "published_at": "2025-09-15T18:31:09+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b6a9e83f", "title": "Setup Actions Don't Scale", "url": "https://pbrisbin.com/posts/setup-tool-action/", "published_at": "2022-12-07T22:28:54+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b6fd8ae7", "title": "Endo Configo", "url": "https://pbrisbin.com/posts/endo-configo/", "published_at": "2022-08-01T19:39:53+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b7f6f465", "title": "Haskell Coverage Reports", "url": "https://pbrisbin.com/posts/haskell-coverage-reports/", "published_at": "2021-12-22T00:00:00+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b81412ca", "title": "Reader for Free", "url": "https://pbrisbin.com/posts/reader-for-free/", "published_at": "2021-09-10T14:39:58+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b87fc392", "title": "Phantom Types and Globbing Bugs", "url": "https://pbrisbin.com/posts/phantom-types-and-globbing-bugs/", "published_at": "2021-05-28T00:00:00+00:00" }, { "id": "01a087be-9685-726d-bff7-0956b97768e1", "title": "An Opinionated Guide to Options Parsing in Shell", "url": "https://pbrisbin.com/posts/an-opinionated-guide-to-options-parsing-in-shell/", "published_at": "2021-03-23T00:00:00+00:00" }, { "id": "01a087be-9685-726d-bff7-0956ba0962af", "title": "Caching Docker Layers on CI", "url": "https://pbrisbin.com/posts/caching-docker-layers-on-ci/", "published_at": "2019-10-17T00:00:00+00:00" }, { "id": "01a087be-9685-726d-bff7-0956bacd279f", "title": "GoogleEmail2 Deprecation", "url": "https://pbrisbin.com/posts/googleemail2-deprecation/", "published_at": "2019-02-08T00:00:00+00:00" }, { "id": "01a087be-9685-726d-bff7-0956bad40146", "title": "Haskell Project Checklist", "url": "https://pbrisbin.com/posts/haskell-project-checklist/", "published_at": "2017-12-16T00:00:00+00:00" }, { "id": "01a087be-9686-73ab-8ccd-edf494143568", "title": "Selecting URLs via Keyboard in XTerm", "url": "https://pbrisbin.com/posts/selecting-urls-via-keyboard-in-xterm/", "published_at": "2016-12-17T00:00:00+00:00" }, { "id": "01a087be-9686-73ab-8ccd-edf494c5a37d", "title": "Deleting Git Tags with Style", "url": "https://pbrisbin.com/posts/deleting-git-tags-with-style/", "published_at": "2016-06-24T00:00:00+00:00" }, { "id": "01a087be-9686-73ab-8ccd-edf4959e61bb", "title": "tee-io Lessons Learned", "url": "https://pbrisbin.com/posts/tee-io-lessons-learned/", "published_at": "2016-04-16T00:00:00+00:00" }, { "id": "01a087be-9686-73ab-8ccd-edf495e93026", "title": "Regular Expression Evaluation via Finite Automata", "url": "https://pbrisbin.com/posts/regular-expression-evaluation-via-finite-automata/", "published_at": "2014-04-07T00:00:00+00:00" }, { "id": "01a087be-9686-73ab-8ccd-edf496a79891", "title": "Applicative Functors", "url": "https://pbrisbin.com/posts/applicative-functors/", "published_at": "2014-03-30T00:00:00+00:00" }, { "id": "01a087be-9686-73ab-8ccd-edf4979754df", "title": "Writing JSON APIs with Yesod", "url": "https://pbrisbin.com/posts/writing-json-apis-with-yesod/", "published_at": "2014-02-22T00:00:00+00:00" }, { "id": "01a087be-9689-7134-9af1-d88bae93dea4", "title": "Random Numbers without Mutation", "url": "https://pbrisbin.com/posts/random-numbers-without-mutation/", "published_at": "2014-02-09T00:00:00+00:00" }, { "id": "01a087be-9689-7134-9af1-d88baef70df4", "title": "Automated Unit Testing in Haskell", "url": "https://pbrisbin.com/posts/automated-unit-testing-in-haskell/", "published_at": "2013-12-01T00:00:00+00:00" }, { "id": "01a087be-9689-7134-9af1-d88baf8fdc7b", "title": "Using Notify-OSD for XMonad Notifications", "url": "https://pbrisbin.com/posts/using-notify-osd-for-xmonad-notifications/", "published_at": "2013-10-15T00:00:00+00:00" }, { "id": "01a087be-9689-7134-9af1-d88bb0741434", "title": "On Staticness", "url": "https://pbrisbin.com/posts/on-staticness/", "published_at": "2013-09-21T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5b9c15491", "title": "Mocking Bash", "url": "https://pbrisbin.com/posts/mocking-bash/", "published_at": "2013-08-24T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5ba5875a7", "title": "Email Encryption", "url": "https://pbrisbin.com/posts/email-encryption/", "published_at": "2013-08-20T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bb03348d", "title": "The Advent of IO", "url": "https://pbrisbin.com/posts/the-advent-of-io/", "published_at": "2013-07-28T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bb77a1af", "title": "Cloud Music: A Comparison", "url": "https://pbrisbin.com/posts/cloud-music-a-comparison/", "published_at": "2013-06-29T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bbadf218", "title": "Parsing DATABASE_URL", "url": "https://pbrisbin.com/posts/parsing-database-url/", "published_at": "2013-06-07T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bc3ed8d1", "title": "For the Library Authors", "url": "https://pbrisbin.com/posts/for-the-library-authors/", "published_at": "2013-05-31T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bc796c67", "title": "Faster Mail", "url": "https://pbrisbin.com/posts/faster-mail/", "published_at": "2013-05-30T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bcedc61d", "title": "Disable All The Caps", "url": "https://pbrisbin.com/posts/disable-all-the-caps/", "published_at": "2013-05-06T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bd3655cd", "title": "Aurget v4", "url": "https://pbrisbin.com/posts/aurget-v4/", "published_at": "2013-04-23T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bd63cc9d", "title": "Chromebook", "url": "https://pbrisbin.com/posts/chromebook/", "published_at": "2013-04-13T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bdb13e5a", "title": "Chruby", "url": "https://pbrisbin.com/posts/chruby/", "published_at": "2013-04-07T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bde21f1a", "title": "Hard Mode", "url": "https://pbrisbin.com/posts/hard-mode/", "published_at": "2013-03-16T00:00:00+00:00" }, { "id": "01a087be-968a-729a-9cd1-08c5bec7d12e", "title": "Testing POROs In Rails", "url": "https://pbrisbin.com/posts/testing-poros-in-rails/", "published_at": "2013-02-11T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5750d921eac", "title": "Systemd-User", "url": "https://pbrisbin.com/posts/systemd-user/", "published_at": "2013-01-20T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5750e18eb7d", "title": "Git-SVN", "url": "https://pbrisbin.com/posts/git-svn/", "published_at": "2013-01-16T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5750f075e18", "title": "Easy Change", "url": "https://pbrisbin.com/posts/easy-change/", "published_at": "2012-11-28T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5750f330d32", "title": "Dvd2iso", "url": "https://pbrisbin.com/posts/dvd2iso/", "published_at": "2012-11-15T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5750fa2f55e", "title": "Developing Web Applications with Yesod", "url": "https://pbrisbin.com/posts/developing-web-applications-with-yesod/", "published_at": "2012-11-01T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5751015b361", "title": "Extension by Module", "url": "https://pbrisbin.com/posts/extension-by-module/", "published_at": "2012-10-27T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e57510b3cae5", "title": "Fake S3", "url": "https://pbrisbin.com/posts/fake-s3/", "published_at": "2012-10-23T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e575113d6193", "title": "Deploying Yesod Apps On Heroku", "url": "https://pbrisbin.com/posts/deploying-yesod-apps-on-heroku/", "published_at": "2012-10-20T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e57511c8e3c1", "title": "Sharpening Your Tools", "url": "https://pbrisbin.com/posts/sharpening-your-tools/", "published_at": "2012-10-01T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e575129ba7c5", "title": "Be Assertive with Sane Exception Handling", "url": "https://pbrisbin.com/posts/be-assertive/", "published_at": "2012-09-19T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e575133d90c3", "title": "Raury", "url": "https://pbrisbin.com/posts/raury/", "published_at": "2012-08-30T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e5751431bc89", "title": "Vagrant", "url": "https://pbrisbin.com/posts/vagrant/", "published_at": "2012-08-30T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e575144f7ee2", "title": "Console TDD with String IO", "url": "https://pbrisbin.com/posts/console-tdd-with-string-io/", "published_at": "2012-08-25T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e575147a764f", "title": "Yesod Deployments with Keter", "url": "https://pbrisbin.com/posts/yesod-deployments-with-keter/", "published_at": "2012-06-01T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e57514b0916c", "title": "Maybe In Ruby", "url": "https://pbrisbin.com/posts/maybe-in-ruby/", "published_at": "2012-05-01T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e57514c212b4", "title": "Dzen", "url": "https://pbrisbin.com/posts/dzen/", "published_at": "2012-04-29T00:00:00+00:00" }, { "id": "01a087be-968e-73d9-8aba-e57515841067", "title": "Git Submodule Config", "url": "https://pbrisbin.com/posts/git-submodule-config/", "published_at": "2012-04-27T00:00:00+00:00" }, { "id": "01a087be-968f-7231-ab14-8f27c502a710", "title": "Beware Never Expectations", "url": "https://pbrisbin.com/posts/beware-never-expectations/", "published_at": "2012-04-08T00:00:00+00:00" }, { "id": "01a087be-968f-7231-ab14-8f27c5f238f2", "title": "Anonymous Classes In Ruby", "url": "https://pbrisbin.com/posts/anonymous-classes-in-ruby/", "published_at": "2012-03-24T00:00:00+00:00" }, { "id": "01a087be-968f-7231-ab14-8f27c60ba6c5", "title": "Dont Do That", "url": "https://pbrisbin.com/posts/dont-do-that/", "published_at": "2012-03-24T00:00:00+00:00" }, { "id": "01a087be-968f-7231-ab14-8f27c6751d0e", "title": "Escalate Your Scripts", "url": "https://pbrisbin.com/posts/escalate-your-scripts/", "published_at": "2012-03-24T00:00:00+00:00" }, { "id": "01a087be-968f-7231-ab14-8f27c6ec5031", "title": "Maybe Is Just Awesome", "url": "https://pbrisbin.com/posts/maybe-is-just-awesome/", "published_at": "2012-03-06T00:00:00+00:00" }, { "id": "01a087be-968f-7231-ab14-8f27c7bd4c34", "title": "The Github Effect", "url": "https://pbrisbin.com/posts/the-github-effect/", "published_at": "2012-02-24T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3abc1d27", "title": "Table links", "url": "https://pbrisbin.com/posts/table-links/", "published_at": "2012-02-09T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3b16a265", "title": "Live Search (part 2)", "url": "https://pbrisbin.com/posts/live-search-part-2/", "published_at": "2012-01-30T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3b48702b", "title": "Live Search", "url": "https://pbrisbin.com/posts/live-search/", "published_at": "2012-01-29T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3bb1039f", "title": "UI Refresh", "url": "https://pbrisbin.com/posts/ui-refresh/", "published_at": "2012-01-27T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3bf3177f", "title": "Static Refactor", "url": "https://pbrisbin.com/posts/static-refactor/", "published_at": "2011-11-22T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3c28ce04", "title": "Implicit Scope", "url": "https://pbrisbin.com/posts/implicit-scope/", "published_at": "2011-10-28T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3cbf4067", "title": "Ruby Eval", "url": "https://pbrisbin.com/posts/ruby-eval/", "published_at": "2011-10-25T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3d359149", "title": "Developing In OS X", "url": "https://pbrisbin.com/posts/developing-in-os-x/", "published_at": "2011-10-13T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3dece382", "title": "Test Driven Development", "url": "https://pbrisbin.com/posts/test-driven-development/", "published_at": "2011-10-02T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3e6fce9c", "title": "Lighttpd Reverse Proxy", "url": "https://pbrisbin.com/posts/lighttpd-reverse-proxy/", "published_at": "2011-09-10T00:00:00+00:00" }, { "id": "01a087be-9695-706f-b957-83bc3f04c510", "title": "Comments", "url": "https://pbrisbin.com/posts/comments/", "published_at": "2011-07-08T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b122e3ff", "title": "Mairix", "url": "https://pbrisbin.com/posts/mairix/", "published_at": "2011-07-03T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b201c35f", "title": "Pacprune", "url": "https://pbrisbin.com/posts/pacprune/", "published_at": "2011-06-11T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b2a64e5c", "title": "Forks and Children", "url": "https://pbrisbin.com/posts/forks-and-children/", "published_at": "2011-06-02T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b2dbec26", "title": "Anatomy of a Yesod Application", "url": "https://pbrisbin.com/posts/anatomy-of-a-yesod-application/", "published_at": "2011-04-29T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b35e198f", "title": "Lazy Haskell", "url": "https://pbrisbin.com/posts/lazy-haskell/", "published_at": "2011-04-09T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b3dfa61c", "title": "Notes", "url": "https://pbrisbin.com/posts/notes/", "published_at": "2011-03-26T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b4b717dd", "title": "Landlord Reviews", "url": "https://pbrisbin.com/posts/landlord-reviews/", "published_at": "2011-03-25T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b5158f0a", "title": "Hackday", "url": "https://pbrisbin.com/posts/hackday/", "published_at": "2011-02-28T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b5b88e8d", "title": "Ajax", "url": "https://pbrisbin.com/posts/ajax/", "published_at": "2011-01-29T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b63ec7e2", "title": "Posts Database", "url": "https://pbrisbin.com/posts/posts-database/", "published_at": "2011-01-09T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b6e2d8bf", "title": "Android Receiver", "url": "https://pbrisbin.com/posts/android-receiver/", "published_at": "2010-12-11T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b75ad017", "title": "Vim Registers", "url": "https://pbrisbin.com/posts/vim-registers/", "published_at": "2010-11-07T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b7aee492", "title": "Site Migration", "url": "https://pbrisbin.com/posts/site-migration/", "published_at": "2010-10-10T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b89db9a2", "title": "PHP Authentication", "url": "https://pbrisbin.com/posts/php-authentication/", "published_at": "2010-10-02T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b94814f5", "title": "XMonad Modules", "url": "https://pbrisbin.com/posts/xmonad-modules/", "published_at": "2010-08-31T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15b9ffbb40", "title": "Haskell RSS Reader", "url": "https://pbrisbin.com/posts/rss-reader/", "published_at": "2010-08-15T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15baf14649", "title": "Web Preview", "url": "https://pbrisbin.com/posts/web-preview/", "published_at": "2010-07-26T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15bb660621", "title": "Scratchpad Everything", "url": "https://pbrisbin.com/posts/scratchpad-everything/", "published_at": "2010-06-14T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15bc19c6f9", "title": "Raw Audio", "url": "https://pbrisbin.com/posts/raw-audio/", "published_at": "2010-05-28T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15bcc2eb3c", "title": "MapToggle", "url": "https://pbrisbin.com/posts/maptoggle/", "published_at": "2010-05-09T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15bd438440", "title": "HTPC", "url": "https://pbrisbin.com/posts/htpc/", "published_at": "2010-05-01T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15be3306de", "title": "XMonad Scratchpad", "url": "https://pbrisbin.com/posts/xmonad-scratchpad/", "published_at": "2010-04-10T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15be95505d", "title": "Controlling MPlayer", "url": "https://pbrisbin.com/posts/controlling-mplayer/", "published_at": "2010-04-08T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15bf7b43a7", "title": "Irssi", "url": "https://pbrisbin.com/posts/irssi/", "published_at": "2010-03-20T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15c046df82", "title": "Automounting", "url": "https://pbrisbin.com/posts/automounting/", "published_at": "2010-01-12T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15c1323a16", "title": "Backups", "url": "https://pbrisbin.com/posts/backups/", "published_at": "2010-01-03T00:00:00+00:00" }, { "id": "01a087be-9696-7135-9508-ad15c17f1d88", "title": "Aurget", "url": "https://pbrisbin.com/posts/aurget/", "published_at": "2009-12-05T00:00:00+00:00" }, { "id": "01a087be-9697-71f5-98cb-bfc60329045c", "title": "Display Manager", "url": "https://pbrisbin.com/posts/display-manager/", "published_at": "2009-12-05T00:00:00+00:00" }, { "id": "01a087be-9697-71f5-98cb-bfc6041ead15", "title": "Downgrade", "url": "https://pbrisbin.com/posts/downgrade/", "published_at": "2009-12-05T00:00:00+00:00" }, { "id": "01a087be-9697-71f5-98cb-bfc6043ef169", "title": "Dvdcopy", "url": "https://pbrisbin.com/posts/dvdcopy/", "published_at": "2009-12-05T00:00:00+00:00" }, { "id": "01a087be-9697-71f5-98cb-bfc604ac0d90", "title": "Goodsong", "url": "https://pbrisbin.com/posts/goodsong/", "published_at": "2009-12-05T00:00:00+00:00" } ] posts Claim your blog
Back to pbrisbin.com
Blog · corpus.blog/blogs/pbrisbin.com/posts

pbrisbin.com

pbrisbin.com

2025

10 Oct 2025

2022

2021

2019

2017

2016

2014

2013

2012

29 Apr 2012

2011

29 Jan 2011

2010

2009