ProgNet 2019

Last week I attended ProgNet 2019 held at SkillsMatter in London.

This is my sixth year of attendance (last year’s notes are here), and as usual I sketchnoted the talks that I attended. Videos for all of the talks are available on the ProgNet 2019 website.

We Are The Guardians Of Our Future

by Tess Ferrandez Website Twitter Video

We Are The Guardians Of Our Future by Tess Ferrandez

Beyond HTTP In ASP.Net Core 3.0 With gRPC

by Steve Gordon Website Twitter Video

Beyond HTTP In ASP.Net Core 3.0 With gRPC by Steve Gordon

Globalization And Localization In ASP.Net Core

by Rachel Appel Website Twitter Video

Globalization And Localization In ASP.Net Core by Rachel Appel

Communication In A Microservice World

by Irina Scurtu Twitter Video

Communication In A Microservice World by Irina Scurtu

Surviving Microservices

by Michele Leroux Bustamante Website Twitter Video

Surviving Microservices by Michele Leroux Bustamante

TDD And The Terminator - A Guide To Better TDD

by Layla Porter Twitter Video

TDD And The Terminator - A Guide To Better TDD by Layla Porter

The Pipeline Driven Organisation

by Roy Osherove Website Twitter Video

The Pipeline Driven Organisation by Roy Osherove

Bayesian Decision Making In The Face Of Uncertainty

by Gary Short Website Twitter

Bayesian Decision Making In The Face Of Uncertainty by Gary Short


DDD South West 9

DDD South West took place this last weekend in Bristol. It was a really good event as usual.

Here are the sketchnotes I did during the day.

Nailing Down Distributed Workflows With Microservices

by Ben Arroyo Twitter

Nailing Down Distributed Workflows With Microservices by Ben Arroyo

Writing High Performance C# And .Net Code

by Steve Gordon Website Twitter Slides

Writing High Performance C# And .Net Code by Steve Gordon

GraphQL And Dapper

by John Stovin Twitter

GraphQL And Dapper by John Stovin

Better The DevTool You Know

by Viv Richards Twitter

Better The DevTool You Know by Viv Richards

Kubernetes, Raspberry Pis, And More

by Dan Clarke Website Twitter

Kubernetes, Raspberry Pis, And More by Dan Clarke


DDD North 8

I’ve just got back from DDD North, held for the first time in Hull.

Here are the sketchnotes I did during the day.

IoT With Nothing But A Laptop

by Pete Gallagher Website Twitter Slides

IoT With Nothing But A Laptop by Pete Gallagher

Selling Unicorns With Shopify And Azure

by Michael Stephenson Website Twitter

Selling Unicorns With Shopify And Azure by Michael Stephenson

Making Noise With F#

by John Stovin Twitter

Making Noise With F# by John Stovin

Air Quality, LoRa And Azure Functions

by Rob Miles Website Twitter

Air Quality, LoRa And Azure Functions by Rob Miles

Solving Microservices Challenges On The Kubernetes Platform

by Shahid Iqbal Website Twitter

Solving Microservices Challenges On The Kubernetes Platform by Shahid Iqbal


NDC London 2019

A few weeks ago I attended NDC London. This time I attended as part of the NDC crew. In exchange for a free ticket to the event, you agree to help out for 50% of the time you are there.

The evening before the conference, I joined the other volunteer crew members at the venue to help get set up for registration. This involved unpacking the NDC hoodies (each attendee receives one) from their boxes and getting the registration desk set up with the conference lanyards and badges. The following morning, we had to be there bright and early to welcome the attendees, check them in, and issue their conference badges.

For the rest of the conference, half of each day is spent working, and half is yours to do as you please. I was assigned to one of the conference rooms for each afternoon. This involved ensuring that the speaker turned up to the room before their talk, dealing with any problems that may happen during the talk, and giving the speaker their NDC speaker gift after their talk. A downside of being assigned to a specific room is that you don’t get to choose the talks you see, but having volunteered before back in 2014, I knew I would still see some good talks.

Dynamic Runtime Code With Roslyn

by Jeremy Miller Website Twitter Video

Dynamic Runtime Code With Roslyn by Jeremy Miller

Pragmatic Performance

by David Wengier Website Twitter Slides Video

Pragmatic Performance by David Wengier

CSS Grid - What Is This Magic?

by Amy Kapernick Website Twitter Slides Video

CSS Grid - What Is This Magic? by Amy Kapernick

A Lap Around Azure DevOps

by Jakob Ehn Website Twitter Video

A Lap Around Azure DevOps by Jakob Ehn

ASP.Net Core One Hour Makeover

by Jon Galloway Website Twitter Slides Video

