41554 blogs · [ { "id": "01a0d0a4-33a3-7339-b123-2cc9d21bcdda", "title": "Move Your Goalposts", "url": "https://gabebw.com/blog/2015/01/14/move-your-goalposts", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d300b652", "title": "Push the current Git branch, even if you've never pushed it before", "url": "https://gabebw.com/blog/2011/09/14/push-the-current-git-branch-even-if-youve-never", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d38d67b1", "title": "How to Make a Chrome Extension", "url": "https://gabebw.com/blog/2015/01/23/how-to-make-a-chrome-extension", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d3c7ed65", "title": "Bracket Expansion", "url": "https://gabebw.com/blog/2012/02/21/bracket-expansion", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d3e4177a", "title": "Let's Build a Sinatra", "url": "https://gabebw.com/blog/2015/10/05/lets-build-a-sinatra", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d4c7fca2", "title": "Interacting with a Javascript confirmation from Selenium", "url": "https://gabebw.com/blog/2011/09/07/interacting-with-a-javascript-confirmation-from", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d51ba67e", "title": "Lightning Talk: Norse Gods and Horse Gods", "url": "https://gabebw.com/blog/2015/03/20/lightning-talk-norse-gods-and-horse-gods", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d5d17907", "title": "Advanced Rack", "url": "https://gabebw.com/blog/2015/08/10/advanced-rack", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d6cd0f9d", "title": "Movin' and Shakin'", "url": "https://gabebw.com/blog/2011/09/29/movin-and-shakin", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d712d961", "title": "Foolproof I18n Setup in Rails", "url": "https://gabebw.com/blog/2014/06/17/foolproof-i18n-setup-in-rails", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d7ee9536", "title": "What I learned building Candle in Rust", "url": "https://gabebw.com/blog/2019/10/13/learning-rust-by-candlelight", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d8d516a0", "title": "Lady-Fronted Pop Music", "url": "https://gabebw.com/blog/2015/08/01/lady-fronted-pop-music", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9d9636b29", "title": "Griddler is Better Than Ever!", "url": "https://gabebw.com/blog/2015/07/24/griddler-is-better-than-ever", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9da2899c0", "title": "TV Show Recommendations", "url": "https://gabebw.com/blog/2016/01/23/recommendations-january-2016", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9db179ed4", "title": "Custom Formats for DateTime", "url": "https://gabebw.com/blog/2011/08/16/custom-formats-for-datetime", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9dc0fdfa6", "title": "Converting to Neovim", "url": "https://gabebw.com/blog/2025/04/05/converting-to-neovim", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9dc94ebd9", "title": "Regular Expressions in Haskell", "url": "https://gabebw.com/blog/2015/10/11/regular-expressions-in-haskell", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9dcbc0b1d", "title": "Fun Facts and Tidbits from 2022", "url": "https://gabebw.com/blog/2022/12/27/fun-facts-and-tidbits-from-2022", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9dcd07718", "title": "Book Recommendations", "url": "https://gabebw.com/blog/2016/05/21/book-recommendations", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9dd7e755f", "title": "Middleman + rack-zippy is a gzipped peanut butter cup", "url": "https://gabebw.com/blog/2015/08/04/middleman-rack-zippy-is-a-gzipped-peanut-butter-cup", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9de609d1d", "title": "2.5 Ways to Execute a Shell Command", "url": "https://gabebw.com/blog/2011/08/03/2-5-ways-to-execute-a-shell-command", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9df3f0598", "title": "Gabriel Berke-Williams", "url": "https://gabebw.com/", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9dfd3b04e", "title": "Projects — Gabriel Berke-Williams", "url": "https://gabebw.com/projects", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e0d1607e", "title": "Workouts in 2014", "url": "https://gabebw.com/blog/2015/01/01/workouts-in-2014", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e182c761", "title": "sed 102: Replace In-Place", "url": "https://gabebw.com/blog/2014/01/15/sed-102-replace-in-place", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e194a5b4", "title": "A Look Back at 2014", "url": "https://gabebw.com/blog/2014/12/31/a-look-back-at-2014", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e2124195", "title": "git checkout and see", "url": "https://gabebw.com/blog/2012/07/03/git-checkout-and-see", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e27e9a9a", "title": "CSVKit Brings the Unix Philosophy to CSV", "url": "https://gabebw.com/blog/2015/03/27/csvkit-brings-the-unix-philosophy-to-csv", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e2815264", "title": "Nesting content_tag in Rails 3", "url": "https://gabebw.com/blog/2011/08/19/nesting-content-tag-in-rails-3", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e34368a4", "title": "How to Host Sites on a Subdomain with Heroku", "url": "https://gabebw.com/blog/2016/06/06/how-to-host-sites-on-a-subdomain-with-heroku", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e35af8fb", "title": "Control Rdio from Vim", "url": "https://gabebw.com/blog/2014/11/21/control-rdio-from-vim", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e3de2778", "title": "This Week in Open Source #33", "url": "https://gabebw.com/blog/2012/04/13/this-week-in-open-source-33", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e44d6925", "title": "Useless Ruby Tricks", "url": "https://gabebw.com/blog/2015/09/25/useless-ruby-tricks", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e5407440", "title": "Brewfile: a Gemfile, but for Homebrew", "url": "https://gabebw.com/blog/2014/01/20/brewfile-a-gemfile-but-for-homebrew", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e57bb719", "title": "Command-Line Arguments in Shell Scripts", "url": "https://gabebw.com/blog/2015/11/29/command-line-arguments-in-shell-scripts", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e5c5da06", "title": "This week in open source #34", "url": "https://gabebw.com/blog/2012/04/20/this-week-in-open-source-34", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e5e7db1f", "title": "How to Make a Custom Ringtone for your iPhone", "url": "https://gabebw.com/blog/2024/06/30/how-to-make-a-custom-ringtone-for-your-iphone", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e665e8f1", "title": "Write a Vim Plugin with TDD", "url": "https://gabebw.com/blog/2014/08/15/write-a-vim-plugin-with-tdd", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e6bb65a1", "title": "Check Out a Pull Request by Number", "url": "https://gabebw.com/blog/2019/03/10/check-out-a-pull-request-by-number", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e702130d", "title": "Thoughts on Learning Rust", "url": "https://gabebw.com/blog/2019/09/29/thoughts-on-learning-rust", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e7118bce", "title": "Input/Output Redirection in the Shell", "url": "https://gabebw.com/blog/2015/08/03/input-output-redirection-in-the-shell", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e7468504", "title": "Hyperlinks in the Terminal", "url": "https://gabebw.com/blog/2024/01/06/hyperlinks-in-the-terminal", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e7a45fea", "title": "Automatically Wait for AJAX with Capybara", "url": "https://gabebw.com/blog/2014/02/04/automatically-wait-for-ajax-with-capybara", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e83db490", "title": "cd'ing to frequently-used directories in ZSH", "url": "https://gabebw.com/blog/2011/09/30/cding-to-frequently-used-directories-in-zsh", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e9209a11", "title": "superclone.sh", "url": "https://gabebw.com/literate/superclone", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9e9702f1a", "title": "Writing", "url": "https://gabebw.com/archive", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ea1aeb8f", "title": "About Me", "url": "https://gabebw.com/about", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9eaec5542", "title": null, "url": "https://gabebw.com/games", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ebccf9d0", "title": null, "url": "https://gabebw.com/games/astronaut", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ebeeb150", "title": "Egghead Ensemble", "url": "https://gabebw.com/egghead", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ec388f5b", "title": "Egghead Ensemble", "url": "https://gabebw.com/egghead/1", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ecca4da5", "title": "Egghead Ensemble", "url": "https://gabebw.com/egghead/2", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ed6b6e20", "title": "Egghead Ensemble", "url": "https://gabebw.com/egghead/3", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9eda279cf", "title": "Egghead Ensemble", "url": "https://gabebw.com/egghead/4", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ee11b71f", "title": "ActiveRecord's where.not", "url": "https://gabebw.com/blog/2014/01/24/activerecords-wherenot", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ee99c9ae", "title": "Starting and Stopping Background Services with Homebrew", "url": "https://gabebw.com/blog/2014/01/21/starting-and-stopping-background-services-with-homebrew", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9ef8a9ee3", "title": "How to fix `rm -f .git/index`", "url": "https://gabebw.com/blog/2011/08/04/how-to-fix-rm-f-git-index", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f0510458", "title": "Lightning Talk: Corgis are Tiny Dogs", "url": "https://gabebw.com/blog/2015/04/01/lightning-talk-corgis", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f080b71b", "title": "Avoid the Three-state Boolean Problem", "url": "https://gabebw.com/blog/2014/02/24/avoid-the-threestate-boolean-problem", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f1789542", "title": "Clone Me Maybe", "url": "https://gabebw.com/blog/2012/07/21/clone-me-maybe", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f24c4008", "title": "How to Learn a New Programming Language", "url": "https://gabebw.com/blog/2015/10/24/how-to-learn-a-new-programming-language", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f274667d", "title": "Improving the Command-Line Postgres Experience", "url": "https://gabebw.com/blog/2013/11/30/improving-the-command-line-postgres-experience", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f2d52444", "title": "This Week in Open Source #7", "url": "https://gabebw.com/blog/2011/09/09/this-week-in-open-source-7", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f377a62f", "title": "How I Vim", "url": "https://gabebw.com/blog/2016/05/24/how-i-vim", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f37dcf04", "title": "Multiline strings in Capybara", "url": "https://gabebw.com/blog/2011/08/02/multiline-strings-in-capybara", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f3ec665f", "title": "Hidden Features of the Heroku CLI", "url": "https://gabebw.com/blog/2014/11/13/hidden-features-of-the-heroku-cli", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f44598d3", "title": "Unicode, UTF-8, and 💖", "url": "https://gabebw.com/blog/2016/06/05/unicode", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f4fc910e", "title": "Writing a Domain-Specific Language in Ruby", "url": "https://gabebw.com/blog/2014/05/28/writing-a-domain-specific-language-in-ruby", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f54a09c8", "title": "SHOULDA BEEN GONE", "url": "https://gabebw.com/blog/2012/05/12/shoulda-been-gone", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f573282c", "title": "How to Get ZSH to Complete CMD1 Like CMD2", "url": "https://gabebw.com/blog/2015/08/29/how-to-tell-zsh-to-complete-cmd1-like-cmd2", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f65f983d", "title": "Clearer Conditionals using De Morgan's Laws", "url": "https://gabebw.com/blog/2013/12/20/clearer-conditionals-using-de-morgans-laws", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f7033fb9", "title": "jq is sed for JSON", "url": "https://gabebw.com/blog/2015/02/25/jq-is-sed-for-json", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f7ec98ad", "title": "Lessons from a thoughtbot Apprentice", "url": "https://gabebw.com/blog/2011/08/02/lessons-from-a-thoughtbot-apprentice", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f8758f16", "title": "Use Bundler's binstubs!", "url": "https://gabebw.com/blog/2012/01/05/use-bundlers-binstubs", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f89c47c2", "title": "brew leaves", "url": "https://gabebw.com/blog/2014/02/11/brew-leaves", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f8d0c89b", "title": "Egghead Ensemble", "url": "https://gabebw.com/egghead/success", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f91d0524", "title": "Gabriel Berke-Williams' Resume", "url": "https://gabebw.com/resume", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9f962575d", "title": null, "url": "https://gabebw.com/dotbayarea/code-of-conduct", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0d0a4-33a3-7339-b123-2cc9fa147a6e", "title": "Games", "url": "https://gabebw.com/games-elsewhere", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0877b-17fd-7227-babf-1ad81b6570e0", "title": "Converting to Neovim", "url": "http://gabebw.com/blog/2025/04/05/converting-to-neovim", "published_at": "2025-04-05T05:00:00+00:00" }, { "id": "01a0877b-17fd-7227-babf-1ad81c528bb0", "title": "How to Make a Custom Ringtone for your iPhone", "url": "http://gabebw.com/blog/2024/06/30/how-to-make-a-custom-ringtone-for-your-iphone", "published_at": "2024-06-30T05:00:00+00:00" }, { "id": "01a0877b-17fd-7227-babf-1ad81d50935a", "title": "Hyperlinks in the Terminal", "url": "http://gabebw.com/blog/2024/01/06/hyperlinks-in-the-terminal", "published_at": "2024-01-06T05:00:00+00:00" }, { "id": "01a0877b-17fd-7227-babf-1ad81db101c1", "title": "Fun Facts and Tidbits from 2022", "url": "http://gabebw.com/blog/2022/12/27/fun-facts-and-tidbits-from-2022", "published_at": "2022-12-27T05:00:00+00:00" }, { "id": "01a0877b-17fd-7227-babf-1ad81dc52452", "title": "What I learned building Candle in Rust", "url": "http://gabebw.com/blog/2019/10/13/learning-rust-by-candlelight", "published_at": "2019-10-13T05:00:00+00:00" }, { "id": "01a0e261-46bd-7250-814d-9c9176a80db8", "title": "gabebw joined Hotline Webring", "url": "https://gabebw.com", "published_at": "2015-12-04T00:48:36+00:00" } ] posts Claim your blog
Back to gabebw.com
Blog · corpus.blog/blogs/gabebw.com/posts

gabebw.com

gabebw.com

2026

16 Sept 2026

2025

2024

2022

2019

2015