For some time now, the Brigade maintainers, building upon the community’s experiences using the product, as well as our own, have been hard at work planning and implementing a major revision of the platform. Today, we’re proud to announce a milestone in that effort — the release of Brigade v2.0.0-alpha.1. While we’re still working out the kinks and cultivating an extended Brigade 2 ecosystem, we feel it is time to begin introducing the community to Brigade 2.
If you’re unfamiliar with Brigade, now might be a good time to head over to brigade.sh …
It’s been a while since my last post, but this one is a special treat — an addition to my “Go Pointers” series that is actually about… pointers.
My first exposure to pointers was in my sophomore year of high school as I worked my way through one of the earlier editions of Teach Yourself C in 21 Days. The following year, I started learning C++ in my computer science class and continued with C++ in AP Computer Science my senior year and throughout college. I graduated with a BS in Computer science, knowing what a pointer was and how…
Ex post facto is a Latin phrase meaning “with retroactive effect.” I find this an apt descriptor for the pattern I want to explore in this post.
In many languages, components (classes, in an OO language, for instance) must explicitly declare any interfaces they implement. For instance, in the following bit of Java code, we have an
Animal interface and a
Dog class that implements that interface.
Dog class explicitly invokes the
implements keyword to denote that it does, in fact, implement all the behaviors prescribed by the
Animal interface. Consequently, any code that is written against this…
About four years ago (which is probably about 20 in “container years”), I worked on an open source project that required extensive configuration of one’s local development environment in order to facilitate compilation, lint checks, unit tests, e2e tests, and a variety of other activities that were part and parcel with our development workflow. If memory serves, we needed
make, Go, Python, VirtualBox, Vagrant, Docker, and a laundry list of other, now forgotten tools. Worse-- we needed specific versions of many of those. Then there were numerous environment variables that had to be set.
To make matters worse, the tools…
For the latest in my “Go Pointers” series, examining the idiosyncrasies of Go, we’re going to take a look at some of the hazards of working with Go’s
math/rand package, which unfortunately necessitates extreme caution when doing so.
First, let’s look at very simple program that should print an integer between
Go ahead and run this program. Can I take a guess at the output you received? Was it
Clearly, this isn’t actually random. Let’s dig into why.
As you’re probably aware, computers aren’t great at performing non-deterministic tasks and this includes generation of…
I can’t believe I need to write this in 2019.
I wrote my first unit test sometime around 2005. I was two years out of college and two years into a thirteen year stint at a large Java shop. While I won’t make any claim to have been the first among my colleagues to write a unit test, I can say with certainty that test-driven development wasn’t a common practice there in 2005. As my role within the company changed over the next couple of years, I found myself in a position to demonstrate and advocate for broad improvements to…
Emphasis on I and in Go.
In a previous post I took a deep dive into some idiosyncratic reasons that I use interfaces in Go where I might not necessarily do so if working with another language. In this post, I want to cover the opposite scenario — a case where I might use interfaces if working in another language but do not in Go.
Spoiler alert — this mainly relates to testing!
I am duplicating the rest of this section verbatim from my previous post because it’s relevant context for the remainder of the post. …
But don’t assume you need more tech to close it.
Iwork with Kubernetes for a living — mostly developing open source platforms, middleware, and tools for Kubernetes. As an exercise, I frequently ask myself and my collaborators questions like, “What problem are we trying to solve?” and, “Who are we solving it for?” This helps us to focus, remain objective, and improves our ability to articulate a product’s value. I often pose similar questions to former colleagues and local meetup attendees — all of whom are at various milestones in their own company’s “journey to Kubernetes.” If they are building…
Emphasis on I and in Go.
If you’ve been coding for a while, I probably don’t need to explain all the obvious benefits of interfaces, but I’m going to take just a moment or two to level set before I dive into the more idiosyncratic reasons I use interfaces in Go.
Skip ahead if you’re confidant in your understanding of interfaces in general.
Using interfaces — collections of methods or behaviors — in any language, really, creates a thin layer of abstraction between bits of functionality and consumers of that functionality. By coding to interfaces, calling code requires no awareness…
Hello, and welcome to my Go Pointers series! This is something I’ve intended to do for a while now. It’s a new year, I’m fresh off two weeks of PTO, and feeling like there’s no time like the present.
I think it’s important to examine my motivations. First, I won’t pull any punches here. I admittedly have a love/hate relationship with Go. On any given day working with Go, I’m certain to experience numerous highs and lows. In some moments, I’m awestruck by the elegant simplicity of the language or simply pleased as punch to make short work of a…
Kent is a senior engineer on the Azure Cloud Native Computing team at Microsoft, working primarily with Kubernetes and other open source projects.