ASP.Net Core One Hour Makeover by Jon Galloway

Leadership Guide For The Reluctant Leader

by David Neal Website Twitter Slides Video

Leadership Guide For The Reluctant Leader by David Neal

Keeping It DRYer With Templates

by Layla Porter Twitter Video

Keeping It DRYer With Templates by Layla Porter

ML.Net For Developers Without Any AI Experience

by Lee Mallon Website Twitter Video

ML.Net For Developers Without Any AI Experience by Lee Mallon

Reverse Engineering A Bluetooth Lightbulb

by Jesse Phelps Twitter Video Video

Reverse Engineering A Bluetooth Lightbulb by Jesse Phelps

Let’s Talk HTTP In .Net Core

by Steve Gordon Website Twitter Slides Video

Let's Talk HTTP In .Net Core by Steve Gordon

Ctrl-Alt-Del: Learning To Love Legacy Code

by Dylan Beattie Website Twitter Video

Ctrl-Alt-Del: Learning To Love Legacy Code by Dylan Beattie

These are the other talks I attended but didn’t sketchnote:

Microsoft’s Open Source Journey

by Scott Hanselman Website Twitter Video

The Functional Programming Toolkit

by Scott Wlaschin Website Twitter Video

Solving Diabetes With An Open Source Artificial Pancreas

by Scott Hanselman Website Twitter Video


ProgNet 2018

I’m currently attending ProgNet 2018 held at SkillsMatter in London. This is an annual conference that focuses on the latest trends and technologies in the .Net space. The conference runs over three days, and consists of a day of talks followed by two days of instructor-led workshops.

I’ve been several times before and it’s always a good event, with a variety of topics covered over the three days. I especially enjoy the conversations outside of the sessions during the breaks and in the evenings, and the chance to mix with some very knowledgeable people.

During the first day of the conference, I sketchnoted the talks that I attended. Videos for all of the talks are available on the ProgNet 2018 website.

Own The Future

by Udi Dahan Website Twitter Video

Own The Future by Udi Dahan

In this talk, Udi talked about the problems that companies tend to have when trying to maintain a piece of software over time. He highlighted the traps that are easy to fall into, including attempting to rewrite the software only to be left maintaining both the original big ball of mud and the rewrite side-by-side. He then suggested some techniques that can help, such as better initial requirements (including “why” something is wanted), giving better estimates, and working in a more iterative way. Ultimately his suggestion is to compose applications using the bounded context idea from Domain Driven Design to give better decoupling, keeping unrelated behaviours separate from each other, and preventing the big ball of mud from happening in the first place.

Let’s Talk HTTP In .Net Core

by Steve Gordon Website Twitter Slides Video

Let's Talk HTTP In .Net Core by Steve Gordon

Many modern applications make use of HTTP for communication for calls between microservices, to 3rd party REST APIs, or even to cloud services. HttpClient is widely used to make these calls, but can cause serious issues if not done properly.

Steve showed some example code for making a remote call using HttpClient, and highlighted the issues that can happen in the underlying TCP layer as a result of its use. He then adapted the code in several steps to show how to use the IHttpClientFactory (introduced in ASP.NET core 2.1) to do it properly, including integrating with DI containers and middleware.

He also introduced Polly, a library for introducing resilience and fault handling into an application. With Polly, it is easy to configure the behaviours that should happen when errors occur, including retries, trimeouts and fallback.

Steve finished off the talk by giving some general tips for working with HTTP calls.

Building Real Time Software With ASP.Net Core SignalR

by Rachel Appel Website Twitter Slides Video

Building Real Time Software With ASP.Net Core SignalR by Rachel Appel

This talk was a beginner’s introduction to SignalR, a technology that allows real-time asynchronous communication from a server to clients. SignalR has recently been rewritten to remove some of the problems of the previous versions, as well as adding some new features.

Rachel started by explaining how to add SignalR to a web application, including its core concept of hubs that allow the communication between clients and the server. She showed how to configure a hub and how to send messages via it, using both the C# and Javascript clients.

She concluded the talk by highlighting a couple of settings that need to be changed when deploying to Azure to allow SignalR to work properly.

Learning To Code By Making Games

by Willow Rendle Video

Learning To Code By Making Games by Willow Rendle

Starting with Scratch, then Hopscotch, and ending up at Unity, Willow (who is only 12 years old) described her journey in making games. Most of the talk revolved around Unity, its ecosystem, and the things that can be achieved with it.

Willow demonstrated some of the games she has made and the tools and techniques used to make them, including the many freely available models, textures, sounds and environments that can be downloaded from the Unit assert store. She then went on to demonstrate what is possible with Unity by showing off some of the freely available game kits (available for both 2D and 3D games) that are useful for learning from. These are full games that include the code and graphics that can be inspected to see how to achieve certain game effects and behaviours.

