Articles by kevingoslar

Keep Your Source Code SIMPLE

Keep Your Source Code SIMPLE

As software developers, we are fortunate to have many useful best practices for productive and fun coding, like the SOLID principles, GRASP patterns, or STUPID anti-patterns. These principles are timeless and apply to many forms of coding...

Originate’s Collaborative GitHub-based Intranet

Originate’s Collaborative GitHub-based Intranet

Summary: Originate collaboratively develops its best practices and policies using GitHub as an intranet platform. This enables an unprecedented level of collaboration, but more importantly empowerment and transparency for the entire company. At Originate, we...

Introducing Tertestrial: A pragmatic test runner

Introducing Tertestrial: A pragmatic test runner

We are thrilled to announce a preview release of Tertestrial, a tool that makes running automated tests as part of developing software more natural and seamless. Why we need to run tests a lot In TDD and BDD (test/behavior driven development) our tests don't just...

Writing Your Own Gofix Tools

Writing Your Own Gofix Tools

The Go programming language and tool stack have been designed to combine manual and automated software development in novel ways, paving the path for how software will be written in the 21st century. Humans will be slow-rolling the creative parts while automated tools...

Introducing Git Town: A Git Workflow CLI Tool

Introducing Git Town: A Git Workflow CLI Tool

We are excited to announce the release Git Town! Git Town is an open source command-line tool that helps keep software development productive as project and team sizes scale. It provides a few additional high-level Git commands. Each command implements a typical...

Refactoring Git Branches – part II

Refactoring Git Branches – part II

This is a follow-up to Refactoring Git Branches - part I. While coding on a feature we almost always stumble across areas of the code base that should be improved along the way. If such an improvement is a larger change, I usually make a note to do it separately...

User-level Feature Specs With Cucumber

User-level Feature Specs With Cucumber

Summary Applications are not just collections of technology. They are designed to provide meaningful functionality within the user's domain of experience. To achieve that, they encapsulate complex technical implementations under intuitive, human-friendly user...

Casual APIs

Casual APIs

This blog post is inspired by some ideas from Avdi Grimm’s excellent book Confident Ruby. Definitely read it if this topic interests you. It contains a ton more best practices. Modern software projects typically combine different code bases like frameworks,...

Refactoring Git Branches

Refactoring Git Branches

TL/DR I describe a technique that allows one to extract commits from a larger Git branch into separate branches. This "git branch refactoring" provides numerous benefits: A fast-track for integrating urgent changes (like refactorings or bug fixes) that were created as...