Back to Home

This Old Blog

  • January 20, 2019 |
  • 2 min read

I've decided to resurrect this old blog to publish some nuggets about software architecture and development, and perhaps, if the mood strikes me, some scientific and philosophical musings. When I first posted here almost nine years ago in 2010, I had recently finished my B.S. in Computer Science and was working as a web developer for small mom and pop companies in my area. Shortly thereafter I was hired to my first "real" job in professional services as a junior consultant for a small software company, learned some industry practices, made some connections, and enthusiastically watched as large tech company acquired it. After the initial excitement wore off, I realized the culture was shifting rapidly away from what I originally enjoyed about the job and that I was working for a truly massive corporation. So a couple of like-minded colleagues and I quit, and we embarked on a journey to start our own consulting company. Many mistakes, lessons, successes, and years later our little firm is going strong, but I've increasingly felt the need to more directly refine my craft of software development. In our line of work (and in others I'm sure), it's easy to get comfortable with a subset of technologies and solutions while losing track of the bigger picture, inevitably getting stuck in the past while the rest of the industry leaps ahead.

My recent interest is in ideas that have been around for a while, some of which have seen a huge resurgence recently and some of which I'm attempting to absorb in a modern context:

  • Functional Programming
  • Reactive Programming
  • Clean Architecture
  • Domain Driven Design
  • Test and Behavior Driven Development

I come from a web front-end, PHP (I'd be a happy man to never write another line of PHP!), and C# background but recently have been learning about Golang, Elixir, Docker, GraphQL, game development in Unity, various cloud services, machine learning, decentralized ledgers, [insert additional bright-and-shiny objects here]. My goal with this blog is to focus and distill these efforts into a form that's personally useful to future-me and potentially others.

Read my older blog posts on blog.bennyjohns.com

Related Posts

The essential design concepts I use when developing an evolvable, distributed system.

Read More

How can we continuously integrate small changes while practicing acceptance test-driven development?

Read More

TDD and Testing Behavior

January 24, 2024

The importance of testing behavior when using test-driven development

Read More

When is it appropriate to use centralized orchestration versus event-driven choreography?

Read More

When defining a business problem and planning its solution, keep the two conversations separate...

Read More

Modern message brokers provide many important benefits to a distributed system...

Read More

Printable cheat sheets to help remember some of Uncle Bob's valuable contributions to the industry

Read More

Why Terraform?

December 25, 2019

Terraform leads the way in the infrastructure-as-code world...

Read More

I was looking for a quick and easy way to put together a personal static site and...

Read More

A few weeks ago, I decided to try Svelte's Sapper framework to handle the front-end of a simple app...

Read More

After years of consulting, I find myself continually coming back to three basic principles of system design...

Read More

In this fifth and final part of the Go middleware tutorial series, we'll use what we've learned to create a more structured API example...

Read More

Go Middleware - Part 4

February 24, 2019

In this fourth part of the Go middleware tutorial series, we'll discuss passing custom state along the request chain.

Read More

Go Middleware - Part 3

February 15, 2019

In this third part of the Go middleware tutorial series, we'll quickly look at a common variant on the recursive middleware implementation from part 2.

Read More

Go Middleware - Part 2

February 9, 2019

In this second part of the Go middleware tutorial series, we'll cover a recursive approach that provides a couple benefits beyond the simple loop chain example from part 1.

Read More

Go Middleware - Part 1

February 6, 2019

This is the first in a series of simple tutorials explaining the usage of HTTP middleware in Go.

Read More

How do we manage the architectural complexity that inevitably arises from using cloud services?

Read More

Drupal 6 Theme Info Error

September 14, 2011

Recently one of my client sites had an issue where the custom theme info was corrupted...

Read More

Here's a slight modification to the handy Google Bookmarks Bookmarklet...

Read More

While building a Drupal site for one of my clients, I was having a heck of a time integrating...

Read More