Happy new year! Another year seems to have flown by incredibly quickly. I wanted to sit down and think back to some of the highlights from the past twelve months.
2019 was a hectic year for me and quite exhausting at times, but also extremely rewarding. In fact, now that I’ve thought back to everything I achieved, I’m amazed and quite proud by how much I packed in. If I consider my recent years in professional software development, it’s certainly been my best year so far.
I am looking forward to trying to top it in 2020!
Late in 2018, I was accepted as a Pluralsight author and my first course outline was approved for production. This was really exciting for me as I appreciate Pluralsight as an incredible learning resource. Being able to work with the team and produce my own content for the platform was a fantastic opportunity.
My first course, “Dependency Injection in ASP.NET Core” was completed and released in February 2019. In this course, I cover the capabilities of the built-in dependency injection container, used with ASP.NET Core. This course was included on the ASP.NET Core learning path and has been viewed many times during 2019.
My second course, released in September, was “Using Configuration and Options in ASP.NET Core and .NET Core Apps” which dives into the extension libraries available in those frameworks. This too made it onto the learning path and is proving quite popular so far.
To round off 2019, my proposal for my next course was approved. I have begun working on the content which covers Worker Services and background workloads for ASP.NET Core and .NET Core. I’m targeting completion of that course for around March 2020.
Thanks to everyone who has watched my courses in 2019. I hope you learned some useful things from them! If you haven’t heard of Pluralsight and/or don’t have a subscription, you can always sign up for a free 10-day trial at Pluralsight.com.
Pluralsight Author Summit Europe
After becoming an author, I was invited to the first Europe summit for authors hosted by Pluralsight. This was a chance to meet with other authors and the various teams who manage content and production at Pluralsight.
The event was kicked off by a wonderful meal in the Tate Modern on the eve of the summit. It was an honour to mingle with some of the amazing authors whose content I have watched over the years.
I presented my first public talks back in 2017, which was a big step for me, as I feared and avoided any form of public speaking before those events. In 2018 I increased the number of conferences that I attended as a speaker and in 2019, I continued that upward trend, having the honour of speaking at many well-known events around Europe.
NDC London – London, UK
A highlight for me in 2019 was being accepted as a speaker for NDC London. I’ve always been a fan of the NDC events, learning a lot from the amazing video content they share online after the event. For me, acceptance for NDC London was a huge deal. I’d been submitted to their various events for a year, with rejections each time. Finally breaking through and having a talk selected was wonderful! I enjoyed the event greatly and the opportunity to spend time talking with attendees and other speakers over the 3-days there. My session took place on the second day, where I presented my “Let’s Talk HTTP in .NET Core” talk. A video is available online if you missed it!
While in London I had the extreme honour to briefly share a stage with Scott Hanselman at a special London .NET User Group event at Skillsmatter. My part in the evening was a brief five-minute introduction to .NET South East, my own meetup which I organise in Brighton. Sadly Skillsmatter went into administration at the end of 2019, a massive loss to many tech communities in the UK.
DDD South West – Bristol, UK
Next up was my second visit to Bristol for the DDD South West conference. This one-day event on Saturday is freely available for the community. I find these events very rewarding and enjoyable. They are a gathering of truly passionate developers who are willing to give up a day of their weekend to learn more about our craft. I presented a new talk, “Turbocharged: Writing High-Performance C# and .NET Code” which covers some of the things I’ve learned about more modern .NET features such as Span<T> and System.IO.Pipelines.
.NET Summit, Minsk, Belarus
In June, I was invited to speak at a 1-day conference in Minsk, Belarus. This was a surprise invite, and I jumped at the chance to visit Minsk for the first time. It was a pretty short visit for me, arriving late the evening before the event and returning early on the morning after. I had the pleasure of travelling with Dylan Beattie and spending time with some other authorities in the .NET field.
.NET Core Summer Event – Veenendaal, the Netherlands
In, June I was back on a plane, to attend a community event in the Netherlands along with some fantastic .NET speakers. This free event was organised by the team who run the dot Ned user group alongside Karel Zikmund from Microsoft. It was a tremendous day, and I got to meet some .NET legends, including Ben Adams and Marc Gravell. I presented two sessions; the first was my HTTP talk, and the second was a bonus session, my turbocharged, high-performance presentation. At the end of the day, I was honoured to be invited to join some of the performance legends on stage for a panel discussion on .NET performance. I’d be fortunate to return to The Netherlands (and in fact, the same speaker hotel) again in September.
ProgNet – London, UK
For the third year running, I was excited to join the lineup for the ProgNet conference hosted at Skillsmatter in London. Sadly, Skillsmatter has ceased trading, so this was the last time I got to spend with the amazing team there.
I presented a new session, “Beyond HTTP in .NET Core with gRPC” which I really enjoyed putting together. This year, I also taught a 3-hour workshop about high-performance .NET, based on extended content from my Turbocharged talk. I was a bit nervous about hosting my first public workshop. In the end, I really enjoyed it, and it had high attendance and some very positive feedback.
I wish the Skillsmatter team the best in their next steps.
DDD East Anglia – Cambridge, UK
The next DDD event of 2019 for me was in Cambridge for DDD East Anglia. The agenda for these community events is decided by public vote, and I was pleased to see interest in my gRPC session, gaining me a speaking slot.
Techorama NL – Ede, the Netherlands
At the end of September, it was back to the Netherlands for Techorama. This was another big conference that I was hugely honoured and proud to be selected to speak at. The team there are amazing and organised a fantastic conference in a very cool cinema venue. I was due to present a single session on gRPC in .NET Core, but due to flight delays for another speaker, I volunteered to present my HTTP session as well. The space-themed venue was impressive, and everything was run immensely well.
The weekend before the event it was my birthday, so my wife and I travelled to Amsterdam a few days ahead of the conference. We spent a fun few days in the city before I caught the train down to Veenendaal. It was yet another event with some incredible speakers who I was fortunate to meet and be able to spend some time with. This included consuming plenty of gin in the hotel bar.
Developer Days 2019 – Reading, UK
Another of the DDD events held in the UK is Developer Days which is hosted at the Microsoft offices in Reading. This year was another great event, and I really enjoyed presenting my high-performance session for the audience. There were lots of other great talks from community members which I learned from throughout the day. Fantastic work as always by the volunteer team there.
.NET Developer Days – Warsaw, Poland
In October, I attended .NET Developer Days, a two-day event held in Poland. Arriving late the evening before we were treated to a short tour of the city with Vodka at every stop! Then it was on to a fantastic speaker dinner at a restaurant called Winosfera. For me, a highlight of every event is the opportunity to meet people I respect in the .NET community, so the speaker dinners are always a fun event. This one included some great wine, selected by Carl Franklin from .NET Rocks!
I spoke twice during the conference in what has been my largest room and largest audience since I began public speaking. Arriving for the tech checks on the Thursday morning, I was shocked by the size of the stage, the massic screen and 1000+ seat room. I was to share the same stage as Scott Guthrie, the Executive Vice President of the Cloud and AI group in Microsoft, who would present the opening keynote. I had the privilege of meeting Scott that morning for a very brief chat before he got set up for his session. Both of my sessions (Let’s talk HTTP and High-Performance C#) went very well. For the latter, I had a packed room of around 1000 people which was both an honour and somewhat nerve-racking. Somehow, I got over the nerves quite quickly and really enjoyed the rapt attention that the session received.
Umbraco UK Festival – London, UK
My final speaking engagement of 2019 was in November at the Umbraco UK Festival. To be honest, I’ve never used nor seen much about Umbraco, a .NET CMS, but my talk on high-performance is still very applicable. I headed to London to a cool Dockside venue and enjoyed meeting some developers from a different sector of the .NET community.
I went through my first renewal cycle with the Microsoft MVP program in 2019. I’m delighted that on July 1st, my MVP status was confirmed for another year based on my community contributions. Each year, MVPs complete an online form detailing the contributions they’ve made. These include unpaid content such as blogs, talks, videos and live-streaming.
In March I was excited to return to Redmond, Seattle for the annual MVP summit. This massive gathering of MVPs from around the world takes place on Campus at Microsoft. It provides a two-way dialogue between Microsoft staff and the MVPs. Microsoft teams present to us their plans for the product lines in the coming year or so. This takes place under an NDA agreement so that MVPs can provide early feedback and also prepare their own knowledge to share within their communities. It’s also an opportunity to meet with the team members from the product groups and provide feedback based on our involvement in the community. It’s also an excellent chance to meet up in person with other MVPs from the .NET community. Walking around the vast Microsoft campus, it’s hard not to get star-struck at times!
This was my second visit to an MVP summit event, and this time around, I was able to manage my time and energy a bit better. The event is a crazy, packed week with full days absorbing information at the Microsoft Redmond campus, followed by various gatherings and parties in the evenings. This time around, I didn’t try to attend every session while on campus, instead opting for the hallway track and using the time to speak with the ASP.NET and .NET team members. One area of focus for me was to provide some feedback to the .NET team on the HttpClient library and some of the community frustrations and confusion when using it.
My flights and hotel are already booked for this year’s event!
AWS Developer Influencer Summit
In August I was back on a flight to Seattle, this time on an invite from Amazon to attend a gathering of some “influencers” around AWS technologies.
I was invited after some discussions and interactions with the team who develop the .NET SDK for consuming AWS services and spent two days on a track to discuss the developer tooling. Day one was a set of presentations from some of the senior product managers on various AWS services to hear about their upcoming features and plans. Day two was spent in smaller groups with many of the teams involved in delivering developer tooling, where they gathered feedback from the attendees.
It was great to have an opportunity to meet some of the team at AWS in person, including a fun evening spent in the AWS Spheres.
I was invited to speak on a few podcasts during the year.
This came together around NDC London, where I joined Jon Galloway from Microsoft to talk about the future of .NET. It was a fun discussion on our thoughts for .NET Core and the direction of the .NET platform.
I’ll be honest, this was a big highlight of mine for 2019 and something I never imagined I would get the opportunity to do. I’ve been a listener of .NET rocks for many years, before evening taking my fulltime career in software development. In those years, the show has been a big inspiration for me.
I’ve had the pleasure to spend a little time with Carl and Richard on a few occasions since I began speaking at conferences. Before attending .NET Developer Days in Poland, Richard asked if I’d be interested in speaking about high-performance .NET, based on my talk. Of course, I jumped at the opportunity, and we recorded this episode in a boxy room on the first floor of the conference venue.
In this show, I enjoyed the opportunity to talk about using gRPC with .NET and more generally about building .NET Core microservices. We dive into the communication patterns for a microservices architecture and later discuss some of the pros and cons of gRPC, which was included in the box with the release of .NET Core 3.0.
Blogging is something I really enjoy as it’s a gratifying way to contribute within the community and also, the act of writing is great fun for me. I find that writing is an excellent way for me to organise my thoughts and to learn more about a subject. When explaining a concept to someone else, particularly in written form, it forces you to explore the edges of your own knowledge. I also find it helps the information to embed more deeply in my memory.
I published 27 blog posts in 2019, a little below my expectations as I had a lot more drafted and which are currently in progress. Still, that’s at least one post every two weeks, which isn’t bad for a free time activity.
I’ve reviewed my Google Analytics data for 2019, and I’m staggered by the numbers now visiting my blog and reading my content.
- 367k unique visitors (up 65% on 2018)
- 805k page views (up by 55% on 2018)
It’s extremely rewarding to know that so many people have viewed the content I have been producing. It really makes the time that I spend creating the content worthwhile. Thanks to everyone who has read my posts in 2019! Remember, you can subscribe to my newsletter from the right-hand side content. This year I will try to be better at sending out updates about new material I’m producing.
Looking over the highest ten posts by page views for this year, there’s a trend to the top content and few that surprised me a little. A few of these are posts are on topics which I am working on further content for 2020.
|Running a .NET Core Generic Host App as a Windows Servic||58,095|
|HttpClientFactory in ASP.NET Core 2.1 (Part 1)||39,858|
|ASP.NET Core Dependency Injection – How to Register Generic Types||29,720|
|Implementing IHostedService in ASP.NET Core 2.0||28,962|
|An Introduction to Optimising Code Using Span<T>||27,293|
|CQRS with Mediatr and ASP.NET Core||26,348|
|Using HostBuilder and the Generic Host in .NET Core Microservices||26,135|
|ASP.NET Core Dependency Injection – Registering Multiple Implementations of an Interface||24,699|
|HttpClientFactory in ASP.NET Core 2.1 (Part 2)||24,286|
|An Early Look at gRPC and ASP.NET Core 3.0||19,598|
.NET South East Meetup
We hosted another eleven monthly events in 2019 at the Madgex offices in Brighton. I really enjoy organising this community gathering, and we’ve been privileged to have some amazing people travel to speak at the event in the last year.
It’s terrific to see regular attendees from the local community each month to learn and share their passion for .NET development. I’m busy planning dates and thinking about speakers for 2020 events.
If you’re a developer in or around Brighton, please register for notifications about future events on our Meetup page.
Correlation ID Library
After being neglected for a year or so, in December, I finally found time to apply some of the community feedback for a small OSS library which I created and maintain. Correlation ID supports the receiving and transmission of an ID used to correlate logging. This is particularly useful in distributed, microservice-based architectures.
I have incorporated the PRs and added a bunch of requested features in preparation for a 3.0 release. The preview of the 3.0 features is available on Nuget. Once I’m happy it’s stable and bug-free, I’ll document how to use it and get a new release out. Please take it out for a spin and let me know how you get on.
I continue to work as a senior developer at Madgex. For the last few months, I’ve been building an exciting update to our analytics platform capabilities. This involves a series of microservices designed to support managing sessions across our evolving architecture. I really enjoy the challenge and continue to learn a lot as I architect this new set of features. I’m sure in 2020 it will continue to be a good source of inspiration for new blog posts.
It was exhausting just recalling all of the things I achieved and took part in over the last year. I’m very proud of some of the achievements and milestones in my career.
I already have some conference talks scheduled for 2020 and many more I hope to hear back from soon. As well as my popular sessions from 2019, I have some new content I am proposing as well. The first event for me is in a few weeks at NDC London, where I will present my turbocharged session.
I will, of course, continue to blog and I have some ideas for other content I’d like to produce if I can find the time. My next Pluralsight course will appear in a few months, and I hope to propose and author another before the end of the year.
I want to thank everyone I interacted with in some form or another in the last 12-months. This includes the members of .NET South East, attendees of conferences I’ve spoken at and the wider online .NET community. I look forward to an exciting 2020 and the chance to meet more people on my journey!