Blog

Trail Blaze

What are Architectural Decision Records (ADR)?

Brad Jolicoeur - 08/21/2020
One of the most painful parts of starting with a new team is to learn all of the nuanced patterns and practices you must adhere to. Often these nuances are not documented and to make matters worse, the common response given for why is, "that is just how we do it here". The tribal knowledge runs so deep it starts to look like cargo cult culture and in some cases it is just that.
Read More
CF Push

Deploy ASP.NET Core With Pivotal Cloud Foundry

Brad Jolicoeur - 07/23/2020
I've been experimenting with Pivotal Cloud Foundry recently and put this quick tutorial together for deploying an ASP.NET Core application using PCF. I was amazed at how easy this was and I'm sure you will be too. This is a quick getting started with Pivotal Cloud Foundry and ASP.NET Core.
Read More
foosball

Spring Cloud Config Server For Local Development

Brad Jolicoeur - 07/15/2020
Managing secrets on your development machine can be a challenge. This is evident in the high number of secrets that are regularly found publicly available in GitHub. I recently found that Spring Cloud Config Server running in Docker on my workstation has made managing those secrets without including them in my source control alongside the code a little easier.
Read More
grayscale concrete building

The Architect Elevator

Brad Jolicoeur - 03/24/2020
The role of Software Architect is typically not well defined in most organizations and I've found Gregor Hohpe's description of The Architect Elevator to be the most enlightening.
Read More
time for change

Maturity Model for Lasting Change

Brad Jolicoeur - 11/30/2019
Change is hard as a individual. Implementing lasting change in a team or organization is probably one of the most difficult things one can attempt. I say lasting change, because it is easy to impose short term change, but hard to make that change stick.
Read More
boat competition exercise

Stop Planning Based on Guesses

Brad Jolicoeur - 03/28/2019
Meditating on a software development task and picking a random number is a guess. There are other methods that provide equally effective methods of planning that do not include guesses.
Read More
fast car

Adopting New Technology

Brad Jolicoeur - 02/25/2019
Dr. Eliyahu M. Goldratt, author of The Goal and father of the Theory of Constrain identified Four questions necessary to realize the full benefits of adopting a new technology. These Four questions can be used to help your organization realize order of magnitude advantages when adopting new technologies like the Cloud.
Read More
Private Nuget Feed

Azure DevOps Private Nuget Feed with Docker Build

Brad Jolicoeur - 01/01/2019
I recently had to add a private NuGet package feed to my Azure DevOps build pipeline that creates a Docker container. It looks like a lot of folks are struggling to do the same thing so I put some notes together on how I was able to get it to work without adding secrets to my source control.
Read More
boat-competition-exercise-small.jpg

If Everyone Is Responsible, No One Is

Brad Jolicoeur - 11/25/2018
The notion that developers are light bulbs and any developer or team of developers will output the same code or have the same perspective on every pattern seems to be pervasive at pretty much every company I have worked for over the last 20 years. I believe there is a better way to organize your teams so that they have well defined boundaries and ownership of outcomes.
Read More
Message In A Bottle

NServiceBus Message Versioning

Brad Jolicoeur - 10/02/2018
As a software engineers we all know the requirements will change over time. At some point you will need to become comfortable with versioning your NServiceBus messages to adapt to those changing requirements. When you start thinking about the nuances of deploying endpoints that need to handle messages of different versions in flight or in an error queue waiting for retries it can be overwhelming at first. Luckily, there is a straight forward and relatively painless way to make changes to your contracts that will enable your endpoints to process old and new versions in parallel.
Read More