56,966 blogs · [ { "id": "01a087d6-f177-70f5-91fc-decf9357f0dc", "title": "You Can't Review 50 PRs a Day", "url": "https://rocky.dev/blog/you-cant-review-50-prs-a-day/", "published_at": "2026-05-28T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf94534782", "title": "The Toilet Paper Roll Test", "url": "https://rocky.dev/blog/the-toilet-paper-roll-test/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf94f561a5", "title": "Make It Cheap for Agents to Discover They're Wrong", "url": "https://rocky.dev/blog/make-it-cheap-for-agents-to-discover-theyre-wrong/", "published_at": "2026-05-21T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf95a71aef", "title": "I've Quit Four Good Jobs", "url": "https://rocky.dev/blog/ive-quit-four-good-jobs/", "published_at": "2026-05-20T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf95e84732", "title": "Writing Software by Hand Is Over", "url": "https://rocky.dev/blog/writing-software-by-hand-is-over/", "published_at": "2026-05-19T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9625d1a5", "title": "I Haven't Hand-Written a PR in Months", "url": "https://rocky.dev/blog/i-havent-hand-written-a-pr-in-months/", "published_at": "2026-05-18T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf96c1df7a", "title": "My Dad Lost Sleep When I Left John Deere", "url": "https://rocky.dev/blog/my-dad-lost-sleep-when-i-left-john-deere/", "published_at": "2026-05-15T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf96ddb5bb", "title": "Agents Can't Iterate Against Tests That Lie", "url": "https://rocky.dev/blog/agents-cant-iterate-against-tests-that-lie/", "published_at": "2026-04-21T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9785d6e6", "title": "How I Think About Staff Engineering", "url": "https://rocky.dev/blog/how-i-think-about-staff-engineering/", "published_at": "2026-03-17T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf97893e2f", "title": "Principles From Twenty Years of Software Engineering", "url": "https://rocky.dev/blog/principles-from-twenty-years-of-software-engineering/", "published_at": "2026-01-20T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf978a66cb", "title": "Reading List", "url": "https://rocky.dev/blog/reading-list/", "published_at": "2024-02-28T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf982f59d0", "title": "Thinking in Systems Summary", "url": "https://rocky.dev/blog/thinking-in-systems/", "published_at": "2024-02-27T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf98bd2180", "title": "Measure What Matters Summary", "url": "https://rocky.dev/blog/measure-what-matters/", "published_at": "2024-02-26T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf99bb5f58", "title": "When in Doubt, Iterate Faster", "url": "https://rocky.dev/blog/when-in-doubt-iterate-faster/", "published_at": "2024-02-15T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf99bf6fbf", "title": "How High is Your Technical Debt's Interest?", "url": "https://rocky.dev/blog/how-high-is-your-technical-debts-interest/", "published_at": "2024-02-14T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9a1ca7e1", "title": "SQS Best Practices", "url": "https://rocky.dev/blog/sqs-best-practices/", "published_at": "2023-05-20T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9abcc08c", "title": "PrivacyProtect: Securely Share Passwords and Store Sensitive Files in Convenient Locations", "url": "https://rocky.dev/blog/introducing-privacyprotect/", "published_at": "2023-02-09T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9b3ce616", "title": "Getting MMS Working on GrapheneOS With Google Fi", "url": "https://rocky.dev/blog/getting-mms-working-on-grapheneos-with-google-fi/", "published_at": "2023-01-13T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9b9eac19", "title": "Connecting to Private RDS Databases From Your Local Machine", "url": "https://rocky.dev/blog/connecting-to-rds-databases-from-your-local-machine-without-ssh/", "published_at": "2023-01-12T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9bfb2217", "title": "Why I Quit Drinking", "url": "https://rocky.dev/blog/why-i-quit-drinking/", "published_at": "2022-12-24T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9cf07688", "title": "A (Relatively Easy To Understand) Primer on Multi-Party Computation", "url": "https://rocky.dev/blog/a-primer-on-multi-party-computation/", "published_at": "2022-10-27T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9d0c79f4", "title": "The Importance of Cultivating a Deep Work Culture", "url": "https://rocky.dev/blog/deep-work/", "published_at": "2022-10-07T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9dfdf409", "title": "Death to (Synchronous) Standups", "url": "https://rocky.dev/blog/death-to-standups/", "published_at": "2021-05-04T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9e7e546f", "title": "OpenAPI Spec-First API Development", "url": "https://rocky.dev/blog/openapi-spec-first-api-development/", "published_at": "2021-04-07T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9f58d49b", "title": "Rust: First Impressions", "url": "https://rocky.dev/blog/rust-first-impressions/", "published_at": "2021-03-04T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decf9f5da216", "title": "Running Linux GUI Apps in Docker on Mac", "url": "https://rocky.dev/blog/running-linux-gui-apps-in-docker-on-mac/", "published_at": "2021-02-02T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa0550604", "title": "Start Local Services Fast in Zero Lines of Code with Docker Compose", "url": "https://rocky.dev/blog/start-local-services-fast-in-zero-lines-of-code-with-docker-compose/", "published_at": "2021-01-04T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa11578cc", "title": "Git Fundamentals", "url": "https://rocky.dev/blog/git-fundamentals/", "published_at": "2020-12-01T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa126cb97", "title": "Full-Text Search Battle: PostgreSQL vs Elasticsearch", "url": "https://rocky.dev/blog/full-text-search/", "published_at": "2020-09-02T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa1762b33", "title": "Scala Best Practices", "url": "https://rocky.dev/blog/scala-best-practices/", "published_at": "2020-07-29T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa21fc7f5", "title": "Scala Learning Resources", "url": "https://rocky.dev/blog/scala-learning-resources/", "published_at": "2020-06-14T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa29320ae", "title": "Kotlin: First Impressions", "url": "https://rocky.dev/blog/kotlin-first-impressions/", "published_at": "2020-03-03T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa38781bb", "title": "Scala: The Good Parts", "url": "https://rocky.dev/blog/scala-the-good-parts/", "published_at": "2020-03-02T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa3dabfb4", "title": "When IntelliJ Loses Its Mind, Run This", "url": "https://rocky.dev/blog/when-intellij-loses-its-mind-run-this/", "published_at": "2020-03-01T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa4cf5b29", "title": "Use a Script to Call It a Day", "url": "https://rocky.dev/blog/use-a-script-to-call-it-a-day/", "published_at": "2019-10-07T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa586cf0b", "title": "Serverless Webhooks Talk", "url": "https://rocky.dev/blog/serverless-webhooks-dsmjs-talk/", "published_at": "2019-05-22T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa6686715", "title": "Lessons Learned From Sending Millions of Serverless Webhooks", "url": "https://rocky.dev/blog/lessons-learned-from-sending-millions-of-serverless-webhooks/", "published_at": "2019-05-22T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa68ebfac", "title": "Hashing vs Encryption", "url": "https://rocky.dev/blog/hashing-vs-encryption/", "published_at": "2018-06-01T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa7099a96", "title": "Go Learning Resources", "url": "https://rocky.dev/blog/go-learning-resources/", "published_at": "2017-08-07T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa787ff63", "title": "Kingman to Los Angeles via Joshua Tree National Park", "url": "https://rocky.dev/blog/day-17/", "published_at": "2017-05-23T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa7afc7f0", "title": "Flagstaff to Kingman via the Grand Canyon and Route 66", "url": "https://rocky.dev/blog/day-15/", "published_at": "2017-05-21T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa7c08637", "title": "Show Low to Flagstaff, I Dropped the Bike", "url": "https://rocky.dev/blog/day-14/", "published_at": "2017-05-20T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa87068d9", "title": "Santa Fe to Show Low in the Snow and Rain", "url": "https://rocky.dev/blog/day-13/", "published_at": "2017-05-19T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa8fe0c48", "title": "Roswell to Santa Fe to Solve the Meow Wolf Mystery", "url": "https://rocky.dev/blog/day-12/", "published_at": "2017-05-18T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfa9a12244", "title": "Marfa to Roswell to Uncover the Truth About Aliens", "url": "https://rocky.dev/blog/day-11/", "published_at": "2017-05-17T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfaa56a58b", "title": "Big Bend to Marfa Where I Struggle to Live Like a Hippie", "url": "https://rocky.dev/blog/day-10/", "published_at": "2017-05-16T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfab10f606", "title": "Del Rio to Big Bend, The Wild West", "url": "https://rocky.dev/blog/day-9/", "published_at": "2017-05-15T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfab830f9a", "title": "Austin to Del Rio via the Best Motorcycle Road in America", "url": "https://rocky.dev/blog/day-8/", "published_at": "2017-05-14T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfac70717e", "title": "Houston to Austin Where I Rest My Bike to Bike", "url": "https://rocky.dev/blog/day-6/", "published_at": "2017-05-12T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfacc23d6b", "title": "New Orleans to Houston with Most of My Stuff", "url": "https://rocky.dev/blog/day-5/", "published_at": "2017-05-11T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfad42e454", "title": "Gulf Shores to New Orleans is a Tale of Insect Mass Murder", "url": "https://rocky.dev/blog/day-4/", "published_at": "2017-05-10T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfad4b80c4", "title": "Panama City to Gulf Shores via the Town from The Truman Show", "url": "https://rocky.dev/blog/day-3/", "published_at": "2017-05-09T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfadb76115", "title": "Cedar Key to Panama City Beach's Seediest of Motels", "url": "https://rocky.dev/blog/day-2/", "published_at": "2017-05-08T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfae03f402", "title": "Orlando to Cedar Key on a Bike Much Bigger Than Me", "url": "https://rocky.dev/blog/day-1/", "published_at": "2017-05-07T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfaef6b10d", "title": "The Test Ride Was a Near Disaster. And a Great Success.", "url": "https://rocky.dev/blog/the-test-ride/", "published_at": "2017-05-06T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfaf4f3249", "title": "My Tentative Route Across the Country", "url": "https://rocky.dev/blog/my-tentative-route-across-the-country/", "published_at": "2017-04-24T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfafba5364", "title": "Motorcycling Across America", "url": "https://rocky.dev/blog/motorcycling-across-america/", "published_at": "2017-04-10T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb00ee1c2", "title": "Prime Factors Kata in Scala", "url": "https://rocky.dev/blog/prime-factors-scala/", "published_at": "2012-09-20T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb01b0a5b", "title": "Test Before > Test After", "url": "https://rocky.dev/blog/test-before-test-after/", "published_at": "2012-08-03T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb045907d", "title": "Save Hours and Make Life Easier with these Free Apps", "url": "https://rocky.dev/blog/save-hours-and-make-life-easier-with-these-free-apps/", "published_at": "2012-07-10T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb0d964a7", "title": "Fresh Hot 100: an App for Only the Most Recent Chart Toppers", "url": "https://rocky.dev/blog/fresh-hot-100/", "published_at": "2012-06-28T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb13dbdc4", "title": "Android Development: Casino Strategy v2.0", "url": "https://rocky.dev/blog/android-development-casino-strategy-v2/", "published_at": "2012-06-27T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb1598133", "title": "Prime Factors Kata in Clojure", "url": "https://rocky.dev/blog/prime-factors-clojure/", "published_at": "2012-06-22T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb1fec579", "title": "Farewell to John Deere", "url": "https://rocky.dev/blog/farewell-to-john-deere/", "published_at": "2012-06-18T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb23ead83", "title": "SOLID Principles to Code By", "url": "https://rocky.dev/blog/solid-principles-to-code-by/", "published_at": "2012-05-15T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb24ddcf5", "title": "Android Development: Casino Strategy v1.0", "url": "https://rocky.dev/blog/android-development-casino-strategy-v1/", "published_at": "2012-05-14T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb2f42dab", "title": "Diving into Android Development in Java/Eclipse", "url": "https://rocky.dev/blog/diving-into-android-development/", "published_at": "2012-04-18T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb33a49a1", "title": "Setting Linux System Time, Date, and Time Zone", "url": "https://rocky.dev/blog/setting-linux-system-time-date-and-time-zone/", "published_at": "2012-03-26T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb3ec1c01", "title": "Command-Line Mercurial", "url": "https://rocky.dev/blog/command-line-mercurial/", "published_at": "2012-03-20T00:00:00+00:00" }, { "id": "01a087d6-f177-70f5-91fc-decfb4b3f161", "title": "Linux Bash Aliases", "url": "https://rocky.dev/blog/linux-bash-aliases/", "published_at": "2012-03-07T00:00:00+00:00" } ] posts Claim your blog
Back to rocky.dev
Blog · corpus.blog/blogs/rocky.dev/posts

rocky.dev

rocky.dev

2026

2024

2023

2022

2021

2020

2019

2018

2017

2012