41554 blogs · [ { "id": "01a07df3-b2eb-728d-81d9-df772d88fb08", "title": "Reflecting on the Future of My Website", "url": "https://kevinjalbert.com/reflecting-on-the-future-of-my-website/", "published_at": "2023-06-30T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df772e17ba45", "title": "Using ChatGPT and Whisper: A New Approach to Blog Writing", "url": "https://kevinjalbert.com/using-chatgpt-and-whisper-a-new-approach-to-blog-writing/", "published_at": "2023-05-31T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df772e2af32a", "title": "Using Excalidraw's Embedded Scene Feature for Collaborative Diagramming", "url": "https://kevinjalbert.com/using-excalidraws-embedded-scene-feature-for-collaborative-diagramming/", "published_at": "2023-04-30T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df772e596cac", "title": "Sharing Plex with Common Media Sense age-restrictions", "url": "https://kevinjalbert.com/sharing-plex-with-common-media-sense-age-restrictions/", "published_at": "2023-03-27T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df772f3ffdc9", "title": "Making AirPlay work with Chromecast Devices", "url": "https://kevinjalbert.com/making-airplay-work-with-chromecast-devices/", "published_at": "2023-02-27T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df772f8dc81e", "title": "Sync Twitter Following to a List", "url": "https://kevinjalbert.com/sync-twitter-following-to-a-list/", "published_at": "2023-01-31T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df77306f5454", "title": "Turning a Webpage into a Basic iOS App", "url": "https://kevinjalbert.com/turning-a-webpage-into-a-basic-ios-app/", "published_at": "2022-12-31T00:00:00+00:00" }, { "id": "01a07df3-b2eb-728d-81d9-df77311ea4e2", "title": "Getting Non-HomeKit Devices Working in HomeKit", "url": "https://kevinjalbert.com/getting-non-homekit-devices-working-in-homekit/", "published_at": "2022-11-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f3578de3", "title": "iOS Shortcuts: Actionable Notifications", "url": "https://kevinjalbert.com/ios-shortcuts-actionable-notifications/", "published_at": "2022-10-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f3e21bc0", "title": "Quantified Self: Measure What you Want to Manage", "url": "https://kevinjalbert.com/quantified-self-measure-what-you-want-to-manage/", "published_at": "2022-09-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f4b1348b", "title": "Git Bisect: Only the Current Branch", "url": "https://kevinjalbert.com/git-bisect-only-the-current-branch/", "published_at": "2022-08-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f4b16995", "title": "Digging through Git History for Removed Text", "url": "https://kevinjalbert.com/digging-through-git-history-for-removed-text/", "published_at": "2022-07-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f57e5bb3", "title": "Import Raindrop.io Highlights into Readwise", "url": "https://kevinjalbert.com/import-raindrop-io-highlights-into-readwise/", "published_at": "2022-06-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f58c4845", "title": "Improvised Portable Smart Speaker", "url": "https://kevinjalbert.com/improvised-portable-smart-speaker/", "published_at": "2022-05-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f5dc6433", "title": "Access Local Docker Containers by Domain Names instead of Ports", "url": "https://kevinjalbert.com/access-local-docker-containers-by-domain-names-instead-of-ports/", "published_at": "2022-04-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f6abd75f", "title": "Quickly Toggle Fonts in Google Docs", "url": "https://kevinjalbert.com/quickly-toggle-fonts-in-google-docs/", "published_at": "2022-03-27T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f6ca4200", "title": "Releasing github_contributions Ruby Gem", "url": "https://kevinjalbert.com/releasing-github-contributions-ruby-gem/", "published_at": "2022-02-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f70ecfa4", "title": "Gamifying my Son's Physiotherapy", "url": "https://kevinjalbert.com/gamifying-my-sons-physiotherapy/", "published_at": "2022-01-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f70f6f5c", "title": "Steam Remote Play is Amazing", "url": "https://kevinjalbert.com/steam-remote-play-is-amazing/", "published_at": "2021-12-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f7ac2e57", "title": "Global Hotkeys using the Hyper Key", "url": "https://kevinjalbert.com/global-hotkeys-using-the-hyper-key/", "published_at": "2021-11-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f872a90c", "title": "Apple Watch's Walkie Talkie...? Nah, Just Call Me", "url": "https://kevinjalbert.com/apple-watchs-walkie-talkie-nah-just-call-me/", "published_at": "2021-10-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f950bd64", "title": "Document Storage: Migrating Evernote to Google Drive", "url": "https://kevinjalbert.com/document-storage-migrating-evernote-to-google-drive/", "published_at": "2021-09-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f997fc07", "title": "Stub Sleeps in Tests", "url": "https://kevinjalbert.com/stub-sleeps-in-tests/", "published_at": "2021-08-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f9a487f1", "title": "Rails Testing: Reload the Model", "url": "https://kevinjalbert.com/rails-testing-reloading-the-model/", "published_at": "2021-07-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311f9ee3b74", "title": "Embrace Active Support without Rails", "url": "https://kevinjalbert.com/embrace-active-support-without-rails/", "published_at": "2021-06-26T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fa381854", "title": "Keep a macOS Application Running using cron", "url": "https://kevinjalbert.com/keep-a-macos-application-running-using-cron/", "published_at": "2021-05-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fb2fd00f", "title": "AppleScript that Mirrors iPhone to QuickTime", "url": "https://kevinjalbert.com/applescript-that-mirrors-iphone-to-quicktime/", "published_at": "2021-04-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fb521798", "title": "How I Keep Active At Home", "url": "https://kevinjalbert.com/how-i-keep-active-at-home/", "published_at": "2021-03-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fb83cd27", "title": "Wrapping Shell Commands and Keep the Original Name", "url": "https://kevinjalbert.com/wrapping-shell-commands-and-keep-the-original-name/", "published_at": "2021-02-27T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fbc36f78", "title": "Reflecting on Five Years of Monthly Blogging", "url": "https://kevinjalbert.com/reflecting-on-five-years-of-monthly-blogging/", "published_at": "2021-01-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fc1356d4", "title": "Using URL Scheme Links in Notion", "url": "https://kevinjalbert.com/using-url-scheme-links-in-notion/", "published_at": "2020-12-22T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fd12962b", "title": "Custom Notion iOS Widget", "url": "https://kevinjalbert.com/custom-notion-ios-widget/", "published_at": "2020-11-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fd397f7d", "title": "Guided Access on iOS - A Hidden Gem", "url": "https://kevinjalbert.com/guided-access-on-ios-a-hidden-gem/", "published_at": "2020-10-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fe0502a3", "title": "Daily Review Using iOS Shortcuts and Scriptable", "url": "https://kevinjalbert.com/daily-review-using-ios-shortcuts-and-scriptable/", "published_at": "2020-09-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311fecbde08", "title": "My Dam Broke - Revisiting Content Consumption", "url": "https://kevinjalbert.com/my-dam-broke-revisiting-content-consumption/", "published_at": "2020-08-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311ff014a68", "title": "Working From Home: Family, I'm Busy Now", "url": "https://kevinjalbert.com/working-from-home-family-im-busy-now/", "published_at": "2020-07-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1311ffe5546e", "title": "Improve Your Home Office - Miscellaneous Aspects", "url": "https://kevinjalbert.com/improve-your-home-office-the-miscellaneous-aspects/", "published_at": "2020-06-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312007d9fdb", "title": "Improve Your Home Office - Input/Output Devices", "url": "https://kevinjalbert.com/improve-your-home-office-the-input-output-devices/", "published_at": "2020-05-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131200b84e1e", "title": "Improve Your Home Office - Physical Space", "url": "https://kevinjalbert.com/improve-your-home-office-the-physical-space/", "published_at": "2020-04-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312015fc531", "title": "Improve Your Home Office", "url": "https://kevinjalbert.com/improve-your-home-office/", "published_at": "2020-03-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131201c0c308", "title": "Moving from RSS Feeds to Email", "url": "https://kevinjalbert.com/moving-from-rss-to-email/", "published_at": "2020-02-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312029dc32a", "title": "Testing the Use of Rails Caching", "url": "https://kevinjalbert.com/testing-the-use-of-rails-caching/", "published_at": "2020-01-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312034e3493", "title": "Consolidating Notion Projects into notion-toolbox", "url": "https://kevinjalbert.com/consolidating-notion-projects-into-notion-toolbox/", "published_at": "2019-12-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131203d99d44", "title": "Learn More About Yourself Using Personality Types", "url": "https://kevinjalbert.com/learn-more-about-yourself-using-personality-types/", "published_at": "2019-11-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131204357f09", "title": "Using iOS Shortcuts to Open Notion Pages", "url": "https://kevinjalbert.com/using-ios-shortcuts-to-open-notion-pages/", "published_at": "2019-10-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312046ccf75", "title": "Docker Compose DNS Consistency (DCDC)", "url": "https://kevinjalbert.com/docker-compose-dns-consistency-dcdc/", "published_at": "2019-09-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120478cb9a", "title": "Introducing notion-scripts", "url": "https://kevinjalbert.com/introducing-notion-scripts/", "published_at": "2019-08-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312048efc49", "title": "Integrating Notion with Google Assistant", "url": "https://kevinjalbert.com/integrating-notion-with-google-assistant/", "published_at": "2019-07-15T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120541e40c", "title": "Integrating Notion with Alfred", "url": "https://kevinjalbert.com/integrating-notion-with-alfred/", "published_at": "2019-06-17T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120619df39", "title": "My Weekly Notion Setup", "url": "https://kevinjalbert.com/my-weekly-notion-setup/", "published_at": "2019-05-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131206eb421f", "title": "Editing Commits in a Pull Request; Make it your Last Action", "url": "https://kevinjalbert.com/editing-commits-in-a-pull-request-make-it-your-last-action/", "published_at": "2019-04-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131207557a8b", "title": "Consuming Content and Managing the Flood", "url": "https://kevinjalbert.com/consuming-content-and-managing-the-flood/", "published_at": "2019-03-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131207678296", "title": "Decompressing when Working Remotely", "url": "https://kevinjalbert.com/decompressing-when-working-remotely/", "published_at": "2019-02-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312085e2466", "title": "Level Up Your Commit Messages", "url": "https://kevinjalbert.com/level-up-your-commit-messages/", "published_at": "2019-01-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131209252019", "title": "Archive Unused Repositories", "url": "https://kevinjalbert.com/archive-unused-repositories/", "published_at": "2018-12-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120a0a6e13", "title": "Tracking Production Disruptions", "url": "https://kevinjalbert.com/tracking-production-disruptions/", "published_at": "2018-11-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120a714502", "title": "Automating Slack Statuses for Meetings and Focus Time", "url": "https://kevinjalbert.com/automating-slack-statuses-for-meetings-and-focus-times/", "published_at": "2018-10-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120b4a3d20", "title": "Todoist with Keyboard Navigation via Nativefier", "url": "https://kevinjalbert.com/todoist-with-keyboard-navigation-via-nativefier/", "published_at": "2018-09-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120b92081b", "title": "Video Clubs: A Way to Keep Up", "url": "https://kevinjalbert.com/video-clubs-a-way-to-keep-up/", "published_at": "2018-08-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120c2c2af9", "title": "GraphQL Persisted Queries with HTTP Caching [Part 4]", "url": "https://kevinjalbert.com/graphql-persisted-queries-with-http-caching-part-4/", "published_at": "2018-07-18T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120cd40079", "title": "GraphQL Persisted Queries with HTTP Caching [Part 3]", "url": "https://kevinjalbert.com/graphql-persisted-queries-with-http-caching-part-3/", "published_at": "2018-07-17T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120cffbb0b", "title": "GraphQL Persisted Queries with HTTP Caching [Part 2]", "url": "https://kevinjalbert.com/graphql-persisted-queries-with-http-caching-part-2/", "published_at": "2018-07-16T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120d95a3af", "title": "GraphQL Persisted Queries with HTTP Caching [Part 1]", "url": "https://kevinjalbert.com/graphql-persisted-queries-with-http-caching-part-1/", "published_at": "2018-07-15T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120e50cb51", "title": "Migrating PostgreSQL to Aurora with near Zero-Downtime", "url": "https://kevinjalbert.com/migrate-postgresql-to-aurora-with-near-zero-downtime/", "published_at": "2018-06-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120ea34205", "title": "iTerm2 Mouseless Copy", "url": "https://kevinjalbert.com/iterm2-mouseless-copy/", "published_at": "2018-05-06T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120f394ef1", "title": "Jest Snapshots: Reducing styled-jsx Noise", "url": "https://kevinjalbert.com/jest-snapshots-reducing-styled-jsx-noise/", "published_at": "2018-04-11T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120fb7eb1d", "title": "Editing with Pry", "url": "https://kevinjalbert.com/editing-with-pry/", "published_at": "2018-03-23T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13120fdfcefa", "title": "Rails ActiveStorage Configuration for Minio", "url": "https://kevinjalbert.com/rails-activestorage-configuration-for-minio/", "published_at": "2018-02-26T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131210d20455", "title": "Start Now: Architecture Decision Records", "url": "https://kevinjalbert.com/start-now-architecture-decision-records/", "published_at": "2018-01-03T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312113aa83c", "title": "Slack Reminding Users and Channels", "url": "https://kevinjalbert.com/slack-reminding-users-and-channels/", "published_at": "2017-12-02T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131211c280e2", "title": "GitHub: Tell Me When It Closes Extension", "url": "https://kevinjalbert.com/github-tell-me-when-it-closes-extension/", "published_at": "2017-11-14T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121277856d", "title": "Share Highlighted Articles", "url": "https://kevinjalbert.com/share-highlighted-articles/", "published_at": "2017-10-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312127cc7af", "title": "Synchronizing my dotfiles", "url": "https://kevinjalbert.com/synchronizing-my-dotfiles/", "published_at": "2017-09-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131212f69145", "title": "Self-Improvement, Accountability and Transparancy", "url": "https://kevinjalbert.com/self-improvement-accountability-and-transparency/", "published_at": "2017-08-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131213124021", "title": "Knowledge and Screencast Culture", "url": "https://kevinjalbert.com/knowledge-and-screencast-culture/", "published_at": "2017-07-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312140c69e3", "title": "Make the most of your Chat Channels", "url": "https://kevinjalbert.com/make-the-most-of-your-chat-channels/", "published_at": "2017-06-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312141ce359", "title": "Create your own Pronto Runner", "url": "https://kevinjalbert.com/create-your-own-pronto-runner/", "published_at": "2017-05-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131214a12cb2", "title": "Bluetooth Connection/Battery Script for macOS", "url": "https://kevinjalbert.com/bluetooth-connection-battery-script-for-macos/", "published_at": "2017-04-08T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131214f6103d", "title": "Cut Code Review Noise on GitHub", "url": "https://kevinjalbert.com/cut-code-review-noise-on-github/", "published_at": "2017-03-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131214f75198", "title": "Find and Bury Dead Code", "url": "https://kevinjalbert.com/find-and-bury-dead-code/", "published_at": "2017-02-26T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312153012c9", "title": "Simplify the Styles, Drop the Distractions", "url": "https://kevinjalbert.com/simplify-the-styles-drop-the-distractions/", "published_at": "2017-01-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131215dae6d2", "title": "Information at a Glance: RailsRequestStats", "url": "https://kevinjalbert.com/information-at-a-glance-rails-request-stats/", "published_at": "2016-12-21T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312167df58d", "title": "Deploying my Website to GitHub Pages", "url": "https://kevinjalbert.com/deploying-my-website-to-github-pages/", "published_at": "2016-11-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131216da2749", "title": "Sidekiq: Contained Callbacks", "url": "https://kevinjalbert.com/sidekiq-contained-callbacks/", "published_at": "2016-10-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312179c30f5", "title": "Let's pry into Ruby Objects", "url": "https://kevinjalbert.com/lets-pry-into-ruby-objects/", "published_at": "2016-09-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312188748d7", "title": "Git Evolution: How did we get Here?", "url": "https://kevinjalbert.com/git-evolution-how-did-we-get-here/", "published_at": "2016-08-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131218c0edce", "title": "Port Mapping Development Servers", "url": "https://kevinjalbert.com/port-mapping-development-servers/", "published_at": "2016-07-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-1312197c6de5", "title": "More Shell History", "url": "https://kevinjalbert.com/more-shell-history/", "published_at": "2016-06-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-131219c2851f", "title": "Keep on Learning, but don't Forget to Remember", "url": "https://kevinjalbert.com/keep-on-learning-but-dont-forget-to-remember/", "published_at": "2016-05-31T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121a6017b0", "title": "Enhanced Vim Searching", "url": "https://kevinjalbert.com/enhanced-vim-searching/", "published_at": "2016-04-30T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121b0091d6", "title": "Defined Methods in Rake Tasks; You're Gonna Have a Bad Time", "url": "https://kevinjalbert.com/defined_methods-in-rake-tasks-you-re-gonna-have-a-bad-time/", "published_at": "2016-03-21T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121bd00192", "title": "Vim Substitution Feedback Using vim-over", "url": "https://kevinjalbert.com/vim-substitution-feedback-using-vim-over/", "published_at": "2016-02-29T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121c8718e1", "title": "Project-Wide Search and Replace with Vim", "url": "https://kevinjalbert.com/project-wide-search-and-replace-with-vim/", "published_at": "2016-01-28T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121d65795c", "title": "Respect HTTP Caching", "url": "https://kevinjalbert.com/respect-http-caching/", "published_at": "2015-09-24T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121da98f7d", "title": "Faster RSpec Regression Testing", "url": "https://kevinjalbert.com/faster-rspec-regression-testing/", "published_at": "2015-09-21T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121e0dc4bb", "title": "Share Your Bag of Tricks", "url": "https://kevinjalbert.com/share-your-bag-of-tricks/", "published_at": "2015-05-01T00:00:00+00:00" }, { "id": "01a07df3-b2ec-7020-973a-13121e804046", "title": "No Excuses: Verifying RSpec Test Doubles", "url": "https://kevinjalbert.com/no-excuses-verifying-rspec-test-doubles/", "published_at": "2015-04-28T00:00:00+00:00" } ] posts Claim your blog
Back to Kevin Jalbert
Blog · corpus.blog/blogs/kevinjalbert.com/posts

Kevin Jalbert

kevinjalbert.com

2023

2022

2021

2020

2019

2018

2017

2016

2015