Software Engineering categories

Looking back on C#

With C# 8 on our doorstep, I figure it is a good time to reflect on recent additions to the language that have come before. There are some great improvements you may have missed, some that I really enjoy using, and some I consider have reached canonical usage status that I think are all worth some reflection. It was …

So you wanna be a Rockstar (Developer)?

Have you been to see rock bands perform live? There are a lot of subtleties to their performance that you might not have noticed. And it is relevant to software…

Looking forward to dotnet in 2019

It’s a new year, and we already have a bunch of dotnet releases to look forward to, thanks to the open development processes that Microsoft is using these days with dotnet. The three big releases I am looking forward to are C# 8 and .Net Core 3.0, and a NetStandard2.1. (Not to mention there is a .Net Framework …

Speciality NuGet Packing on .Net Core

I recently wrote about NuGet packing on linux specifically, and want to continue the theme with other things you can do with NuGet packaging. As a quick recap you can use a .Net Core *.csproj as a wrapper around a *.nuspec file and use dotnet pack to pack it, cross-platform, without needing nuget.exe. <Project …

NuGet Packing on Linux

For anyone who has been cutting-edge with .Net for a while will know that the nuget.exe runs under mono. And that you can use nuget.exe to package *.nuspec files into *.nupkg files. Anyone who has been doing dotnet cross-platform will also know that you can use dotnet pack on both Windows and Linux to package your …

HostBuild your dotnet Consoles like you WebHostBuild your web apps.

I wrote a while back on getting your Windows Services building with .Net Core which is a nice way to use the new SDK pipeline but still host on Windows without much fuss. But what If you like the approach but want to run on Linux? Well after some stumbling around in the dotnet core docs, I found information about …

Agile Jogging to complement your Sprinting

Way back when I was first introduced to everything agile from Jezz Santos, we complemented the terminology of our “sprint” with that of a “jog”. Sprinting Sprinting or sprints are the idea of a (usually) timeboxed length of real-world time (5 days, 3 weeks etc) that produces a cadence of focused …

Method calls. Less chaining, more Functional.

It came up in a recent code review that we had a method that did stuff, then called a method that did stuff, that then called a method. Eventually, the last method in the chain bubbled back up and out. This is a bit of an anti-pattern in my eyes. Essentially you are coupling these methods (functions) together. As a …

Retry Policies with Polly

I originally set out to write about Polly. Then I started reading their documentation. I quickly realised that I couldn’t write anything as detailed and accurate as they already had available. So instead, I’m going to give more of a super high level, with links to relevant reading. You can find their …

Beefeater - Guard your methods' Ins and Outs.

A little while back I started paying attention to Rust and got all inspired to have a bit of that it C#. The result was this library I called Beefeater. This library contains helpers to add semantics to the optionality of your parameters and results from method calls. I built it on NetStandard1.0 for maximum …

A Little Town called Milton

There is a small town in the South Island of New Zealand called Milton. The main road runs right through the town in one side and out the other. Its a nice enough place to stop on a road trip. There is a unique feature to this main road in Miton, you see. When you get to the middle of the town and the road has a …

.Net on Docker - What's in my Dockerfile? Tips and Tricks

I’ve started getting into building Docker Containers as deployment packages. These are some learnings that I want to share, hopefully helping countless others with a better build, test and debug cycle with .Net on Docker with Visual Studio. Start with the defaults Use the built-in tools in Visual Studio to …

Some cool tricks with your Windows Shells

I’ve been getting more and more back to the command line, doing more with PowerShell and even Bash scripting on Docker and WSL (Windows Subsystem for Linux). There are a few of the tricks I have learned recently that help me every day. F8 searches history! That’s right! When you type into the command line …

Geeking out on a Saturday at the Birmingham Alt.Net Unconference

Unlike some unfortunate people who found out on the day and missed out, I had the opportunity to attend the Alt.Net Unconference in Birmingham this Saturday. Now I know some of you think Saturday Conferences are too far outside your work time. But hear me out on this first. This is a free event, which means no …

Clean Startup in your AspNetCore

I want to talk about this point made about Keeping a Clean Startup.cs in Asp.Net Core by K. Scott Alan. Mostly I want to agree and elaborate on it. (Warning! I used the British English customised below. If this doesn’t match your sensibilities, just use customize instead.) The Idea The basic idea is that we have …

Coveralls.Net 1.0.0 Release

Christmas 2014. I was building out projects on GitHub in open source. The obsession with open source even went on to spawn a Series of Blog Posts. Each tool or library I was building lead onto another tool or library to make the build pipeline, or development process better. Often putting down one project while I …

AWS Summit London 2018

I recently attended the AWS Summit in London and thought I would give some notes on the event from my perspective. As a developer working for a company that uses AWS, there was plenty to get out of an event such as this, and the free attendance makes a great business case to get the time to go. I really enjoyed the …

Develop your Rust in Docker

I decided a while ago that the next language I would try to learn is Rust. I don’t want to go too much into Rust other than to repeat its own summary: Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. – https://www.rust-lang.org/ But like …

You can't out-exercise a bad diet

I heard a great quote yesterday: You can’t out-exercise a bad diet And this is a great metaphor for technical debt. We all agree that you need to pay down your tech debt in your software. And it’s great to commit to addressing a little technical debt during each sprint. The problem is that this is the …

Code Katas

Our team recently went through the Bowling Game Kata (as seen on Clean Code) from Uncle Bob. Here are some interesting learnings and takeaways from the session that I picked up on. Practice makes perfect The only way to get good at something is to practice. The concept of doing a Code Kata is to practice the art of TDD …