From Zero to Production: A Complete Python Setup Guide
Python, Zumbro Peter Somerville Python, Zumbro Peter Somerville

From Zero to Production: A Complete Python Setup Guide

You've got a brilliant Python project idea. You create a file called main.py, and start coding. Fast forward six months: your script has grown into multiple files, dependencies, and contributors. Now you're drowning in errors and deployment headaches. Most Python projects start this way, but they don't have to. By setting a strong foundation, you save headaches and plan for project success.

Read More
Hands-On CI: Building Your First GitHub Actions Workflow
GitHub, Continuous Integration, Automation Peter Somerville GitHub, Continuous Integration, Automation Peter Somerville

Hands-On CI: Building Your First GitHub Actions Workflow

We have previously talked about why Continuous Integration is a powerful DevOps concept for helping your team develop high-quality code faster. Today we are taking you through a deep-dive into the “how,” with step-by-step instructions for setting up a linting pipeline in GitHub Actions. We’ll explain how and why CI workflows can take your team to the next level!

Read More
DevOps Approaches for SOC 2 Success
DevOps, SOC 2 Peter Somerville DevOps, SOC 2 Peter Somerville

DevOps Approaches for SOC 2 Success

In today's software world, demonstrating your commitment to security and reliability is paramount. SOC 2 is a widely recognized auditing standard that helps organizations do just that. While preparing for an audit can seem daunting, embracing DevOps principles and tools with Zumbro can help prepare you and your team for SOC 2 success.  

Read More
Legacy Code: Defuse the Time Bomb
DevOps, Engineering Standards, Zumbro Peter Somerville DevOps, Engineering Standards, Zumbro Peter Somerville

Legacy Code: Defuse the Time Bomb

Legacy code that doesn’t measure up to your linting or formatting standards can lie dormant for months and then explode into a crisis. Tackling these hidden hazards isn’t just a nice-to-have, it’s essential for keeping your software delivery engine humming. In this post we’ll walk through the ways that outdated legacy code can bring your team to a halt, and show you how Zumbro, our GitHub App, offers a fast and straightforward way to get control of your legacy mess.

Read More
How Zumbro Helps Your Software Team
Zumbro, DevOps Peter Somerville Zumbro, DevOps Peter Somerville

How Zumbro Helps Your Software Team

The Zumbro App for GitHub helps you define, apply, and enforce engineering standards right in your workflow, without adding overhead. Below are three situations where teams hit the same roadblocks, and how Zumbro can help you ship better code faster.

Read More
Introducing Zumbro: Slash Tech Debt with Automated Code Fixes
Zumbro, GitHub, DevOps Peter Somerville Zumbro, GitHub, DevOps Peter Somerville

Introducing Zumbro: Slash Tech Debt with Automated Code Fixes

Say Hello to Zumbro, our GitHub app. Zumbro is the DevOps automation tool that helps your team define, apply, and enforce engineering standards, without adding overhead. If you’re looking to improve teamwork, reduce technical debt, and accelerate shipping velocity, Zumbro gives you the foundation to do it, right inside your GitHub workflow.

Read More
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
Teach Your AI Agent to Write Python Logs Like a Pro
Artificial Intelligence, Python Peter Somerville Artificial Intelligence, Python Peter Somerville

Teach Your AI Agent to Write Python Logs Like a Pro

Last week we made the case for why logging is the DevOps superpower that gives you X-ray vision into your systems. What if you are using AI Agents to write your Python code? Just like we train junior developers to build habits that lead to better software, we need to guide our AI Agents to log their code in smart, structured, and consistent ways.

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
The Goldilocks Pull Request
Caparra, DevOps Peter Somerville Caparra, DevOps Peter Somerville

The Goldilocks Pull Request

A Pull Request should be focused. It should do one thing well: fix a bug, add a feature, or refactor a specific part of the code. This helps reviewers follow what changed and why, help CI tools test your changes, and help your future self understand the changes. Your PR should appeal to Goldilocks: not too large, and not too small.

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
Microservices and DevOps: A Perfect Match
Software, DevOps Peter Somerville Software, DevOps Peter Somerville

Microservices and DevOps: A Perfect Match

If you're a developer exploring ways to improve your codebase and simplify your life, you've likely heard the term "microservices." It's one of those buzzwords you might nod along with but never get around to exploring in depth. Let’s take a closer look at what microservice architecture really means, why it's valuable, and how to get started without getting overwhelmed.

Read More
Clean Commits from the Start with pre-commit
DevOps Peter Somerville DevOps Peter Somerville

Clean Commits from the Start with pre-commit

Have you ever run git commit, only to realize later that you forgot to fix a small error? If so, you know that tiny missteps can quickly add up to big hassles for your entire team. That is why a simple tool called pre-commit can be so helpful. It automatically runs checks, linters, and other automated routines right before you commit your code.

Read More
Sort It Out: How isort Makes Python Better
DevOps Peter Somerville DevOps Peter Somerville

Sort It Out: How isort Makes Python Better

When working with Python, keeping your code clean and organized is essential. You may have heard of isort, a handy tool that automatically sorts your Python imports. Keeping your import statements sorted is a simple step that is deceptively powerful, and we’ll talk about how adding isort to your Python workflows can save you hours and hours of time debugging your code. If only every part of coding was this easy!

Read More