Event Modeling By Example

Good design is a fundamental thing for me when it comes to building applications. Yes, there is a time in a place for a quick functional program that does a simple job ala scheduled batch file. But in almost all cases, committing even a small amount…

A redefinition of serverless applications

"Serverless is a way to describe the services, practices, and strategies that enable you to build more agile applications so you can innovate and respond to change faster. With serverless computing, infrastructure management tasks like capacity…

The Importance of Resetting to Zero

I'm sure everybody reading this post has experienced this at some point. You close down your computer on a Friday, excited for the weekend. You then proceed to spend the entire weekend thinking about the week you've just had and pre-empting all of…

Front End for the .NET Developer with Blazor Web Assembly

Throughout my entire development career, I've always found web to be the best way of deploying an interface to any software I've written. Desktop never really appealed to me, maybe that comes from growing up almost entirely in an age where everything…

Refactoring with Clean Architecture - The magic of well-designed software

This week has been a pretty crazy one, with an AWS exam and two weddings in three days (one of which I was the best man) there hasn't been much mental capacity for Golang. So this post takes on a slightly shorter and more high-level discussion around…

CI/CD in GoLang with Azure Dev Ops and AWS Elastic Beanstalk

This post follows a series of articles I've been writing about designing a distributed system. I'd highly recommend at least ready part 1 before this one just to get a little bit of context. Now that the team-service application is as feature-rich as…

How to use Amazon SQS and SNS for inter-service communication - Part 2

In my last article in the Design.Build.Deploy series I configured my first application event handler using Amazon SNS and SQS. For those of you who don't want to step back and read that article, the basic premise is that: A new team record is created…

How to use Amazon SQS and SNS for inter-service communication - Part 1

It's been a busy week this week, so further development on the league manager application has been slow. That said, it felt like time to add the groundings for inter-service communication. It's event bus time. Inter-Service Communication In a…

AWS DynamoDb in GoLang

After spending a lot of the week finalizing the team service with an in-memory data provider and feeling like I was reasonably feature-complete I made the decision to get down in the details. The details in this case, being AWS DynamoDB. A quick side…

Clean Architecture in .NET Core

I recently wrote an article around the importance of automating the coding standards around your codebase. Whether that be tabs vs spaces, the number of classes per file or the way comments are structured. It makes the legibility of code so much…

Project Structure and Test Driven Development in GoLang

I find a well-structured project helps massively as an application grows in scope and complexity. Whilst for small projects like this it may not be too relevant, building a habit requires constant practice and refinement so I try to follow the same…

Designing a Distributed System

If you haven't already, I'd highly recommend checking out part 1 of this series for a bit of background So you have a broad specification for a system you need to build, but really what happens next? Developer James of a year or two ago would have…

Design. Build. Deploy. - Series Introduction

One of my developer goals in 2020 is to broaden my horizons. I've always been a .NET developer, which is great for my day to day life. It's familiar, it's friendly and it keeps my brain ticking over. But life is about challenging yourself and…

The importance of automated coding standards

There are lots of things we all know, as developers, we should do. These same things are things we likely never do. Documentation, common file naming conventions, a consistent way of structuring code files. Sometimes we start a new project and go…

How to share Azure Dev Ops Build Pipelines

In my company, we deploy lots of different projects to lots of different clients. This leaves us with lots of Azure Dev Ops projects with numerous different repositories within each. There are also a small number of people in the company who…

Why all our objects be a little more private

When I first started developing software, and for a good period of my development life, I didn't care or really know about object property accessors. Every class I created would look like this I would use accessors for methods and the classes…

What I learned making my first open-source pull request

Last night I took a bold first step as a developer and opened my first official open-source pull request. I've been testing the waters with the Dapr framework recently, and the .NET Core API's were missing some key functionality. What better way to…

Using Dapr for Microservice Communication

Getting started Last week I wrote an article discussing the different faces of microservice communication. One of my biggest gripes when building microservices is the knowledge each service must-have of any other service it needs data from (event bus…

The different faces of microservice communication

Microservices are the 'in' way of developing software at the moment, and have been for quite a while now. They certainly seem to be past the 'oooo new shiny thing' stage that is prevalent in software (I'm looking at you javascript frameworks). I've…

Multiple Debug Configs with Multiple Build Tasks – VS Code

I’ve recently overcome one of my biggest bugbears with developing in VS Code. This may be something that was a massive oversight on my part, or it may be an extremely useful tip for my fellow developers. The pain points arose if I had multiple .NET…

100 Days of Code Week 1 – Learning React

I’ve recently decided to take the #100DaysOfCode challenge. For those not familiar with the concept, you commit to writing code for at least an hour every day. There are also a couple of ground rules: Code for at least an hour every day Tweet about…

CQRS in Microservices - Breaking the rules

Since learning about CQRS, it’s something I’ve taken into almost every new data-based microservice I build. Differentiating how data is created to how it’s retrieved gives you a lot of power. Take a relational database. Where a table has a relation…

Git Release Flow

An introduction to Release Flow I discovered the release flow methodology after working with Git Flow for a number of years. I loved Git Flow, it’s simplicity was amazing. That said, I am a firm believer in always trying new things and continually…

Adding Microservice functionality

Following on from the first article about my process of architecting microservices, today I’m going to look at adding functionality. Traditionally, in a monolith, new features can cause concern. What if I add a feature and it breaks a seemingly un…

Two quick tips for writing legible code

We’ve all been there. Looking back over a piece of code we wrote many moons ago and wondering what the hell our intent was. A similar thing can happen when looking over code somebody else has written. Whilst neither situations indicate ‘bad’ code, it…

A Case Study In Architecting Microservices

In my day to day job, I cover almost all facets of the software development lifecycle. From architecting systems right through to delivering and supporting them. The company I work for is small (there are two of us), so we both fulfill a variety of…

Branching & Merging – Part 2 – Git Flow

If you missed part one of my series of articles on branching, merging and the general organization of git repositories; you can find it here https://jameseastham.co.uk/posts/branching-merging-part-1-should-you-do-it An Introduction To Git Flow I’d…

Branching & Merging – Part 1 – Should you do it?

For my first set of articles on this development blog, I’m not actually going to talk about code directly. Instead, I’ve going to focus my attention on source control and all things related to branching and merging. We’ve all been there as developers…

From Scripter to Programmer - A learning journey

Writing and understanding software is difficult, period. Whilst not quite akin to learning a new language the journey to being a good developer is certainly a long one. The syntax, the wording, the ‘best practices’, performance, extensibility… there…