Security In Cloud Native

by Robin Minto Website Twitter Video

Security In Cloud Native by Robin Minto

Robin talked about the importance of security in modern software, especially in cloud based systems.

He started by giving an overview of cloud native applications and described the three major threats to them: vulnerable software, leaked credentials, and time. These threats can be mitigated using a security model developed by Pivotal called the 3Rs: Repair (fixing software, patching infrastructure, updating dependencies), Repave (destroy and recreate environments to destroy anything nasty that may have got inside), Rotate (change credentials, certificate, keys regularly).

Robin went on to talk about the different cloud providers (e.g. Microsoft Azure, Amazon AWS, Google Cloud), and how they will always be better than you at security - they employ more knowledgeable security people and have more visibility and exposure to the latest threats.

After introducing some of the security issues that are easy to do with cloud applications and how to mitigate them, Robin concluded by showing some tools to help to secure your cloud applications.

Turning Passion Into Experience

by Shawn Wildermuth Website Twitter Video

Turning Passion Into Experience by Shawn Wildermuth

Shawn spoke about the importance of having passion and excitement about what you do as a developer. It is not enough however to have just these attributes - you have to be willing to take risks alongside them. He talked about his own experiences of following technologies that even though short-lived, gave him the opportunity to learn new things. 

He gave examples from his own career of having imposter syndrome, and weighed it up against the arrogance that some developers use as camouflage to hide their insecurities. He also stressed the importance of saying “I don’t know” and that it is ok to do so, even as an experienced developer.

Shawn talked again about some of his failures, and highlighted how failures are useful because they are a learning opportunity and a moment of growth that you will be better for after experiencing. This has to be balanced against risk however, and you should understand what level of risk you are willing to take.

Career Advice For Programmers

by Tirsha Gee Website Twitter Video

Career Advice For Programmers by Trisha Gee

Trisha talked about how she now has the job she really wants (she is a developer advocate at Jetbrains and works remotely from Spain) after steering her career in that direction over a number of years.

She talked about the recruitment of developers and how the software industry is not very good at measuring programming ability, meaning that figuring out who to hire and reward is hard. As a result, being good at a job is not the same as looking good at a job. She then gave some tips on how to “hack the system” so that you can look like you are good at your job.

She concluded the talk by giving some advice on how to iterate on your career to move it forward.


DDD Reading 13

At the weekend, I went down to Reading to attend DDD 13. Hosted at Microsoft’s offices the DDD Reading event is the mother of all of the DDD events, with the first one held back in 2005.

Here are the sketchnotes I took of the talks I attended.

Quantum Computing: Don’t Panic

by Anita Ramanan Twitter and Frances Tibble Twitter

Quantum Computing: Don't Panic by Anita Ramanan and Frances Tibble

Web Assembly, Blazor, And The Future Of Web Development

by Joseph Woodward Website Twitter

Web Assembly, Blazor, And The Future Of Web Development by Joseph Woodward

From Monolithic Monster To Majestic Microservice App

by Callum Whyte Website Twitter Slides

From Monolithic Monster To Majestic Microservice App by Callum Whyte

Automate Your Test Infrastructure With Kubernetes

by Joe Stead Website Twitter

Automate Your Test Infrastructure With Kubernetes by Joe Stead


DDD South West 8

I attended DDD South West at the weekend in Bristol. As usual, it was a great event.

Here are the sketchnotes I took of the talks I attended.

Outside-In TDD

by Ian Russell Website Twitter

Outside-In TDD by Ian Russell

Give It A REST - Tips For Designing And Consuming Public APIs

by Liam Westley Website Twitter

Give It A REST - Tips For Designing And Consuming Public APIs by Liam Westley

Kubernetes For .Net Developers

by Shahid Iqbal Website Twitter Slides

Kubernetes For .Net Developers by Shahid Iqbal

Teaching An Old Dog New Tricks

by Ismail Mayat Website Twitter

Teaching An Old Dog New Tricks by Ismail Mayat

Patterns And Practices For Building A Better Web API Architecture

by Joseph Woodward Website Twitter

Patterns And Practices For Building A Better Web API Architecture by Joseph Woodward


Cambridge Alexa Devs Meetup

I recently attended the inaugural meetup of the Cambridge Alexa Developers Group held at Amazon’s Cambridge office. The group was set up by Bob Harris and Rich Merrett, who both gave talks on building Alexa skills and SSML.

David Low, Amazon’s Head of Solutions Architects, also gave a talk about how to best create a skill by working out its user value:

Working Backwards by David Low

