RSS Amplifier

Blog

Rocky Warren

My thoughts on software, AI, security, and leadership. Oh, and motorcycling.

rocky.devRSS feed ↗70 posts

Latest posts

You Can't Review 50 PRs a Day

No, and you don't need to. What's in the overnight PRs is scoped, low-risk backlog work, and a chain of small single-job skills is what makes it safe to merge.

The Toilet Paper Roll Test

Complaining is contagious. The people I most want to work with notice a problem and fix it, and David Anderson has a memorable test for spotting them.

Make It Cheap for Agents to Discover They're Wrong

The move that separated my best agent workflows from my worst: throwaway Storybook stories, test-driven development, adversarial review, and starting with the interface.

I've Quit Four Good Jobs

Knowing when to leave a place you love is harder than knowing when to leave one you don't. A look back at four departures and the question that drove each one.

Writing Software by Hand Is Over

Agents already out-code junior engineers. The job that's left is deciding what to build, writing feedback loops agents can run against, and proving they shipped it.

I Haven't Hand-Written a PR in Months

Clipboard has tripled deploys per engineer by letting local agents run well-defined tickets through the plan, ship, review, and fix loop.

My Dad Lost Sleep When I Left John Deere

Leaving a dream job wasn't a mistake, but it cost me a sense of mission I only found again years later, watching a nurse hit a bug in an app I helped build.

Agents Can't Iterate Against Tests That Lie

Coding agents went from writing none of Clipboard's code to nearly all of it in a year, and flaky tests broke the feedback loop they depend on. How we cut our E2E flake rate from 100% to under 15% in six weeks.

How I Think About Staff Engineering

What Staff Engineering is, how it differs from Engineering Management and from Senior, and how I think about the role's expectations and principles.

Principles From Twenty Years of Software Engineering

A Senior Staff Engineer's work principles from twenty years as a software engineer.

Reading List

Some of my favorite articles along with their ChatGPT-produced summaries.

Thinking in Systems Summary

Ideas are easy. Execution is everything. Objectives and Key Results (OKR), popularized by Intel, Google, Dropbox, LinkedIn, Slack, Spotify, and...

Measure What Matters Summary

Ideas are easy. Execution is everything. Objectives and Key Results (OKR), popularized by Intel, Google, Dropbox, LinkedIn, Slack, Spotify, and...

When in Doubt, Iterate Faster

Iteration speed is crucial to startup success. Companies tend to add processes and get slower as they grow. You must actively combat this tendency...

How High is Your Technical Debt's Interest?

Moving fast is a crucial competitive advantage. However, this speed is sometimes translated to "ship as fast as possible and only fix the mess you create...

SQS Best Practices

Best practices for working with AWS's simple queue service (SQS).

PrivacyProtect: Securely Share Passwords and Store Sensitive Files in Convenient Locations

Securely share secret passwords over text messages, send end-to-end encrypted emails, or store password-protected files on USB and cloud drives.

Getting MMS Working on GrapheneOS With Google Fi

Solve "MMS delivery failure; please contact Google Fi Support", "Account access only" and "Your SIM card couldn't be read" errors on GrapheneOS with Google Fi.

Connecting to Private RDS Databases From Your Local Machine

Connect to Relational Database Service (RDS) database instances in private Virtual Private Cloud (VPC) subnets from a local machine using EC2 bastion hosts (jump boxes).

Why I Quit Drinking

On my son's first birthday, I stopped drinking with the goal of reassessing after four months. I get asked why a lot. Here's the answer.

A (Relatively Easy To Understand) Primer on Multi-Party Computation

A primer on digital signatures and multi-party computation, a threshold signature scheme used to, among other things, securely sign blockchain transactions.

The Importance of Cultivating a Deep Work Culture

Implementing a deep work culture and fostering it as companies grow gives startups strong competitive advantages over larger companies.

Death to (Synchronous) Standups

It's up to each team to decide if an async standup is right for them. Make sure the benefits of synchronous standups outweigh these costs.

OpenAPI Spec-First API Development

Recent APIs I've built follow both the OpenAPI (formerly known as Swagger) and JSON:API specs. The former allows us to generate server-side data models and A...

Rust: First Impressions

Scala is great for recent microservices I've written, enabling incredible velocity. However, certain scenarios benefit from lower-level languages. I have fi...

Running Linux GUI Apps in Docker on Mac

