RSSAmplifier

Blog

Ken Bonny's dotnet, Azure, architecture and feature testing focussed blog

Software craftsman specialising in Microsoft technology

kenbonny.netRSS feed ↗20 posts

Latest posts

Closing thoughts on A-Frame architecture

Phew, that was a lot. I'm always surprised how simple solutions contain so much detail and nuance when I try to explain them. I hope I conveyed the message that A-Frame simplifies code within a module or class by separating the infrastructure compone...

Testing A-Frame architecture

No architecture is complete without an easy way to test the functionality. My recommended strategy is to use two types of tests: unit and integration. As far as test setup goes, there is no clear winner for a test framework. xUnit.NET, NUnit and the ...

Tackling complex examples using A-Frame architecture and Wolverine

The examples in the previous posts seem really nice for simple scenarios. How do I approach more advanced use cases? The big scenarios are: I need multiple pieces of data from different sources I need to perform an infrastructure call in the middle...

Leverage Wolverine's A-Frame architecture support

I’ve shown how I write code using the A-Frame architecture without help. Yet I find a library or framework very convenient when using advanced techniques. Wolverine is at its core a messaging framework, but goes well beyond that. It has an in-memory ...

A simple A-Frame example

Now the expected structure is clear, let's take a look at the code. I will start with a minimal API implementation to demonstrate that there is no need for a framework to implement this architecture. I do know of a framework that makes A-Frame effort...

What is A-Frame architecture?

A-frame architecture is a pretty simple architectural pattern: it separates interacting with infrastructure from taking decisions using logic. Between the two is a controller who orchestrates the flow of data. Everything in your code should respect t...

A-Frame-mazing architecture overview

In my last projects, I’ve been using the same approach with great success. It has simplified my code, my tests and the project’s setup. In the following blog posts, I’m going to talk about A-Frame Architecture: what it is, how I use it, how to tackle...

Why Automatic Mapping Is An Antipattern

It's been a while since I've blogged. Mainly because my life has been quite busy since my last post and I'm not sure if I'm picking up the habit as frequently as before. The reason I'm writing is that I responded to a Reddit post about using an autom...

Setting Fastmail DNS records for Cloudflare

Recently I switched from Googles Workspaces to Fastmail as my mail provider. Not only am I paying less, I'm getting more in return. I love the +notation alternative and that any, not-specified, email address gets dropped into my inbox. No more settin...

Rediscovering implicit casting

A lot of my ideas are good, but unfortunately not all of them. On my last blog post, I got feedback (via two reddit posts) that I did not think things through enough. (My wife says that happens more than I realise.) After mulling it over, I realised ...

Rediscovering implicit casting

⚠ WARNING ⚠ The information in this blog post is largely wrong. Read more about it in this blog post. With all the new goodies of C# 10 coming soon, a co-worker noted that type aliases aren't part of this release. He's kinda jealous that Kotlin has...

Introducing C# 10

Here is a first for my blog: Rwing offered to translate it to Chinese. So I took him up on it and you can read his translation on his blog cnblogs.com. I hope it says nice things about me. 😁 C# 10 Earlier this week, I followed a talk by Mads Torger...

Moving my blog to HashNode

As promised, the details on how to switch from WordPress to Hashnode. I wrote about the reasons why I'm switching in a previous blog post. I'm not going to repeat myself, instead I'm going to focus on all the things I had to do to switch. Preparing t...

Moving my blog to Hashnode

Lately I've not been very happy with WordPress as the home for my blog. It has a ton of features I don't need, it has hundreds of free premade templates of which I chose the least ugly one and it is quite complex. Each time I visited my own blog (not...

Jimmy Bogards crossing the generics divide

Jimmy Bogard wrote a blog quite recently about how to inject generic components without using the generic part. As I have struggled with this in the past, I thought I’d create a little implementation to check out how his article solves the problem. ...

Moving to trunk based development

The project I'm working on is a smaller one. The current release pipeline has a number of specially named branches for each environment. This looks like it was based on GitFlow, but with some oddly specific named branches. So I started thinking about...

The end of 2020

It's been one hell of a year, one none of us will ever forget. I really hope it will be because of all the wonderful times humanity showed us it's shining side. The times friends, family and strangers showed compassion and sympathy. At the end of the...

My home office - the peripherals

After talking about my new office desk, chair and monitor arm, I wanted to highlight the other tools on my desk. Disclaimer: I've bought all my gear myself with my own, hard earned, money. So no sponsorship here! Which is why I can give you the good...

My home office - monitor arm

Third blog in a row about my office, this one is about the brand new monitor arm I got. This one took me by surprise as I did not think it would make such an impact on me. Disclaimer: I've bought all my gear myself with my own, hard earned, money. So...

My home office - the chair

Last week, I wrote about the sturdy SmartDesk 2. This week, I review the comfortable new chair I'm sitting on while typing this. Oh, spoiler alert, the chair is living up to it's expectations. Disclaimer: I've bought all my gear myself with my own, ...