One particlarly interesting thing covered was a formula for working out whether a skill will be a “killer skill”:

Cusomter value × Contexts × Frequency × Multipliers
Complexity × Friction

The higher the output of this formula, the higher the likelihood that a skill will be succesful.

While this talk wasn’t recorded, he has given a similar talk before that was.


NDC London 2018

Last week I attended NDC London. It’s not the first time that I’ve been, but it is the first time I’ve done the workshops that run alongside the main conference.

I attended the “Identity & Access Control for modern Applications and APIs using ASP.NET Core 2” workshop hosted by Dominick Baier and Brock Allen. This was a two day workshop consisting of a mixture of presentation, discussion, and hands-on labs. It dived deep into the security aspects of modern ASP.Net applications, specifically the application itself and its APIs. The first day focused on how external authentication (via OAuth 2.0 and OpenID Connect) could be used to save having to implement authentication yourself in your application. The second day took this further and focused on how to secure an API that you may have in an application so that you can call it server-to-server, from mobile applications, or from JavaScript applications.

The remaining three days of the conference was in the form of talks. Like I’ve done before, I sketchnoted many of the sessions that I attended.

What Is Programming Anyway?

by Felienne Hermans Website Twitter Video

What Is Programming Anyway? by Felienne Hermans

The Power Of Technical Decisions

by Jake Ginnivan Website Twitter Video

The Power Of Technical Decisions by Jake Ginnivan

You Build It, You Run It

by Chris O’Dell Website Twitter Video

You Build It, You Run It by Chris O'Dell

An Introduction To Kotlin

by Dmitry Kandalov Website Twitter Slides Video

An Introduction To Kotlin by Dmitry Kandalov

Composite UIs: The Microservices Last Mile

by Jimmy Bogard Website Twitter Slides Video

Composite UIs: The Microservices Last Mile by Jimmy Bogard

Designing For Speech

by Jessice Engström Website Twitter Video

Designing For Speech by Jessica Engström

Jewelbots: How To Get More Girls Coding

by Jennifer Wadella Website Twitter Slides Video

Jewelbots: How To Get More Girls Coding by Jennifer Wadella

Who Needs Dashboards?

by Jessica White Website Twitter Slides Video

Who Needs Dashboards? by Jessica White

Pilot Decision Management

by Clifford Agius Twitter Video

Pilot Decision Management by Clifford Agius

A Developer’s Guide To Machine Learning

by Tess Ferrandez-Norlander Website Twitter Slides Video

A Developer's Guide To Machine Learning by Tess Ferrandez

CSP XXP STS PKP CAA ETC…

by Scott Helme Website Twitter Video

CSP XXP STS PKP CAA ETC... by Scott Hulme

Web Apps Can’t Do That, Can They?

by Steve Sanderson Website Twitter Video

Web Apps Can't Do That, Can They? by Steve Sanderson

These are the other talks I attended but didn’t sketchnote:

C# 7.0

by Jon Skeet Website Twitter Video

C# 7.1 and 7.2: The Releases You Didn’t Know You Had

by Bill Wagner Website Twitter Video

The Psychology Of Social Engineering

by Niall Merrigan Website Twitter Video

The Modern Cloud

by Scott Guthrie Website Twitter Video

The Hello World Show Live

hosted by Heather Downing and Spencer Schneidenbach Website Video

Tips And Tricks With Azure

by Scott Guthrie Website Twitter Video

Why I’m Not Leaving .Net

by Mark Rendle Website Twitter Video


DDD North 2017

I recently attended DDD North 2017 in Bradford. I’ve been wanting to take up sketchnoting for a while now, but have never gotten round to doing it, so when Ian Johnson (go check out his sketchnotes - they are great) prompted me to take my sketchbook and pens with me, I reluctantly obliged. I’m so glad I did though as I really enjoyed doing them, and I feel it had the effect of me being able to recall much more of the content of each talk. I tweeted the sketchnotes after each session and got a great response from both the speakers and attendees.

Here are the sketchnotes I did during the day.

Microservices: What I’ve Learned After A Year Of Building A System

by Nathan Gloyn Website Twitter Slides

Microservices: What I've Learned After A Year Of Building A System by Nathan Gloyn

Spot The Difference: Automating Visual Regression Testing

by Viv Richards Website Twitter Slides

Spot The Difference: Automating Visual Regression Testing by Viv Richards

Married To The Mob (Programming)

by Derek Graham Website Twitter Slides

Married To The Mob (Programming) by Derek Graham

How To Parse A File

by Matt Ellis Website Twitter Slides

How To Parse A File by Matt Ellis

Alexa, Open Sneezaroo…

by Zinat Wali Twitter

Alexa, Open Sneezaroo... by Zinat Wali