41554 blogs · [ { "id": "01a08795-2b90-719b-ac23-d86bb75a668b", "title": "Frequently Played September 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-09/", "published_at": "2026-09-01T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bb7ce5ff4", "title": "Speaking at Rocky Mountain Ruby 2026", "url": "https://kevinjmurphy.com/posts/speaking-at-rocky-mountain-ruby-2026/", "published_at": "2026-08-16T16:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bb89cd7f3", "title": "Frequently Played August 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-08/", "published_at": "2026-08-02T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bb8ce97d9", "title": "ActiveModel Conditional Validations", "url": "https://kevinjmurphy.com/posts/activemodel-conditional-validations/", "published_at": "2026-07-20T13:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bb9b5c57e", "title": "Frequently Played July 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-07/", "published_at": "2026-07-20T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bba79cc29", "title": "Frequently Played June 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-06/", "published_at": "2026-06-01T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbb07b39d", "title": "Blue Ridge Ruby 2026 Video", "url": "https://kevinjmurphy.com/posts/blue-ridge-ruby-2026-video/", "published_at": "2026-05-24T12:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbb68a73d", "title": "Blue Ridge Ruby 2026 Recap", "url": "https://kevinjmurphy.com/posts/blue-ridge-ruby-2026-recap/", "published_at": "2026-05-05T19:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbbd570d7", "title": "Frequently Played May 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-05/", "published_at": "2026-05-05T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbc0e6353", "title": "InstiLLMent of Successful Practices in an Agentic World", "url": "https://kevinjmurphy.com/posts/instillment-of-successful-practices-in-an-agentic-world/", "published_at": "2026-04-28T11:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbc486bab", "title": "Frequently Played April 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-04/", "published_at": "2026-04-05T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbd02aaa1", "title": "Announcing simplecov-compare", "url": "https://kevinjmurphy.com/posts/announcing-simplecov-compare/", "published_at": "2026-03-14T07:14:16+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbd607572", "title": "Frequently Played March 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-03/", "published_at": "2026-03-06T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbd83250e", "title": "Ridge Notes", "url": "https://kevinjmurphy.com/posts/blue-ridge-notes/", "published_at": "2026-03-05T21:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbdc9aeee", "title": "Building a Guitar Stand", "url": "https://kevinjmurphy.com/posts/building-guitar-stand/", "published_at": "2026-02-22T22:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbe114a70", "title": "Installing Guitar Pick(me)ups", "url": "https://kevinjmurphy.com/posts/installing-guitar-pick-me-ups/", "published_at": "2026-02-22T21:30:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbe74eb4b", "title": "Speaking at Blue Ridge Ruby 2026", "url": "https://kevinjmurphy.com/posts/speaking-at-blue-ridge-ruby-2026/", "published_at": "2026-02-16T16:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbe96cece", "title": "Frequently Played February 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-02/", "published_at": "2026-02-01T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbec3ab48", "title": "How I Read A Pull Request", "url": "https://kevinjmurphy.com/posts/how-i-read-a-pr/", "published_at": "2026-01-17T01:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bbf6ce0e2", "title": "Frequently Played January 2026", "url": "https://kevinjmurphy.com/posts/frequently-played-2026-01/", "published_at": "2026-01-16T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc0047d39", "title": "2025 Year-End Review", "url": "https://kevinjmurphy.com/posts/2025-review/", "published_at": "2025-12-17T19:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc0f920bb", "title": "Frequently Played December 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-12/", "published_at": "2025-12-15T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc1f10d09", "title": "How to review AI Generated PRs", "url": "https://kevinjmurphy.com/posts/how-to-review-ai-generated-prs/", "published_at": "2025-12-12T18:54:20+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc271dfd1", "title": "Don't REST on your Laurels", "url": "https://kevinjmurphy.com/posts/dont-rest-on-your-laurels/", "published_at": "2025-11-15T14:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc346a835", "title": "Frequently Played November 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-11/", "published_at": "2025-11-04T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc439c747", "title": "Tilt-back Amp Stand", "url": "https://kevinjmurphy.com/posts/tilt-back-amp-stand/", "published_at": "2025-10-13T19:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc50a131d", "title": "Frequently Played October 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-10/", "published_at": "2025-10-05T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc51c9cdb", "title": "Formatting SQL with anbt-sql-formatter", "url": "https://kevinjmurphy.com/posts/format-sql-anbt-sql-formatter/", "published_at": "2025-09-14T14:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc55d8deb", "title": "New Wall Art", "url": "https://kevinjmurphy.com/posts/new-wall-art/", "published_at": "2025-09-10T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc601e0ef", "title": "Frequently Played Sept 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-09/", "published_at": "2025-09-06T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc6960c46", "title": "Frequently Played August 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-08/", "published_at": "2025-08-10T13:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc72fa1fc", "title": "RailsConf 2025 Video", "url": "https://kevinjmurphy.com/posts/railsconf-2025-video/", "published_at": "2025-07-25T01:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc77a660c", "title": "RailsConf 2025 Recap", "url": "https://kevinjmurphy.com/posts/railsconf-2025-recap/", "published_at": "2025-07-12T20:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc814499e", "title": "How 10 years of RailsConfs can inform the next 10 years of your career", "url": "https://kevinjmurphy.com/posts/ten-years-of-railsconf/", "published_at": "2025-07-05T01:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc816db61", "title": "Frequently Played July 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-07/", "published_at": "2025-07-02T19:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc82af31f", "title": "How 10 years of RailsConfs can inform the next 10 years of your career - The Proposal", "url": "https://kevinjmurphy.com/posts/ten-years-of-railsconf-proposal/", "published_at": "2025-06-27T00:26:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc8a55207", "title": "Frequently Played June 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-06/", "published_at": "2025-06-04T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bc966d7c6", "title": "Rails Controller Callback Order With Concerns", "url": "https://kevinjmurphy.com/posts/rails-controller-callback-order-with-concerns/", "published_at": "2025-05-17T00:53:21+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bca2fa8c7", "title": "Frequently Played May 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-05/", "published_at": "2025-05-05T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcacfb050", "title": "InstiLLMent of Successful Practices in an Agentic World - The Proposal", "url": "https://kevinjmurphy.com/posts/instillment-of-successful-practices-in-an-agentic-world-proposal/", "published_at": "2025-04-28T09:26:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcb8d0d4a", "title": "Speaking at RailsConf 2025", "url": "https://kevinjmurphy.com/posts/speaking-at-railsconf-2025/", "published_at": "2025-04-10T20:14:31+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcbbd8784", "title": "Frequently Played April 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-04/", "published_at": "2025-04-07T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcc3a12e5", "title": "Preserving Flash Messages in Rails", "url": "https://kevinjmurphy.com/posts/preserving-flash-messages-in-rails/", "published_at": "2025-03-14T12:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcd2a7803", "title": "Hugo Update", "url": "https://kevinjmurphy.com/posts/2025-03-hugo-update/", "published_at": "2025-03-10T14:48:04+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcd68c0ba", "title": "Frequently Played March 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-03/", "published_at": "2025-03-10T07:33:33+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcdadd78c", "title": "Frequently Played Feb 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-02/", "published_at": "2025-02-07T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcdb0f670", "title": "What Is It (in Ruby 3.4)?", "url": "https://kevinjmurphy.com/posts/what-is-it-in-ruby-34/", "published_at": "2025-01-10T20:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bce527fe9", "title": "Frequently Played Jan 2025", "url": "https://kevinjmurphy.com/posts/frequently-played-2025-01/", "published_at": "2025-01-05T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcf3f0763", "title": "2024 Year-End Review", "url": "https://kevinjmurphy.com/posts/2024-review/", "published_at": "2024-12-16T19:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bcf9e8bd4", "title": "Frequently Played Dec 2024", "url": "https://kevinjmurphy.com/posts/frequently-played-2024-12/", "published_at": "2024-12-13T11:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd0974a8e", "title": "RubyConf 2024 Recap", "url": "https://kevinjmurphy.com/posts/rubyconf-2024-recap/", "published_at": "2024-11-16T15:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd1852252", "title": "At RubyConf 2024", "url": "https://kevinjmurphy.com/posts/at_rubyconf2024/", "published_at": "2024-11-12T10:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd2144f9c", "title": "Frequently Played Nov 2024", "url": "https://kevinjmurphy.com/posts/frequently-played-2024-11/", "published_at": "2024-11-07T00:00:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd21fb636", "title": "Happy Halloween 2024", "url": "https://kevinjmurphy.com/posts/happy-halloween-2024/", "published_at": "2024-10-31T12:29:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd274bd09", "title": "Two Drawer End Tables Construction", "url": "https://kevinjmurphy.com/posts/two-drawer-end-tables/", "published_at": "2024-10-13T15:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd36b37eb", "title": "1,000 Miles", "url": "https://kevinjmurphy.com/posts/1000_miles/", "published_at": "2024-10-08T19:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd38b740f", "title": "Office End Table Construction", "url": "https://kevinjmurphy.com/posts/office-end-table-construction/", "published_at": "2024-10-07T19:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd3a99cdb", "title": "Frequently Played Oct 2024", "url": "https://kevinjmurphy.com/posts/frequently-played-2024-10/", "published_at": "2024-10-06T23:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd3ec7b03", "title": "RSpec Stubs The Object In Memory", "url": "https://kevinjmurphy.com/posts/rspec-stubs-object-in-memory/", "published_at": "2024-09-13T19:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd4bd86c9", "title": "Frequently Played Sept 2024", "url": "https://kevinjmurphy.com/posts/frequently-played-2024-09/", "published_at": "2024-09-10T22:40:50+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd59c3569", "title": "Access Request Headers in a Rails Controller", "url": "https://kevinjmurphy.com/posts/access-request-headers-in-rails-controller/", "published_at": "2024-07-11T23:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd5cf491d", "title": "Four Things To Take Away From RailsConf 2024", "url": "https://kevinjmurphy.com/posts/4-things-railsconf-2024/", "published_at": "2024-05-13T23:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd6c67d8d", "title": "RailsConf 2024 Recap", "url": "https://kevinjmurphy.com/posts/railsconf-2024-recap/", "published_at": "2024-05-12T13:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd73736c9", "title": "Another Ruby for All Podcast Guest Appearance", "url": "https://kevinjmurphy.com/posts/ruby-for-all-guest-2024/", "published_at": "2024-04-21T00:00:00+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd74bff31", "title": "Making a (Sidekiq) Batch Recipe", "url": "https://kevinjmurphy.com/posts/making-a-sidekiq-batch-recipe/", "published_at": "2024-04-13T22:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd75f3914", "title": "Tracks Not At RailsConf 2024", "url": "https://kevinjmurphy.com/posts/tracks-not-at-railsconf-2024/", "published_at": "2024-03-15T14:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd84ac92b", "title": "Joining RailsConf 2024 Program Committee", "url": "https://kevinjmurphy.com/posts/railsconf-2024-program-committee/", "published_at": "2024-02-05T22:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd8de4e9f", "title": "Slowing Down", "url": "https://kevinjmurphy.com/posts/slowing-down/", "published_at": "2024-01-08T00:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bd94ba701", "title": "Blue Ridge Ruby Coverage Talk Video", "url": "https://kevinjmurphy.com/posts/blue-ridge-coverage-video/", "published_at": "2024-01-03T13:00:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bda2d198a", "title": "2023 Year-End Review", "url": "https://kevinjmurphy.com/posts/2023-review/", "published_at": "2023-12-16T01:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdb0fd51a", "title": "Site Search Now Available", "url": "https://kevinjmurphy.com/posts/search-functionality/", "published_at": "2023-12-10T12:30:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdb29ba6c", "title": "RubyConf 2023 Recap", "url": "https://kevinjmurphy.com/posts/rubyconf-2023-recap/", "published_at": "2023-11-18T01:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdb9d566d", "title": "Ruby Friends at RubyConf 2023", "url": "https://kevinjmurphy.com/posts/ruby-friends-rubyconf-2023/", "published_at": "2023-11-15T23:00:00+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdc5ed122", "title": "Ruby for All Podcast Guest Appearance", "url": "https://kevinjmurphy.com/posts/ruby-for-all-guest-2023/", "published_at": "2023-11-03T00:00:00+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdcb5884e", "title": "Preparing Conference Talk Delivery", "url": "https://kevinjmurphy.com/posts/preparing-conference-talk-delivery/", "published_at": "2023-10-14T22:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdd7c54ad", "title": "Ruby on Rails Podcast Co-Host?!?", "url": "https://kevinjmurphy.com/posts/ruby-on-rails-podcast-cohost/", "published_at": "2023-09-21T12:00:00+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdd959d6d", "title": "Building Conference Talk Content", "url": "https://kevinjmurphy.com/posts/building-conference-talk-content/", "published_at": "2023-09-15T22:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bde84d801", "title": "Keeping Up With Ruby News All Week Long", "url": "https://kevinjmurphy.com/posts/keeping-up-with-ruby-news/", "published_at": "2023-08-19T19:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdef00267", "title": "Testing Inherited Behavior", "url": "https://kevinjmurphy.com/posts/testing-inherited-behavior/", "published_at": "2023-07-14T23:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86bdf85ec5d", "title": "Available on Bluesky", "url": "https://kevinjmurphy.com/posts/joining-bluesky/", "published_at": "2023-07-11T19:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be0515690", "title": "Blue Ridge Ruby 2023 Recap", "url": "https://kevinjmurphy.com/posts/blue-ridge-ruby-2023-recap/", "published_at": "2023-06-11T18:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be0bc0e29", "title": "Flog-Driven Development", "url": "https://kevinjmurphy.com/posts/flog-driven-development/", "published_at": "2023-05-13T11:20:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be10b859d", "title": "Composing Our Own Guitar Amps From Inherited Gear", "url": "https://kevinjmurphy.com/posts/composing-our-own-guitar-amps-from-inherited-gear/", "published_at": "2023-04-15T19:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be1769f29", "title": "Programming Guitar Greatness", "url": "https://kevinjmurphy.com/posts/programming-guitar-greatness/", "published_at": "2023-03-18T11:00:10+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be209dda4", "title": "Speaking at Blue Ridge Ruby", "url": "https://kevinjmurphy.com/posts/blue-ridge-ruby-2023/", "published_at": "2023-03-15T21:23:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be24204ad", "title": "Duped into modifying a frozen hash", "url": "https://kevinjmurphy.com/posts/modify-frozen-hash/", "published_at": "2023-02-17T23:00:00+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be24c3f0e", "title": "Ruby on Rails Podcast Appearance", "url": "https://kevinjmurphy.com/posts/ruby-on-rails-podcast-appearance/", "published_at": "2023-02-08T23:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be2ce696b", "title": "Anyone Can Play Guitar (With Ruby) Video Released", "url": "https://kevinjmurphy.com/posts/rubyconf-mini-2022-video-released/", "published_at": "2023-02-06T23:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be39dac56", "title": "Evaluating More Coverage in Ruby 3.2", "url": "https://kevinjmurphy.com/posts/evaluating-more-coverage-in-ruby-3-2/", "published_at": "2023-01-14T21:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be4047940", "title": "My First Code Commit in Ruby", "url": "https://kevinjmurphy.com/posts/my-first-code-commit-in-ruby/", "published_at": "2022-12-29T17:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be4e954d2", "title": "2022 Year-End Review", "url": "https://kevinjmurphy.com/posts/2022-review/", "published_at": "2022-12-17T13:04:22+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be5b66677", "title": "RubyConf Mini 2022 Recap", "url": "https://kevinjmurphy.com/posts/rubyconf-mini-2022-recap/", "published_at": "2022-11-21T01:00:24+00:00" }, { "id": "01a08795-2b90-719b-ac23-d86be5be8653", "title": "Revisiting Calling Sonic Pi From Ruby", "url": "https://kevinjmurphy.com/posts/revisiting-calling-sonic-pi-from-ruby/", "published_at": "2022-11-11T12:00:24+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54a427d79", "title": "Anyone Can Play Guitar (With Ruby) - The Proposal", "url": "https://kevinjmurphy.com/posts/anyone-can-play-guitar-proposal/", "published_at": "2022-11-11T00:26:22+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54ac0807c", "title": "Available on Mastodon", "url": "https://kevinjmurphy.com/posts/joining-mastodon/", "published_at": "2022-11-05T22:23:22+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54b2b1004", "title": "Enumerating Musical Notes", "url": "https://kevinjmurphy.com/posts/enumerating-musical-notes/", "published_at": "2022-10-13T21:00:10+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54bab3824", "title": "Anyone Can Play Guitar (With Ruby)", "url": "https://kevinjmurphy.com/posts/play-guitar/", "published_at": "2022-09-22T21:00:10+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54c81645e", "title": "Symmetric Spies: RSpec Test Organization", "url": "https://kevinjmurphy.com/posts/symmetric-spies/", "published_at": "2022-09-17T12:53:21+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54d0fd96b", "title": "Sharing Past Conference Proposals", "url": "https://kevinjmurphy.com/posts/sharing-past-conference-proposals/", "published_at": "2022-08-05T01:00:22+00:00" }, { "id": "01a08795-2b91-72dc-b92e-aeb54d62534a", "title": "Browser History Confessional: Searching My Recent Searches - The Proposal", "url": "https://kevinjmurphy.com/posts/browser-history-confessional-proposal/", "published_at": "2022-08-04T01:28:22+00:00" } ] posts Claim your blog
Back to kevinjmurphy.com
Blog · corpus.blog/blogs/kevinjmurphy.com/posts

kevinjmurphy.com

kevinjmurphy.com

2026

2025

2024

2023

2022