Run Linux apps in Docker on Mac using an X Window system to avoid cross compiling dependencies or to sandbox an app.

Start Local Services Fast in Zero Lines of Code with Docker Compose

...unless YAML counts as code. Many companies have home-grown scripts and tools to start services locally. In my experience, the scripts start as well-inten...

Git Fundamentals

Git can seem overwhelming, but while performing typical day-to-day tasks, you'll use only about ten commands. Here they are.

Full-Text Search Battle: PostgreSQL vs Elasticsearch

A comparison of PostgreSQL and Elasticsearch full-text search over 1.5 million key-value pairs containing strings, numbers, and dates.

Scala Best Practices

Rather than using random examples from Scala projects in the wild, these are meant as my evolving "best" way of doing things.

Scala Learning Resources

Like any new technology, Scala and its ecosystem take a while to master and can be frustrating at times. Don't get discouraged! Here are some resources to he...

Kotlin: First Impressions

I played around with Kotlin recently and was pretty impressed. It seems like they took the best parts of C#, Scala, and Go. Here's a quick rundown of some fe...

Scala: The Good Parts

Scala allows you to accomplish tasks in different ways. I recently gave a talk explaining some of the more readable, maintainable approaches while attempting...

When IntelliJ Loses Its Mind, Run This

Occasionally, IntelliJ goes haywire and won't run your project or tests. Next time this happens, close IntelliJ, run the script below in your project directo...

Use a Script to Call It a Day

One of the cons of working from home is deciding when enough is enough. It's all too easy to get sucked into a problem, lose track of time, and let hours sli...

Serverless Webhooks Talk

In March, Dwolla updated its webhooks to a serverless architecture, improving their timeliness, configurability, cost and reliability. Watch the talk I gave ...

Lessons Learned From Sending Millions of Serverless Webhooks

In March, Dwolla's engineering team launched an updated webhook notifications architecture, cutting delivery times during peak load from minutes to seconds...

Hashing vs Encryption

Encryption is a two-way function. You can encrypt data, like a file, and then later decrypt it provided you have the proper encryption key. This is useful wh...

Go Learning Resources

I've only dabbled with Go in my spare time, but compiled this list of resources I found helpful. Getting Started Take A Tour of Go brew update && brew inst...

Kingman to Los Angeles via Joshua Tree National Park

After my rest day, I'm anxious to get moving. I have two more days of riding planned. I'll head to Joshua Tree National Park today, camp overnight, and then ...

Flagstaff to Kingman via the Grand Canyon and Route 66

It's been over five months since this trip and I haven't finished the blog. But I'm not a quitter. I wake up in Flagstaff, quickly pack my things, and, be...

Show Low to Flagstaff, I Dropped the Bike

The long way through Apache-Sitgreaves National Forest looks like a good one as I'll be riding Pine tree-lined highway all day. I'm meeting two friends, the ...

Santa Fe to Show Low in the Snow and Rain

It's in the low 30s and snowing when I wake up in Santa Fe. I put on my warmest clothes including a scarf I bought 14 years ago at a ski resort in New Zealan...

Roswell to Santa Fe to Solve the Meow Wolf Mystery

I wake up in Roswell and attempt to put my shirt on. It's stiff from 12 days of absorbed sweat. It's finally time to retire it to my dirty clothes garbage ba...

Marfa to Roswell to Uncover the Truth About Aliens

When I spent time in El Cosmico's office yesterday, there was a steady stream of people coming in to check out. The office doesn't open for an hour, though, ...

Big Bend to Marfa Where I Struggle to Live Like a Hippie

In the middle of the night in the Terlingua, I wake up in complete darkness and think for a second I'm back home. Realizing where I am, I remember the stars ...

Del Rio to Big Bend, The Wild West

Waking up in Del Rio, I haul my stuff down to the bike, drop my key card in the motel office, and grab a half cup of coffee. It's been sitting for a while an...

Austin to Del Rio via the Best Motorcycle Road in America

I wake up after my second night in Austin ready to go. A month back, I bought Butler Motorcycle Maps for most states I'm passing through and today is the fir...

Houston to Austin Where I Rest My Bike to Bike

The sixth day starts like the last few, I wake up in a strange room and it takes me a second to remember which town I'm in. This Airbnb has a dorm-style setu...

New Orleans to Houston with Most of My Stuff

I wake up in New Orleans with every intention of staying a second night. I've never been downtown and Brad says he'll show me around. I sleep in and lazily c...