The pre-commit Playbook
Engineering Standards, Caparra, DevOps Peter Somerville Engineering Standards, Caparra, DevOps Peter Somerville

The pre-commit Playbook

One of the core ideas behind DevOps is "shifting left." That means moving critical checks, testing, and feedback earlier in the software development lifecycle. Pre-Commit takes that "shift left" principle and gives it teeth. By running automated checks before code gets committed, it helps teams enforce consistency, spot bugs early, and maintain high standards. Check it out:

Read More
A Surprising Secret About Python Linters
Python, DevOps, Engineering Standards Peter Somerville Python, DevOps, Engineering Standards Peter Somerville

A Surprising Secret About Python Linters

It sounds crazy: you run your linter, fix the issues, run it again… and suddenly it finds more issues. Wait, what?

Yes, it’s a real thing. Depending on the complexity of your code and the tools you’re using, sometimes one pass isn’t enough to get a clean bill of health. But don’t worry, there’s a simple fix: run your linters twice!

Read More
Why Your Team Needs pre-commit
GitHub, Engineering Standards Peter Somerville GitHub, Engineering Standards Peter Somerville

Why Your Team Needs pre-commit

It’s easy to overlook pre-commit when you’re already using GitHub and have a continuous integration pipeline. Why add complexity? In fact, when used well, pre-commit can be the simplest and most effective way to eliminate bugs, style issues, and config drift before they even enter your Git history. pre-commit helps shift quality left, right into your fingertips as you write and commit code.

Read More
Why Linters Hate Unused Imports
Python Peter Somerville Python Peter Somerville

Why Linters Hate Unused Imports

If you’ve been writing Python code for long, you’ve run into one of the many tools that want to clean up your files. And you’ve probably noticed that they all want to delete unused imports. This might seem a little nitpicky, but there are good reasons to nuke unused imports. And while it starts with clean code, the reasons don’t end there.

Read More
The Elephant in the Room: Dealing with Legacy Code
Software, DevOps Peter Somerville Software, DevOps Peter Somerville

The Elephant in the Room: Dealing with Legacy Code

It’s easy to think of legacy code as something ancient and untouchable, written by long-gone developers in a forgotten dialect of JavaScript. But the truth is more complicated. Legacy code is just code that’s still running your systems, even though it no longer meets your team's standards. So what do you do with it?

Read More
How Code Reviews Should Work
Caparra, DevOps Peter Somerville Caparra, DevOps Peter Somerville

How Code Reviews Should Work

The best code reviews feel like collaboration, not judgment. They’re an opportunity to ask questions, learn, and improve as a team. When the small stuff is already taken care of, there’s space for that conversation to happen. Caparra is building tools to make this easier for your team.

Read More
Python Linter Showdown
Python, DevOps, Software Chad Rhyner Python, DevOps, Software Chad Rhyner

Python Linter Showdown

Python Linter Showdown! It’s time for a spirited comparison of four popular Python linters: black, flake8, pylint, and ruff. Each tool promises to tidy up your code, catch pesky bugs, and keep your scripts neat. Our contestants today will face off on three files containing some not-so-great Python. Get ready to witness our code-based house of horror!

Read More