<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Conference on csMACnz&#39;s Blog</title>
    <link>https://blog.csmac.nz/categories/conference/</link>
    <description>Recent content in Conference on csMACnz&#39;s Blog</description>
    <image>
      <url>https://blog.csmac.nz/favicon.png</url>
      <title>csMACnz&#39;s Blog</title>
      <link>https://blog.csmac.nz</link>
    </image>
    <ttl>1440</ttl>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-nz</language>
    <lastBuildDate>Fri, 01 Dec 2023 11:18:13 +1300</lastBuildDate><atom:link href="https://blog.csmac.nz/categories/conference/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>.NET Conf 2023 Review</title>
      <link>https://blog.csmac.nz/post/dotnetconf-2023-review/</link>
      <pubDate>Fri, 01 Dec 2023 11:18:13 +1300</pubDate>
      
      <guid>https://blog.csmac.nz/post/dotnetconf-2023-review/</guid>
      <description>&lt;p&gt;This year I watched a bunch of the sessions from .NET Conf, both live streams and in the days following. I&amp;rsquo;ve collated my top recommendations and my reviews and thoughts on others that may be of interest to some Developers in the Microsoft ecosystem.&lt;/p&gt;
&lt;p&gt;Without any further ado, we&amp;rsquo;ll crack into the must-watch list for 2023.&lt;/p&gt;
&lt;h2 id=&#34;must-watch&#34;&gt;Must Watch&lt;/h2&gt;
&lt;p&gt;Why not kick into it with the main keynote? This talk gives a great overview of all the great new advancements released as part of .Net 8 so you can learn more about what you want to dive deeper into.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/mna5fg7QGz8?si=dacpISAhXWlxlj-2&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Follow this up with a deeper dive into all the enhanced cloud-native capabilities delivered to us this year as well, including your first look at the new &lt;a href=&#34;https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview&#34;&gt;.Net Aspire stack&lt;/a&gt;.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/z1M-7Bms1Jg?si=lM3S7yGHrTUyhDad&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Pivoting to C# 12 which drops with .Net 8, check out the newest features to learn what&amp;rsquo;s been added to the language.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/by-GL-SjHdc?si=VgQodH7EAqNPozuN&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;And if you are still on .Net 6 or a few versions behind on what has been developing, here is a wider look across the last few releases to catch up on what you&amp;rsquo;ve missed.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/Ci-FTnC-j84?si=39lYE-hDo-5pC4jn&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;But to round that off with the question &amp;ldquo;What should I do with all this new info?&amp;rdquo; I recommend Bill Wagner&amp;rsquo;s pragmatic view of Everyday C# to guide you in how to pick and choose the best bits for you.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/xZk8T-9kI3w?si=Ae-vb1ZvIw7TGmEG&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;a-focus-on-aspnet-core&#34;&gt;A focus on ASP.Net Core&lt;/h2&gt;
&lt;p&gt;We now switch focus to the API hosting application space with ASP.Net Core. This part is probably not relevant to all Developers so I&amp;rsquo;ve kept it out of must-watch. However, if you are a web app or MVC Developer then these are probably still on your &amp;ldquo;must-watch&amp;rdquo; list according to me.&lt;/p&gt;
&lt;p&gt;If you want a really good high-level overview, look no further than ASP.NET Basics for experts with Layla - covering minimal APIs, open telemetry and the new Aspire tooling.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/GDCMiBu_2gI?si=nQ4pFChTWSa60Nx1&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;For a more targeted look at Open Telemetry, I highly recommend this video, especially if you haven&amp;rsquo;t started your journey in this space as it has become easier to enable than ever.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/BnjHArsYGLM?si=p6o5rAWlaqo5Bw4I&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Similarly, whether you haven&amp;rsquo;t looked at Polly, or are already on the Polly train, this resiliency talk is a must-see.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/BDZpuFI8mMM?si=9eiaoA1iv_phOp1t&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;dive-deeper-into-specifics&#34;&gt;Dive deeper into specifics&lt;/h2&gt;
&lt;p&gt;Here are some great deep dives into areas you may have some familiarity with but want to get a deep look into.&lt;/p&gt;
&lt;p&gt;Starting with a configuration Deep dive, to catch you up on the power of the IConfiguration patterns built into .Net.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/aOXaBZFB0-0?si=v8Zw4K1hLwobfCFC&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;And if you are working with containers at all you&amp;rsquo;ll watch to check out the latest advancements here&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/scIAwLrruMY?si=_aVsNFlyBPHub_tp&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;
&lt;p&gt;There were some great architecture talks, especially for organising your code in large systems.&lt;/p&gt;
&lt;p&gt;Starting with a great Vertical Slice Architecture talk that opens with a brilliant overview of spaghetti, layered, and clean architecture to set the scene first.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/T-EwN9UqRwE?si=O4Lp4Aqp6Pant3u3&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;(Here is an earlier presentation to help fill the gaps where the live demo gods failed us on the day -
&lt;a href=&#34;https://youtu.be/dMgj1MdwrRE&#34;&gt;Pick a Side - Clean vs Vertical Slice Architecture | Luke Parker&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;And if you are still sold on Clean Architecture after those videos, you will want to check out this great talk from Steve Smith.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/yF9SwL0p0Y0?si=gBtfFCPUUCbw_5_6&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;blazor&#34;&gt;Blazor&lt;/h2&gt;
&lt;p&gt;Blazor is going to be a small subset of Developers still, so whether you are new to it and want to learn more, or use it and want to see what is new, this video will satisfy you.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/YwZdtLEtROA?si=y56PMdQlZdcF3XKc&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;niche-pro-user-tools&#34;&gt;Niche pro-user tools&lt;/h2&gt;
&lt;p&gt;For those already more familiar with most of what .Net has to offer, there were some great deep-dives into some technologies that won&amp;rsquo;t be for every day, but have some very specific use cases you may cross paths with.&lt;/p&gt;
&lt;p&gt;Starting with the new source generators:&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/Yf8t7GqA6zA?si=UP-BqhOAsoqPLevk&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;And a great reverse-proxy solution called YARP (Yet Another Reverse Proxy)&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/P8y8NAroVKk?si=tgJNJhm9ikn_atES&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;And for the Swagger/OpenAPI users, we get an introduction to &lt;a href=&#34;https://learn.microsoft.com/en-us/openapi/kiota/overview&#34;&gt;Kiota&lt;/a&gt; - an opinionated cross-platform client code generator for open API specifications.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/sQ9Pv-rQ1s8?si=WNItKbCTxDohjnHF&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;If you want to build and distribute &lt;code&gt;dotnet new&lt;/code&gt; templates of your own, take a look at Making templates with Rob Conery:&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/XzD-95qfWJM?si=C9npWhtL-QU7Rsjs&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;and-more&#34;&gt;And more&lt;/h2&gt;
&lt;p&gt;This is by no means the total list of all the sessions. If you haven&amp;rsquo;t seen what you were looking for here, there is a &lt;a href=&#34;https://sessionfinder.dotnetconf.net/&#34;&gt;Session Finder&lt;/a&gt; to search for more videos to watch and learn.&lt;/p&gt;
&lt;p&gt;The conference website as always is found at &lt;a href=&#34;https://www.dotnetconf.net/&#34;&gt;dotnetconf.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See you all for the next one in 2024! Happy viewing.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>µCon 2019 - Day 3</title>
      <link>https://blog.csmac.nz/post/mucon-2019-part2/</link>
      <pubDate>Fri, 31 May 2019 10:00:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/mucon-2019-part2/</guid>
      <description>&lt;p&gt;Good morning day 3. So much to absorb already from &lt;a href=&#34;https://blog.csmac.nz/mucon-2019-part1/&#34;&gt;Day 1 and 2&lt;/a&gt; but it isn&amp;rsquo;t over yet.&lt;/p&gt;
&lt;p&gt;This morning&amp;rsquo;s Keynote &amp;ldquo;Crossing the River by Feeling the Stones&amp;rdquo; from &lt;a href=&#34;https://twitter.com/swardley&#34;&gt;Simon Wardley&lt;/a&gt; is a must see. This was a very educational look at the value of maps, and the importance of knowing the landscape, looking at Evolutionary Flow and not just Process Flow when looking at optimisations. I would recommend the talk from Susanne Kaiser &amp;ldquo;Preparing for a future Microservices journey&amp;rdquo; from the day before as a nice companion to this keynote talk, as she used &amp;ldquo;Wardley Maps&amp;rdquo; to specifically look at the evolution towards microservices. (Though this keynote also shows that journey towards the end as well).&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Exploring your Microservices Architecture Through Graph Theory&amp;rdquo; from &lt;a href=&#34;https://twitter.com/techiewatt&#34;&gt;Nicki Watt&lt;/a&gt; was a great look at applying Graph Theory to distributed systems, especially with Microservices to gain insight into where architectural smells may exist using different analysis metrics.&lt;/p&gt;
&lt;p&gt;The before lunch slot was &amp;ldquo;Awesome CI/CD Data Pipelines for Distributed Data-Sources&amp;rdquo; from &lt;a href=&#34;https://twitter.com/ChrisBurrell7&#34;&gt;Chris Burrell&lt;/a&gt;. This was a walkthrough of mining data sources (load and transform) from Microservices into RedShift in a pipeline approach.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;An Engineer&amp;rsquo;s Guide to a Good Night&amp;rsquo;s Sleep&amp;rdquo; had &lt;a href=&#34;https://twitter.com/NickyWrightson&#34;&gt;Nicky Wrightson&lt;/a&gt; giving a great Engineers Guide to Ops approach to building software, with 5 rules for building better systems so you don&amp;rsquo;t have to be woken up at 3 am. Slides available here: &lt;a href=&#34;https://speakerdeck.com/nickywrightson&#34;&gt;https://speakerdeck.com/nickywrightson&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/matthiasnoback&#34;&gt;Matthias Noback&lt;/a&gt; presented &amp;ldquo;Beyond Design Principles and Patterns: Writing Good Object-Oriented Code&amp;rdquo; which was a great look at Object-Oriented code done right, in a nice succinctly laid out path from the ground up. I want to steal the whole thing as a blog post it was so well put together. Although there were code examples (Java?), the concepts given transcended across any OO language and presented in a nice language-agnostic way. Unfortunately, I didn&amp;rsquo;t learn anything new, and I also had nothing to disagree with either.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/mufridk&#34;&gt;Mufrid Krilic&lt;/a&gt; gave an interesting Lightning Talk: &amp;ldquo;Domain Model in Multi-Language Environment with Examples from Healthcare&amp;rdquo; which was a brief conversation about ubiquitous language when your code is in English but your domain is in Norwegian. This was from experience with a hospital software system.&lt;/p&gt;
&lt;p&gt;To round out the weeks Lightning Talks was &amp;ldquo;Don&amp;rsquo;t Rebuild your Monolith!&amp;rdquo; by &lt;a href=&#34;https://twitter.com/PeterAnning&#34;&gt;Peter Anning&lt;/a&gt;. An epic tale of transformation from Monolith, to Microservices, regrets and reaffirmations. An entertaining watch with the takeaway that processes like DevOps, Agile and Ubiquitous Langage that come out of moving to microservices must be maintained and assimilated, lest we forget and the monolith grows back.&lt;/p&gt;
&lt;p&gt;And last but not least, we have the final Keynote: &amp;ldquo;Temporal Modelling&amp;rdquo; from &lt;a href=&#34;https://twitter.com/mathiasverraes&#34;&gt;Mathias Verraes&lt;/a&gt;. A really good overview conversation into Event-based systems, Event Storming and why modelling the Events of your system is of greater benefit than to use Entity Modelling instead. Another recommended one to expand your thinking.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;And that&amp;rsquo;s a wrap! 2019 µCon is done and dusted. Lots to take in, lots to revisit from the recordings, and a bunch of sessions missed that need to be watched.&lt;/p&gt;
&lt;p&gt;The amazing crew doing the filming have been working away getting all the videos up as quickly as possible (on the day recorded for the most part!). You can head over to Skills Matter and watch them all from the links provided off of the &lt;a href=&#34;https://skillsmatter.com/conferences/11982-con-london-2019-the-conference-on-microservices-ddd-and-software-architecture#program&#34;&gt;Schedule here&lt;/a&gt;. Take this and &lt;a href=&#34;https://blog.csmac.nz/mucon-2019-part1/&#34;&gt;the previous part&lt;/a&gt; as a guide for where to begin but continue through all the other amazing talks I didn&amp;rsquo;t have time to attend in person as well.&lt;/p&gt;
&lt;p&gt;Happy Learning!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>µCon 2019 - Day 1 &amp; 2</title>
      <link>https://blog.csmac.nz/post/mucon-2019-part1/</link>
      <pubDate>Thu, 30 May 2019 20:05:21 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/mucon-2019-part1/</guid>
      <description>&lt;p&gt;After a restful night at a London hotel (I learned my lesson from the last time I came in for a London conference) coffee and breakfast at the Business Design Centre in London, muCon 2019 kicks off. muCon (or µCon) is a Conference on Microservices, DDD &amp;amp; Software Architecture. From what I gather, this year for the first time it is an amalgamation of a DDD and Microservices conference into one. I&amp;rsquo;m here for three days. At this point, I&amp;rsquo;ve gotten into a rhythm of blogging about my Conference Experiences so here we go again!&lt;/p&gt;
&lt;h2 id=&#34;day-1&#34;&gt;Day 1&lt;/h2&gt;
&lt;p&gt;We kick off with an excellent keynote from &lt;a href=&#34;https://twitter.com/mfeathers&#34;&gt;Michael Feathers&lt;/a&gt; which captures various ideologies and principles applied to team and code architecture both at the class level, microservice level and interpersonal individual and team level as well.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/keynote?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#keynote&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/mfeathers?ref_src=twsrc%5Etfw&#34;&gt;@mfeathers&lt;/a&gt; explores system structures present in design to create simpler systems.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/y2Y7F63BrB&#34;&gt;https://t.co/y2Y7F63BrB&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/SystemStructure?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SystemStructure&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/LegacyCode?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#LegacyCode&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/MicroserviceArchitecture?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#MicroserviceArchitecture&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/Architecture?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#Architecture&lt;/a&gt; &lt;a href=&#34;https://t.co/ApXVjdgbNA&#34;&gt;pic.twitter.com/ApXVjdgbNA&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1133735092554272769?ref_src=twsrc%5Etfw&#34;&gt;May 29, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;As usual, the day is split into tracks, so I can only give experience on where I&amp;rsquo;ve been and guidance of which speakers and talks I would look out for in the future.&lt;/p&gt;
&lt;p&gt;Following on from the keynote for me was &amp;ldquo;Microservices from Day One&amp;rdquo; from &lt;a href=&#34;https://twitter.com/rjrodger&#34;&gt;Richard Rodger&lt;/a&gt;. First-hand experience of building Microservices on a greenfields startup after &lt;a href=&#34;https://www.manning.com/books/the-tao-of-microservices&#34;&gt;literally writing a book on Microservices&lt;/a&gt; development, a chance to practice what he preached.  An interesting takeaway that I liked was to design a message-centric system of components(microservices) and then the transport/routing layer doesn&amp;rsquo;t matter (from a technology point of view). This resonates with me because it aligns nicely with the Ports and Adapters architecture.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/rjrodger?ref_src=twsrc%5Etfw&#34;&gt;@rjrodger&lt;/a&gt; shares how the startup &lt;a href=&#34;https://t.co/GHuVLEqlZA&#34;&gt;https://t.co/GHuVLEqlZA&lt;/a&gt; succeeded in using microservices during their first 18 months of development and why it worked.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/JJtjx7ccLj&#34;&gt;https://t.co/JJtjx7ccLj&lt;/a&gt;&lt;a href=&#34;https://twitter.com/hashtag/microservice?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#microservice&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/architecture?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#architecture&lt;/a&gt; &lt;a href=&#34;https://t.co/jnCmbL15zL&#34;&gt;pic.twitter.com/jnCmbL15zL&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1133746086038913024?ref_src=twsrc%5Etfw&#34;&gt;May 29, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;Next up, and filling the pre-lunch slot was &amp;ldquo;Creating an Effective Developer Experience for Cloud-Native Apps&amp;rdquo; from &lt;a href=&#34;https://twitter.com/danielbryantuk&#34;&gt;Daniel Bryant&lt;/a&gt;. A great introduction and overview of DevEx, the idea of building a great experience for developers from coding to prod and beyond in the modern world of cloud-native, Kubernetes and Serverless. Whether it is &amp;ldquo;build or buy&amp;rdquo;, cloud or in-house hosting, the story for developers to build, debug, test, deploy and monitor should be a first-class consideration of developing software.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/danielbryantuk?ref_src=twsrc%5Etfw&#34;&gt;@danielbryantuk&lt;/a&gt; explores the core concepts of the cloud-native developer experience and the lessons learned.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/xaBmX4xpgL&#34;&gt;https://t.co/xaBmX4xpgL&lt;/a&gt;&lt;a href=&#34;https://twitter.com/hashtag/continuousdeliveryprocesses?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#continuousdeliveryprocesses&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/dx?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#dx&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/devex?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devex&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/developerexperience?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#developerexperience&lt;/a&gt; &lt;a href=&#34;https://t.co/Ls2iTsagua&#34;&gt;pic.twitter.com/Ls2iTsagua&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1133757416120692737?ref_src=twsrc%5Etfw&#34;&gt;May 29, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;&amp;ldquo;The Gordian Knot&amp;rdquo; from &lt;a href=&#34;https://twitter.com/ziobrando&#34;&gt;Alberto Brandolini&lt;/a&gt; the importance of culture and the influence architecture plays on affecting that culture. Very interesting and a nice perspective on Conway&amp;rsquo;s Law in many ways, and thinking about affecting change.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/ziobrando?ref_src=twsrc%5Etfw&#34;&gt;@ziobrando&lt;/a&gt; shares how to face a Gordian Knot problem by effectively using a DevOps approach.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/4ZSESd9uCx&#34;&gt;https://t.co/4ZSESd9uCx&lt;/a&gt;&lt;a href=&#34;https://twitter.com/hashtag/devops?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#devops&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/softwarearchitecture?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#softwarearchitecture&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/processes?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#processes&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/microservices?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#microservices&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/architecture?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#architecture&lt;/a&gt; &lt;a href=&#34;https://t.co/VV92qAgS9G&#34;&gt;pic.twitter.com/VV92qAgS9G&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1134014101695467520?ref_src=twsrc%5Etfw&#34;&gt;May 30, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;&amp;ldquo;Strategic Domain-Driven Design Patterns&amp;rdquo; from &lt;a href=&#34;https://twitter.com/ntcoding&#34;&gt;Nick Tune&lt;/a&gt; was an interesting discussion on DDD grouping. Definitely a topic I need to read the (blue) book on, literally and figuratively. (Although I am told one does not simply &amp;ldquo;read&amp;rdquo; Eric Evans&amp;rsquo; Domain Drive Design&amp;hellip;) Some very high-level patterns and approaches to help with finding groupings in your system.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/ntcoding?ref_src=twsrc%5Etfw&#34;&gt;@ntcoding&lt;/a&gt; shares how understanding domain patterns helps you align your microservices and business domain.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/9d6ClArZJA&#34;&gt;https://t.co/9d6ClArZJA&lt;/a&gt;&lt;a href=&#34;https://twitter.com/hashtag/domainpatterns?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#domainpatterns&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/ddd?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#ddd&lt;/a&gt; #microservices# architecture &lt;a href=&#34;https://t.co/8MOMVOS8FG&#34;&gt;pic.twitter.com/8MOMVOS8FG&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1134044301514674177?ref_src=twsrc%5Etfw&#34;&gt;May 30, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;&amp;ldquo;Event Driven Collaboration&amp;rdquo; from &lt;a href=&#34;https://twitter.com/ICooper&#34;&gt;Ian Cooper&lt;/a&gt; another look at the &lt;a href=&#34;https://blog.csmac.nz/geeking-out-at-altnetbrum-2018/#referencedataarchitecture&#34;&gt;Reference Data concept&lt;/a&gt;, with some practical examples of what and how you might go about implementing this. A revision on the concepts of inside mutable data Vs outside immutable data, events, messages and caching.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: &lt;a href=&#34;https://twitter.com/ICooper?ref_src=twsrc%5Etfw&#34;&gt;@ICooper&lt;/a&gt; shares how events help us integrate our service architectures.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/H7WMrEJtwF&#34;&gt;https://t.co/H7WMrEJtwF&lt;/a&gt;&lt;a href=&#34;https://twitter.com/hashtag/eventdrivencollaboration?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#eventdrivencollaboration&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/microservices?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#microservices&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/architecture?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#architecture&lt;/a&gt; &lt;a href=&#34;https://t.co/j4MBsnHeo5&#34;&gt;pic.twitter.com/j4MBsnHeo5&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1134059400367419393?ref_src=twsrc%5Etfw&#34;&gt;May 30, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;The day wound down with a couple of Lightning Talks. A standout for me was &amp;ldquo;Continuous Visibility, No More Dashboards!&amp;rdquo; From &lt;a href=&#34;https://twitter.com/JBJamesBrownJB&#34;&gt;James Brown&lt;/a&gt; on Continuous Visibility (CV). Using Alerts and notifications more, and only selectively add trends and maybe CI statuses to a physical dashboard where space is a premium (but don&amp;rsquo;t forget to add GIfs!).&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;NEW &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt; London 2019 &lt;a href=&#34;https://twitter.com/hashtag/SkillsCast?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SkillsCast&lt;/a&gt;: James Brown shares his journey on how he and his team evolved visibility on the health of their systems.&lt;br&gt;&lt;br&gt;Click here for video: &lt;a href=&#34;https://t.co/H7WMrEJtwF&#34;&gt;https://t.co/H7WMrEJtwF&lt;/a&gt;&lt;a href=&#34;https://twitter.com/hashtag/operationalsupport?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#operationalsupport&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/failurerecovery?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#failurerecovery&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/syntheticmonitoring?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#syntheticmonitoring&lt;/a&gt; &lt;a href=&#34;https://t.co/DLu8EtKUkV&#34;&gt;pic.twitter.com/DLu8EtKUkV&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1134112268600401921?ref_src=twsrc%5Etfw&#34;&gt;May 30, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h2 id=&#34;day-2&#34;&gt;Day 2&lt;/h2&gt;
&lt;p&gt;Day 2 kicks off with another leading Keynote: &amp;ldquo;Getting to DDD: Pragmatic or Principled?&amp;rdquo; from
&lt;a href=&#34;https://twitter.com/julielerman&#34;&gt;Julie Lerman&lt;/a&gt;. Julie gave a discussion on the DDD journey, engaging with new adopters, and how building on the concepts with a group slowly can be a great way to bring more people on board, without getting hung up on being too principled or having to be all in with everything DDD at once.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Preparing for a future Microservices journey&amp;rdquo;
from &lt;a href=&#34;https://twitter.com/suksr&#34;&gt;Susanne Kaiser&lt;/a&gt; presented a journey from custom build through Microservices to Serverless taking all aspects of a hosted piece of software and it&amp;rsquo;s infrastructure concerns transitioning through Build vs Buy, to commoditization.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;“Software delivery performance is critical for tech organizations doing business today.” Microservices lessons learned with &lt;a href=&#34;https://twitter.com/suksr?ref_src=twsrc%5Etfw&#34;&gt;@suksr&lt;/a&gt; is happening now! 😎 &lt;a href=&#34;https://twitter.com/hashtag/microservices?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#microservices&lt;/a&gt; &lt;a href=&#34;https://t.co/Ti4xehAkZC&#34;&gt;pic.twitter.com/Ti4xehAkZC&lt;/a&gt;&lt;/p&gt;&amp;mdash; Skills Matter (@skillsmatter) &lt;a href=&#34;https://twitter.com/skillsmatter/status/1134036801491034113?ref_src=twsrc%5Etfw&#34;&gt;May 30, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;&amp;ldquo;Observable Microservices&amp;rdquo; from &lt;a href=&#34;https://twitter.com/mariascandella&#34;&gt;Maria Gomez&lt;/a&gt; went through the what of observability (logs, alerts and tracing) along with the &amp;lsquo;why&amp;rsquo; for the value it provides to you once your services are in production.&lt;/p&gt;
&lt;p&gt;After lunch, &lt;a href=&#34;https://twitter.com/duffleit&#34;&gt;David Leitner&lt;/a&gt; presented &amp;ldquo;Micro Frontends – A Strive for Fully Verticalized Systems&amp;rdquo;. A nice definition of MicroFrontends and example architectures to add to your toolbox of &amp;ldquo;it depends&amp;rdquo; solutions. Very clearly outlined the when and where the different approaches are applicable. Definitely check out his work if your thinking about verticalized splitting your frontend.&lt;/p&gt;
&lt;p&gt;This led into the afternoon Workshop: &amp;ldquo;Show me the Kubernetes&amp;rdquo; with &lt;a href=&#34;https://twitter.com/denhamparry&#34;&gt;Lewis Denham-Parry&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/SoulmanIqbal&#34;&gt;Salman Iqbal&lt;/a&gt;. They walked us through the demos at &lt;a href=&#34;https://github.com/CloudNativeWales/ShowMeTheKubernetes&#34;&gt;github.com/CloudNativeWales/ShowMeTheKubernetes&lt;/a&gt; which worked well on a temporarily spun up cluster on Azure, or with a Minikube locally (instructions included in both cases). Further examples were promised so there might be more than the three we went through in the session.&lt;/p&gt;
&lt;p&gt;To round out the second day was a keynote from &lt;a href=&#34;https://twitter.com/dianamontalion&#34;&gt;Diana Montalion&lt;/a&gt; on Making a Case for Conceptual Integrity. I&amp;rsquo;m not too proud to admit that I didn&amp;rsquo;t understand the term &amp;ldquo;conceptual integrity&amp;rdquo; at the end and couldn&amp;rsquo;t give you the definition. However, the topic was very interesting and the steps discussed to reach the definition given were very useful and interesting in themselves that to me it didn&amp;rsquo;t matter. Maybe I&amp;rsquo;m lacking the experience at this stage to accurately grok this, and others with more systems consulting experience and exposure did.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Just one of &lt;a href=&#34;https://twitter.com/hashtag/muCon?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#muCon&lt;/a&gt;’s workshops happening this afternoon ⚙️Show Me the Kubernetes by &lt;a href=&#34;https://twitter.com/SoulmanIqbal?ref_src=twsrc%5Etfw&#34;&gt;@soulmaniqbal&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/denhamparry?ref_src=twsrc%5Etfw&#34;&gt;@denhamparry&lt;/a&gt; offers hands-on experience for anyone new to &lt;a href=&#34;https://twitter.com/hashtag/kubernetes?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#kubernetes&lt;/a&gt;! &lt;a href=&#34;https://twitter.com/hashtag/SoftwareArchitectures?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#SoftwareArchitectures&lt;/a&gt; &lt;a href=&#34;https://t.co/4yiwC0CbEy&#34;&gt;pic.twitter.com/4yiwC0CbEy&lt;/a&gt;&lt;/p&gt;&amp;mdash; IkeAtSM (@IkeAtSM) &lt;a href=&#34;https://twitter.com/IkeAtSM/status/1134096839723163648?ref_src=twsrc%5Etfw&#34;&gt;May 30, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;Of course, most if not all of the talks were recorded and appear online (links added where available) but as usual you have missed the hallway conversations by not being here. These are usually the best part of any conference and this has been no exception.  One great conversation leads to quoting the statement that never had anyone said or seen a system that would be described as too gold plated, or too well tested. Most systems instead suffer from not being of a good enough quality or lacking in test coverage.&lt;/p&gt;
&lt;p&gt;In other conversations being able to share structures and strategies gives insight into what is or isn&amp;rsquo;t working for other teams and companies and gives a relative look at where they are on their journey compared to you with yours. But based on the guidance and experience of others here, we all seem to be heading in a similar direction through SOA to DDD and Microservices.&lt;/p&gt;
&lt;p&gt;Stay tuned for a summary of my day 3 experience.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My first DDD Event and how I made the decision to work a 16 hour Saturday</title>
      <link>https://blog.csmac.nz/post/my-first-ddd-event-and-how-i-made-the-decision-to-work-a-16-hour-day/</link>
      <pubDate>Mon, 24 Sep 2018 02:36:52 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/my-first-ddd-event-and-how-i-made-the-decision-to-work-a-16-hour-day/</guid>
      <description>&lt;p&gt;In my hand, I have a couple of train tickets. The reservations indicate that I left the house at 5 am Saturday morning to make the first train from Birmingham to Cambridge, and wouldn&amp;rsquo;t get home again until 9 pm. And that is exactly what I did.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been making more of an effort this year to attend conferences and community events. I had a blast at NDC Oslo 2018 (&lt;a href=&#34;https://blog.csmac.nz/ndc-oslo-2018/&#34;&gt;1&lt;/a&gt;,&lt;a href=&#34;https://blog.csmac.nz/ndc-oslo-2018-part2/&#34;&gt;2&lt;/a&gt;) meeting some amazing people, off the back of that I heard about &lt;a href=&#34;https://blog.csmac.nz/geeking-out-at-altnetbrum-2018/&#34;&gt;Birmingham Alt.Net Unconference&lt;/a&gt;, and then from there, I heard about DDD East Anglea. (Following that trend, next up: &lt;a href=&#34;https://www.meetup.com/en-AU/altnetbrum/events/252629315/&#34;&gt;F# SAFE Stack Hackday
@ Birmingham Alt.Net&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;The nice thing about free Saturday Conferences and workshops is they are easy to get business sign-off, that is if you even need to bother :)&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Why am I awake this early on a Saturday? Catching a train to &lt;a href=&#34;https://twitter.com/hashtag/DDDEA?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#DDDEA&lt;/a&gt; of course. Should be worth it though!&lt;/p&gt;&amp;mdash; Mark Clearwater (@csMACnz) &lt;a href=&#34;https://twitter.com/csMACnz/status/1043348649596661762?ref_src=twsrc%5Etfw&#34;&gt;September 22, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;so-what-is-ddd&#34;&gt;So what is DDD?&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Developer! Developer! Developer! (DDD) East Anglia is the newest event in the popular series of Developer Days events for the UK .NET Community that have run since May 2005. Although each DDD event has its own particular &amp;ldquo;flavour&amp;rdquo;, they remain immensely popular and enjoyable, regularly attracting 200-300 attendees and often selling out within minutes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was my first DDD event, though I was familiar with the slogan and its &lt;a href=&#34;https://www.youtube.com/watch?v=Vhh_GeBPOhs&#34;&gt;Ballmer origins&lt;/a&gt;.  I heard about it in time to put in a talk, but my nerves got the better of me this time.  Soon, though. On this occasion, once again I was just an attendee.&lt;/p&gt;
&lt;p&gt;The day was a blast and there were great sessions to choose from. As usual, I made my decisions 5 minutes before they started and the end result is as follows.&lt;/p&gt;
&lt;h3 id=&#34;the-talks&#34;&gt;The Talks&lt;/h3&gt;
&lt;p&gt;First up was an intro to Dependency Injection, &lt;strong&gt;&amp;ldquo;Dependency Injection in ASP&lt;span&gt;&lt;/span&gt;.NET Core 2. Why and How?&amp;rdquo;&lt;/strong&gt; by &lt;a href=&#34;https://twitter.com/donwibier&#34;&gt;Don Wibier&lt;/a&gt; from Dev Express.  A nice overview of how DI works in the context of ASP&lt;span&gt;&lt;/span&gt;.Net Core 2, including the &lt;code&gt;[FromServices]&lt;/code&gt; annotation which I haven&amp;rsquo;t seen before and need to use more. It was introductory level, but captured all you need to know if you didn&amp;rsquo;t already.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;MediatR - bridging the gap between your SPA and your backend&amp;rdquo;&lt;/strong&gt; from &lt;a href=&#34;https://twitter.com/russellreyno&#34;&gt;Russell Seamer&lt;/a&gt; was lots of unfamiliar libraries, but a neat technique on reducing boilerplate code in SPA+BFF situations. I need to expand SeaOrDew with what I learned here, and the full content would require an entire article to relay to you. The &lt;a href=&#34;https://github.com/reyno/dddeastanglia&#34;&gt;source has been put up on GitHub&lt;/a&gt;, but is lacking the context of the talk and a README.&lt;/p&gt;
&lt;p&gt;Wrapping up before lunch was &lt;strong&gt;&amp;ldquo;Who Will Test The Tests?&amp;rdquo;&lt;/strong&gt; by &lt;a href=&#34;https://twitter.com/owennell&#34;&gt;Oli Wennell&lt;/a&gt; from comparethemarket.com, and was a great overview of Mutation Testing. A few library suggestions made &lt;a href=&#34;http://pitest.org/&#34;&gt;for Java&lt;/a&gt;, Javascript (&lt;a href=&#34;https://stryker-mutator.io/&#34;&gt;Stryker&lt;/a&gt;) and .Net (his &lt;a href=&#34;https://github.com/ComparetheMarket/fettle&#34;&gt;Fettle&lt;/a&gt; for Full Framework and &lt;a href=&#34;https://stryker-mutator.io/stryker-net/&#34;&gt;Stryker&lt;/a&gt; once again for Core based on The JS one). I liked the JavaScript demo and have ideas for using this now. His slides are online &lt;a href=&#34;https://oliwennell.github.io/talks/mutation-testing-csharp2/index.html&#34;&gt;here&lt;/a&gt; along with &lt;a href=&#34;https://github.com/oliwennell/talks/tree/master/mutation-testing/example-app&#34;&gt;code samples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A good lunch spread lead into some lightning talks (Grok talks) that was lots of fun, then it was &lt;strong&gt;&amp;ldquo;SAFE Stack: Functional web programming in .Net&amp;rdquo;&lt;/strong&gt; from &lt;a href=&#34;https://twitter.com/bruinbrown93&#34;&gt;Anthony Brown&lt;/a&gt;.  Nice to see the state of play with full-stack F# including SPA support. (As mentioned, I will get a chance to play with this at Birmingham Alt&lt;span&gt;&lt;/span&gt;.Net next month!)&lt;/p&gt;
&lt;p&gt;Finishing off, a &lt;strong&gt;&amp;ldquo;Reasonable Software&amp;rdquo;&lt;/strong&gt; lesson + Rant from &lt;a href=&#34;https://twitter.com/IJohnson_TNF&#34;&gt;Ian Johnson&lt;/a&gt;, software and processes you can reason about, and so forth. A last-minute ring-in but well put together talk, for only having 24 hours notice. Nice chatting with you afterwards Ian. A wide range of areas covered in a short session of 1 hour! Shame I didn&amp;rsquo;t find out more about your sketch-noting&amp;hellip;&lt;/p&gt;
&lt;p&gt;We wrapped up on Prizes and I was stoked to win one of the JetBrains prizes, though some nice hardware was given away too. Now to decide which product to choose&amp;hellip;&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;It is a wrap! Tank you so much to the organisers and sponsors for providing a great conference! Interesting talks and a great crowd! &lt;a href=&#34;https://twitter.com/hashtag/dddea?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#dddea&lt;/a&gt; &lt;a href=&#34;https://twitter.com/DDDEastAnglia?ref_src=twsrc%5Etfw&#34;&gt;@DDDEastAnglia&lt;/a&gt; &lt;a href=&#34;https://t.co/1uXKCRjK9b&#34;&gt;pic.twitter.com/1uXKCRjK9b&lt;/a&gt;&lt;/p&gt;&amp;mdash; Håkan Silfvernagel (@agrevlis) &lt;a href=&#34;https://twitter.com/agrevlis/status/1043577600252301319?ref_src=twsrc%5Etfw&#34;&gt;September 22, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;A great day of talking and listening all up, well worth attending your next nearest DDD Event, I say. There were many great talks I didn&amp;rsquo;t get to see presented here as well, very spoilt for choice.&lt;/p&gt;
&lt;h3 id=&#34;so&#34;&gt;So&amp;hellip;&lt;/h3&gt;
&lt;p&gt;So, how did it come to be, that  I was sat on a train at 5:30 am thinking to myself &amp;ldquo;where is the coffee cart&amp;rdquo;?&lt;/p&gt;
&lt;p&gt;It turns out that most sensible people went to Cambridge on Friday, gathered for dinner and drinks, and slept comfortably in a nearby hotel. These sensible people also booked to stay for the dinner afterwards and another night, too.&lt;/p&gt;
&lt;p&gt;But not me, no not at all.&lt;/p&gt;
&lt;p&gt;I travelled to Milton Keynes to work in the office on Friday and arrived late home to Birmingham at 9 pm, went to bed, woke up ridiculously early to catch the 5:22 am to Cambridge 3 hour train to make it to the 8:30 am registration and the 9 am kickoff.  Why do I do this to myself?  But I did. And to be honest it was well worth it for the great lineup of speakers and people I chatted with throughout the day to have come at all.&lt;/p&gt;
&lt;p&gt;The real reason is money, isn&amp;rsquo;t it? It was cheaper to get the train there and back in one day, then to have a Hotel for the night or two. I even considered consolidating my Milton Keynes travel since it is &amp;ldquo;on the way&amp;rdquo;, but turns out the time it takes to get to Cambridge from MK on a Friday night by train would be the same time as Birmingham on Saturday morning. Plus saving the money and getting to sleep in my own bed seemed like a good idea at the time.&lt;/p&gt;
&lt;p&gt;The other reason is the trains in this country. I come from New Zealand. We have trains, they don&amp;rsquo;t carry people. They do, but only between one or two select destinations for tourists a couple of times a day. I like the trains here, and the novelty of doing what could only be done by aeroplane in New Zealand with just as early a start anyway, and doing it for half the cost of what the plane would be, it was just one of those things I had to take advantage of while I&amp;rsquo;m here in the UK.&lt;/p&gt;
&lt;p&gt;I know I shouldn&amp;rsquo;t be penny-pinching really, but some habits die hard. Maybe I&amp;rsquo;ll be more sensible next time&amp;hellip; Maybe.&lt;/p&gt;
&lt;p&gt;On Sunday, he rested.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Geeking out on a Saturday at the Birmingham Alt.Net Unconference</title>
      <link>https://blog.csmac.nz/post/geeking-out-at-altnetbrum-2018/</link>
      <pubDate>Tue, 03 Jul 2018 04:00:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/geeking-out-at-altnetbrum-2018/</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 expensive expense approval. It included lunch so no personal cost apart from transport to get there. And if you really struggle with that, you could negotiate some time-in-leu with your manager for the following Monday to attend. The benefit to you and your company from an event like this is massive.  Also, as a social event for the chance to geek out about the technology you love, or love to hate on, it is fantastic.&lt;/p&gt;
&lt;p&gt;Enough of the sales pitch, what was it like?&lt;/p&gt;
&lt;p&gt;For those of you unfamiliar with an unconference, the simplified version is that there is no agenda, whoever turns up are the right people. We make an agenda in the morning from attendee submissions. These can be talk topics, conversation topics where you have some knowledge to share, questions to ask or want to spend some time as a group learning something cool. We vote on and schedule the talks, and the get right into it.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Unconference rules at &lt;a href=&#34;https://twitter.com/hashtag/AltNetBrum?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#AltNetBrum&lt;/a&gt; &lt;a href=&#34;https://t.co/NjngqRJXEB&#34;&gt;pic.twitter.com/NjngqRJXEB&lt;/a&gt;&lt;/p&gt;&amp;mdash; Jim Bennett ☁️ (@jimbobbennett) &lt;a href=&#34;https://twitter.com/jimbobbennett/status/1012972503663284229?ref_src=twsrc%5Etfw&#34;&gt;June 30, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;And our agenda was exceptional. You have those moments leading up to conferences with the dilemma of choice. That is where the day started.  Quantum computing with Q#, Functional Programming, dotnet CLI, git, motivating presenters, Reference Data Architecture, Blazor, Docker, Systems Thinking, Xamarin, I can&amp;rsquo;t make an exhaustive list. There was a great breadth of choice in topics submitted and chosen.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Here is the agenda at &lt;a href=&#34;https://twitter.com/hashtag/altnetbrum?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#altnetbrum&lt;/a&gt; unconference &lt;a href=&#34;https://twitter.com/hashtag/DotNet?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#DotNet&lt;/a&gt; &lt;a href=&#34;https://t.co/vW2WyywzLW&#34;&gt;pic.twitter.com/vW2WyywzLW&lt;/a&gt;&lt;/p&gt;&amp;mdash; Toby Henderson (@holytshirt) &lt;a href=&#34;https://twitter.com/holytshirt/status/1012992251151159297?ref_src=twsrc%5Etfw&#34;&gt;June 30, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;I had a few takeaways from the sessions I attended that I want to share.&lt;/p&gt;
&lt;h3 id=&#34;reference-data-architecture&#34;&gt;Reference Data Architecture&lt;/h3&gt;
&lt;p&gt;In programming, we kind of understand the idea of reference data. We may even have some in our database. This is a similar concept that can be used as a tool when architecting complex MicroService systems. Specifically to avoid coupling.  I found the ideas and explanations from &lt;a href=&#34;https://twitter.com/ICooper&#34;&gt;Ian Cooper&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/holytshirt&#34;&gt;Toby Henderson&lt;/a&gt; from Huddle, where they have used this approach in a few places, to be very educational and inspiring.  I can&amp;rsquo;t do the explanation justice in one paragraph so will pull this topic into a future post.  The key takeaway for me was to remember that &amp;ldquo;Don&amp;rsquo;t repeat yourself&amp;rdquo; refers more to the duplication of knowledge, not necessarily the duplication of data or code.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;For those in the session on Reference Data earlier at &lt;a href=&#34;https://twitter.com/hashtag/AltNetBrum?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#AltNetBrum&lt;/a&gt; here is Pat Helland&amp;#39;s paper:  Data on the Outside vs. Data on the Inside.&lt;a href=&#34;https://t.co/qg5AVDdgNG&#34;&gt;https://t.co/qg5AVDdgNG&lt;/a&gt;&lt;br&gt;&lt;br&gt;IMO, essential reading for anyone doing microservices.&lt;/p&gt;&amp;mdash; Ian Cooper (@ICooper) &lt;a href=&#34;https://twitter.com/ICooper/status/1013027638322126848?ref_src=twsrc%5Etfw&#34;&gt;June 30, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;liberating-structures&#34;&gt;Liberating Structures&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/LaylaCodesIt&#34;&gt;Layla from Twilio&lt;/a&gt; gave a great introduction to Liberating Structures. This is an umbrella term for a bunch of ideas, concepts and templates for running meetings, planning sessions, and Agile ceremonies to enhance and encourage better communication.  Recommend checking this out of you work in a team at all. Some great ideas for things to try, and do communication better.  A takeaway from this was learning about both a Fish Bowl and a Park Bench, and what the difference was.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Just learned about Liberating Structures from &lt;a href=&#34;https://twitter.com/LaylaCodesIt?ref_src=twsrc%5Etfw&#34;&gt;@LaylaCodesIt&lt;/a&gt; at &lt;a href=&#34;https://twitter.com/hashtag/AltNetBrum?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#AltNetBrum&lt;/a&gt; Going to be really useful in Architecture Workshops.&lt;/p&gt;&amp;mdash; Ian Cooper (@ICooper) &lt;a href=&#34;https://twitter.com/ICooper/status/1013014769199181824?ref_src=twsrc%5Etfw&#34;&gt;June 30, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;dotnet-cli--the-javascript-kitchen-sink&#34;&gt;dotnet cli + the javascript kitchen sink&lt;/h3&gt;
&lt;p&gt;We had three topics proposed: dotnet CLI dotnet new templates, and javascript acronym soup creeping into our .Net (what is npm, grunt, gulp, bower, yeoman etc etc).&lt;/p&gt;
&lt;p&gt;Merging these together, we had a great discussion going through the what and why of some of these front-end acronyms, and why Microsoft puts them into Visual Studio templates, why you should care. This lead on to dotnet core CLI. Running quickly through the power of the CLI, I showed everyone how to create, build, test, pack and publish with the CLI, and never opening visual studio (including creating a solution file and adding projects).&lt;/p&gt;
&lt;p&gt;For anyone who couldn&amp;rsquo;t keep the pace, I have a &lt;a href=&#34;https://blog.csmac.nz/dotnetcore2-getting-started&#34;&gt;.Net Core CLI Blog Series&lt;/a&gt; that you can refer back to.&lt;/p&gt;
&lt;p&gt;This lead nicely into &lt;a href=&#34;https://twitter.com/jimbobbennett&#34;&gt;Jim Bennett&lt;/a&gt; talking about dotnet new templates, how to create them, and the power they have, including as a foundation for both Visual Studio &amp;ldquo;File=&amp;gt;New Project&amp;rdquo; templates and the equivalent in Visual Studio for Mac. The demo was in context to the new Xamarin templates he is putting together.&lt;/p&gt;
&lt;h3 id=&#34;systems-thinking---why-agile-alone-is-not-enough&#34;&gt;Systems thinking - Why Agile alone is not enough&lt;/h3&gt;
&lt;p&gt;This was an interesting talk by &lt;a href=&#34;https://twitter.com/consolondon&#34;&gt;Marco Consolaro&lt;/a&gt; looking at biological and environmental systems, and how we can learning and apply systems thinking to peoples and teams and companies.  Some real food for thought.&lt;/p&gt;
&lt;p&gt;I had one takeaway from one slide, around the goals of the individual. The system is driven by both the goals of the system, as well as the goals of its parts. As members of a team, we have our own goals as well as the team goal.  By communicating our own goals to the rest of the system (team) we can get and provide better support to allow all of us to meet both (Conclusion mine, not Marcos).&lt;/p&gt;
&lt;p&gt;This was just one small aspect that I took away, but the principles of Systems Thinking is a nice foundation for lots of ideas and approaches that could feed into agile development.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;&lt;a href=&#34;https://twitter.com/consolondon?ref_src=twsrc%5Etfw&#34;&gt;@consolondon&lt;/a&gt; talking about systems thinking at &lt;a href=&#34;https://twitter.com/hashtag/AltNetBrum?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#AltNetBrum&lt;/a&gt; &lt;a href=&#34;https://t.co/tB7S5KLvMW&#34;&gt;pic.twitter.com/tB7S5KLvMW&lt;/a&gt;&lt;/p&gt;&amp;mdash; Pedro Moreira Santos (@pedromsantos) &lt;a href=&#34;https://twitter.com/pedromsantos/status/1013047612453376000?ref_src=twsrc%5Etfw&#34;&gt;June 30, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;git&#34;&gt;Git&lt;/h3&gt;
&lt;p&gt;I finished off with a little git and GitHub tutorial. It felt a bit rushed, and a bit of a shambles but I think I conveyed enough for the attendees to take away and start learning more. If nothing else, I showed enough UI of the edit, stage, commit cycle that it didn&amp;rsquo;t look &lt;a href=&#34;https://blog.csmac.nz/git-is-not-scary/&#34;&gt;too hard or scary&lt;/a&gt;. Bit rusty on running that demo, though.&lt;/p&gt;
&lt;h3 id=&#34;park-bench&#34;&gt;Park Bench&lt;/h3&gt;
&lt;p&gt;We wrapped up the day with a Park Bench. This is something I had not been part of before. Let me set the scene.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Four chairs sit vacant at the front of the room. Around it, a semicircle of other chairs sits expectantly facing towards them. Reluctantly the chairs are filled, leaving the front seats full of nervous folk. The rules are stated: Those four chairs may only make statements, the others, only questions. A question is asked. the seats must answer with their statement.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Suddenly a questioner wants to state. but how? They de-throne one of their peers from one of the four special chairs and take their place as Question-Answerer. For now. Soon enough someone else will have a statement. And so the cycle continues.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This was actually really cool. Though not everyone got a chance to sit up the front, everyone who has something to add to the conversations could get up and do so. And anyone who had a question got the chance to ask it.  I would choose to do this again and might take it back to the office as something to try if the right situation arose.&lt;/p&gt;
&lt;p&gt;The topic of conversion started around the idea of .Net renaissance, and the question of if .Net is dead or dying as an industry, inspired by &lt;a href=&#34;https://www.youtube.com/watch?v=1gfQFiGLZfw&#34;&gt;Ian Cooper&amp;rsquo;s .NET Renaissance talk&lt;/a&gt; from a few years ago.  Some great discussion was had, and we cycled through some other interesting topics along the way, from Languages, Legacy, Salary, to open source, Microsoft then vs now and job security.  I don&amp;rsquo;t know if there was a conclusion to the question, but some great discussion none-the-less.&lt;/p&gt;
&lt;h3 id=&#34;thats-a-rap-to-the-pub&#34;&gt;That&amp;rsquo;s a rap. To the Pub!&lt;/h3&gt;
&lt;p&gt;Any great geek out event must finish with a chance to socialise. And with the unusually hot weather in the Uk this last week or so, an outdoor pub just up the road at the Custard Factory seemed ideal.  This was a nice debrief, and a chance to further get to know the other attendees and those that had spoken.&lt;/p&gt;
&lt;p&gt;Thanks so so much to &lt;a href=&#34;https://twitter.com/ijrussell&#34;&gt;Ian Russell&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/DaveDev&#34;&gt;Dave Evans&lt;/a&gt; for organising such an amazing day.&lt;/p&gt;
&lt;p&gt;Anyone thinking about attending an unconference in the future, Do It! It is great fun, great learning, and not your usual conference.&lt;/p&gt;
&lt;p&gt;I learned about this from the last conference, and here I learned about DDD East Anglia. Might go check that out. Might see you there?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>NDC Oslo 2018 - Day 2 &amp; 3</title>
      <link>https://blog.csmac.nz/post/ndc-oslo-2018-part2/</link>
      <pubDate>Sun, 24 Jun 2018 20:16:48 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/ndc-oslo-2018-part2/</guid>
      <description>&lt;h2 id=&#34;day-2&#34;&gt;Day 2&lt;/h2&gt;
&lt;p&gt;Day 2 of NDC Oslo. A bit less productive than the first. I needed a longer lunch and missed a couple of slots, but made the most of talking to some of the speakers for a bit over the break. There is so much going on that it just felt necessary.&lt;/p&gt;
&lt;p&gt;Never-the-less, I did still pack in a few good choices throughout the day.&lt;/p&gt;
&lt;h3 id=&#34;rise-of-the-tech-influencer&#34;&gt;Rise of the Tech Influencer&lt;/h3&gt;
&lt;p&gt;First up was &lt;a href=&#34;https://twitter.com/msandfor&#34;&gt;Michelle Sandford&lt;/a&gt; with her talk &amp;ldquo;Rise of the Tech Influencer - Small steps you can take to increase your reach&amp;rdquo;. I had been twitter-stalking Michelle a bit the last few days leading up and into NDC, and it turns out that may have been the right idea based on some of the points through her talk. I need to take some advice to update my profile, get a picture of me instead of my avatar (done! Thanks Michelle!) so that I can get recognised more easily, and promote more of my writing better through social networks.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;&lt;a href=&#34;https://twitter.com/msandfor?ref_src=twsrc%5Etfw&#34;&gt;@msandfor&lt;/a&gt; convinced me to sign up for Twitter last night and then gave an amazing talk about how and why to use it this morning. &lt;a href=&#34;https://twitter.com/hashtag/NDCOslo?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#NDCOslo&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/FirstTweet?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#FirstTweet&lt;/a&gt; &lt;a href=&#34;https://t.co/aaN2Rdzp4Q&#34;&gt;pic.twitter.com/aaN2Rdzp4Q&lt;/a&gt;&lt;/p&gt;&amp;mdash; Ian Talarico (@iantalarico) &lt;a href=&#34;https://twitter.com/iantalarico/status/1007167665285234688?ref_src=twsrc%5Etfw&#34;&gt;June 14, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;I didn&amp;rsquo;t get a chance to catch her at the end but needed to find her again before the end of the week for a decent chat, which I managed at the Social drinks on Thursday Night, and between sessions on Friday.  Sorry I didn&amp;rsquo;t get a final goodbye before the day&amp;rsquo;s end, Michelle!&lt;/p&gt;
&lt;h3 id=&#34;implementing-authentication-and-authorization-with-aspnet-core-2&#34;&gt;Implementing Authentication and Authorization with ASP.Net Core 2&lt;/h3&gt;
&lt;p&gt;A great talk by &lt;a href=&#34;https://twitter.com/zerokoll&#34;&gt;Chris Klug&lt;/a&gt; on Auth in ASP.Net Core. Now I have done this before, and the hard way because I was connecting Auth to GitHub. But it is fair to say that I didn&amp;rsquo;t really understand what I was doing at the time. However the clear incremental approach Chris took explaining each couple of lines as he went made it well worth revisiting something not entirely new to me. Recommended to anyone trying to do Auth with AspNetCore 2.X.&lt;/p&gt;
&lt;h3 id=&#34;lunch&#34;&gt;Lunch&lt;/h3&gt;
&lt;p&gt;After so many talks packed so tight across a day and a half, I felt it necessary to take a break for a long lunch, and had to miss a couple of slots. This gave me the chance to sit and have lunch with a lovely group of speakers. Also just reading a title of &amp;ldquo;Quantum Computing&amp;rdquo; made my head hurt for at least an hour.&lt;/p&gt;
&lt;h3 id=&#34;adapting-aspnet-core-mvc-to-your-needs&#34;&gt;Adapting ASP.NET Core MVC to your Needs&lt;/h3&gt;
&lt;p&gt;Competing timeslots with Jon Skeet is hard work, but I decided that Dates and Timezones wasn&amp;rsquo;t as immediately necessary to me as AspNetCore is. (This later may have been regretted as I ran late towards a train leaving Oslo, realising my calendar appointment wasn&amp;rsquo;t timezone adjusted. - Made it though!)&lt;/p&gt;
&lt;p&gt;So I went along to see &lt;a href=&#34;https://twitter.com/filip_woj&#34;&gt;Filip W&lt;/a&gt; talk about what is new in AspNetCore 2.1 and MVC. I learned a bunch of new features, especially extension points and convention based patterns that will help reduce the MVC boiler-plate we have used in the last few releases, thanks to more convention over configuration enhancements, and the ability to customise them, too. Worth looking at if you are wanting to understand customising AspNetCore 2.1, or just to learn what Cargo-Cult code you can now remove.&lt;/p&gt;
&lt;h3 id=&#34;finding-your-service-boundaries&#34;&gt;Finding your service boundaries&lt;/h3&gt;
&lt;p&gt;&amp;ldquo;Finding your service boundaries - A practical guide&amp;rdquo; was an interesting talk from &lt;a href=&#34;https://twitter.com/adamralph&#34;&gt;Adam Ralph&lt;/a&gt; talking over some of the finer points of using data-first approaches to building up your service boundaries. By avoiding doing Entity-First, or even naming things, we can avoid mistakes in design caused by these names.  I don&amp;rsquo;t do the concept justice but if you are doing a lot of data-modeling for your services to get the Architecture right, this is one to take a look at. A lot of familiar principles of coupling and cohesion, applied to the domain of Micro Services.&lt;/p&gt;
&lt;h3 id=&#34;containers-in-production&#34;&gt;Containers in Production&lt;/h3&gt;
&lt;p&gt;Rounding out the day, right before the beer started, flowing was a very educational talk from &lt;a href=&#34;https://twitter.com/DavidOstrovsky&#34;&gt;David Ostrovsky&lt;/a&gt;. The full title is &amp;ldquo;Containers in Production: It&amp;rsquo;s Like Orchestrating Cats&amp;rdquo;.  This was a great real-world overview of using Kubernetes Clusters in production, for developers.  While he covers a few DevOps-y points towards the end, most of the operational points were nicely dev-centric and his points on health-checks and logging were spot-on.&lt;/p&gt;
&lt;p&gt;I had a quick chat with him afterwards about Containers and their health ping. He had stated that he adds checks for dependencies inside his health-check endpoint. I raised the concern that this might cause a cascading failure if a downstream service went down. He made the very valid point that firstly there is a cooldown. It will still report 200 until a service has been down for a period, then start complaining that it can&amp;rsquo;t do its job. This way, transient downstream issues won&amp;rsquo;t take out the upstream components.  Secondly, if you actually need the other services to do your work, and you don&amp;rsquo;t have graceful degradation and short timeouts, then stopping this service is probably better. Your app and its consumers will then fail fast, rather than hang requests, or worse, produce incorrect results.&lt;/p&gt;
&lt;p&gt;To round that out, I later learned that Kubernetes has a backoff strategy for restarting instances, which would stop it thrashing in the above failing health check case (which I am yet to locate in AWS ECS).&lt;/p&gt;
&lt;h2 id=&#34;pubconf&#34;&gt;PubConf&lt;/h2&gt;
&lt;p&gt;Honourable mention goes to PubConf. That&amp;rsquo;s all I want to say on the matter.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;And here is proof of the NDA stuff... &lt;a href=&#34;https://t.co/vJUNZ83TSm&#34;&gt;pic.twitter.com/vJUNZ83TSm&lt;/a&gt;&lt;/p&gt;&amp;mdash; Chris Klug (@ZeroKoll) &lt;a href=&#34;https://twitter.com/ZeroKoll/status/1007342074562338817?ref_src=twsrc%5Etfw&#34;&gt;June 14, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h2 id=&#34;day-3&#34;&gt;Day 3&lt;/h2&gt;
&lt;p&gt;The nature of a good conference is the opportunity to mingle for drinks the last night before the last day. Which means rather than putting together an update of day 2, the meeting of speakers and other like-minded developers takes priority over writing this.&lt;/p&gt;
&lt;p&gt;Never-the-less, here we are on day 3, the final day of NDC Oslo 2018.&lt;/p&gt;
&lt;p&gt;The first session was replaced with a late breakfast, and a chance to try out the overflow room. It&amp;rsquo;s hard to judge talks well from switching between them, so I will have to revisit this and reserve judgement here.&lt;/p&gt;
&lt;h3 id=&#34;the-hello-world-show-live&#34;&gt;The Hello World Show LIVE&lt;/h3&gt;
&lt;p&gt;I have to say that I&amp;rsquo;m not familiar with their show, but I was familiar with some of the guests. In almost a lightning-talk style, each guest gave a quick presentation, and these we all very entertaining and educational at the same time. This was educational and entertaining at the same time.&lt;/p&gt;
&lt;p&gt;After this, I think It is only fair I take a look at &lt;a href=&#34;https://www.youtube.com/channel/UCh1MAMXrvKK_C_piVgOFOAg&#34;&gt;The Hello World Show&lt;/a&gt; on YouTube.&lt;/p&gt;
&lt;h3 id=&#34;deconstructing-priviledge&#34;&gt;Deconstructing Priviledge&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/pati_gallardo&#34;&gt;Patricia Aas&lt;/a&gt; presented her talk on &amp;ldquo;Deconstructing Privilege&amp;rdquo;. I learned a lot. This is brain-altering stuff. In a good way.&lt;/p&gt;
&lt;p&gt;I hope I can convey this in the way it is intended and not get misunderstood, but I walked out in silent contemplation which lasted several minutes before I could engage in another conversation. Very thought-provoking, and I hope it had the desired effect of me achieving conscious incompetence at least.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Become conscious of your incompetence on privilege to progress towards conscious competence and unconscious competence. If you are a white man, you have privilege. Become aware of it and use it to help those with more hardship than you. Great talk by &lt;a href=&#34;https://twitter.com/pati_gallardo?ref_src=twsrc%5Etfw&#34;&gt;@pati_gallardo&lt;/a&gt; at &lt;a href=&#34;https://twitter.com/hashtag/NDCOslo?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#NDCOslo&lt;/a&gt;. &lt;a href=&#34;https://t.co/Mj3TVXTYUF&#34;&gt;pic.twitter.com/Mj3TVXTYUF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Asbjørn 🐻 Ulsberg (@asbjornu) &lt;a href=&#34;https://twitter.com/asbjornu/status/1007571035976237056?ref_src=twsrc%5Etfw&#34;&gt;June 15, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;I also had recommendations to check out Arthur Doler&amp;rsquo;s &amp;rsquo; Let&amp;rsquo;s Talk About Mental Health&amp;rsquo; that was on at the same time.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Hands down &lt;a href=&#34;https://twitter.com/ArthurDoler?ref_src=twsrc%5Etfw&#34;&gt;@ArthurDoler&lt;/a&gt; winns best talk for me this year at &lt;a href=&#34;https://twitter.com/hashtag/ndcoslo?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#ndcoslo&lt;/a&gt; - it affected me so much that I couldn’t help giving a standing ovation (and wasn’t alone) - wow!&lt;/p&gt;&amp;mdash; Tess (@TessFerrandez) &lt;a href=&#34;https://twitter.com/TessFerrandez/status/1007906333650313216?ref_src=twsrc%5Etfw&#34;&gt;June 16, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;kubernetes-for-net-developers&#34;&gt;Kubernetes for .Net developers&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/ShahidDev&#34;&gt;Shahid Iqbal&lt;/a&gt; was a nice companion talk to attended following David Ostrovsky&amp;rsquo;s Cat-Herding from the day before. A bit more hands-on with Kubernetes demos, templates and scripts, including demonstrating switching between dev-machine to cloud with the same &lt;code&gt;kubectl&lt;/code&gt; toolchain.&lt;/p&gt;
&lt;h3 id=&#34;not-a-magic&#34;&gt;Not a magic&lt;/h3&gt;
&lt;p&gt;&amp;ldquo;Not a magic: What to expect from Machine Learning projects&amp;rdquo; was co-presented by &lt;a href=&#34;https://twitter.com/KatyaGeek&#34;&gt;Katya Mustafina&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://twitter.com/illumikko&#34;&gt;Natalia An&lt;/a&gt;. This was my wildcard for the day, getting a taste for ML and how it is done. I now have a much better understanding of the Machine Learning development cycle, and how complicated and time-consuming it can be to produce something useful.&lt;/p&gt;
&lt;h3 id=&#34;12-factor-microservices&#34;&gt;12 Factor MicroServices&lt;/h3&gt;
&lt;p&gt;Despite the fact that Troy Hunt was speaking in the other room, I felt I had more to benefit from finding out more about this &lt;a href=&#34;https://12factor.net/&#34;&gt;12 Factor&lt;/a&gt; stuff, from someone who practically follows the principles himself. &lt;a href=&#34;https://twitter.com/pondidum&#34;&gt;Andy Davies&lt;/a&gt; talked us through the 12 principles that make up 12-factor, with a few his own preferences and variations along the way, on how he uses them to source control, build, test and release pipeline his software applications.  Nothing too earth-shattering, but a good revision of the basics, things that might seem obvious to some, but not all of us do it. There was at least one point from this talk that I can use to try out as part of our iterative improvement.&lt;/p&gt;
&lt;h2 id=&#34;again&#34;&gt;Again?&lt;/h2&gt;
&lt;p&gt;Would I attend again? Without question. Well, one question. Can I afford it? Chances are if I had to come all the way from New Zealand or Australia it would be a bit of a mission and would hurt the wallet. However, if NDC Sydney is even half as good as this then it would be highly recommended. (Though I hear pre-sales may have just ended.)&lt;/p&gt;
&lt;p&gt;Thanks again to all the great speakers and attendees for their hallway conversions. This really makes a conference like this what it is.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>NDC Oslo 2018 - Day 1</title>
      <link>https://blog.csmac.nz/post/ndc-oslo-2018/</link>
      <pubDate>Wed, 13 Jun 2018 06:34:40 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/ndc-oslo-2018/</guid>
      <description>&lt;p&gt;With 10 streams on, there has been a lot to choose from at NDC in Oslo.  But as day one ends, I&amp;rsquo;ve now voted with my feet. And since I can&amp;rsquo;t be in two places at once (though the overflow does technically make this possible) these are the decisions I made, and a few takeaways from each.&lt;/p&gt;
&lt;h3 id=&#34;day-1&#34;&gt;Day 1&lt;/h3&gt;
&lt;p&gt;I was pretty much jumping from one session to the next today but had a little time to walk the stalls first.  A quick chat with the Guys from Microsoft, Octopus Deploy and a few stickers from some other stalls such as Twilio and JetBrains.&lt;/p&gt;
&lt;h4 id=&#34;keynote&#34;&gt;Keynote&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/MadsTorgersen&#34;&gt;Mads Torgersen&lt;/a&gt; gave a great Keynote walking us through the 50 year history of Object Oriented Programming which covered many languages not seen much today, all the way up to Javascript and C# (and others) still used today, with a nice overview of which features were &amp;ldquo;invented&amp;rdquo; with each advancement.  This included interesting syntax inventions of &amp;ldquo;C-mula&amp;rdquo; and &amp;ldquo;C-ta&amp;rdquo;.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Learning about the history of &lt;a href=&#34;https://twitter.com/hashtag/object?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#object&lt;/a&gt;-oriented paradigm in different languages, including c-mula and c-ta :)&lt;a href=&#34;https://twitter.com/MadsTorgersen?ref_src=twsrc%5Etfw&#34;&gt;@MadsTorgersen&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/NDCOslo?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#NDCOslo&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/keynote?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#keynote&lt;/a&gt; &lt;a href=&#34;https://twitter.com/hashtag/CSharp?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#CSharp&lt;/a&gt; &lt;a href=&#34;https://t.co/s3RVEOZfEO&#34;&gt;pic.twitter.com/s3RVEOZfEO&lt;/a&gt;&lt;/p&gt;&amp;mdash; Mikko Vuorinen (@mvuorinen) &lt;a href=&#34;https://twitter.com/mvuorinen/status/1006811386285043720?ref_src=twsrc%5Etfw&#34;&gt;June 13, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;h4 id=&#34;c-8&#34;&gt;C# 8&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/jonskeet&#34;&gt;Jon Skeet&lt;/a&gt; joined Mads Torgersen on stage to run through some beta builds of Visual Studio to demonstrate the coming soon features of C# in version 8. Honourable mentions I am looking forward to are the new switch pattern matching, Nullable Reference Type (&lt;code&gt;string?&lt;/code&gt;), and the new &amp;ldquo;Dammit!&amp;rdquo; operator.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34; data-lang=&#34;en&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;At &lt;a href=&#34;https://twitter.com/hashtag/NDCOslo?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#NDCOslo&lt;/a&gt; I have just learned about the &amp;quot;dammit&amp;quot; operator from &lt;a href=&#34;https://twitter.com/jonskeet?ref_src=twsrc%5Etfw&#34;&gt;@jonskeet&lt;/a&gt;. As in &amp;quot;&amp;quot;text!.length&amp;quot; is &amp;quot;text dammit! length&amp;quot;&lt;/p&gt;&amp;mdash; Mark Clearwater (@csMACnz) &lt;a href=&#34;https://twitter.com/csMACnz/status/1006819583653830656?ref_src=twsrc%5Etfw&#34;&gt;June 13, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;p&gt;I managed to find myself sitting next to Jon at a talk later in the day, and am very happy to have had a quick chat and got a Selfie with him.&lt;/p&gt;
&lt;h4 id=&#34;implementing-a-clean-architecture-in-net-core&#34;&gt;Implementing a Clean Architecture in .Net Core&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/icooper&#34;&gt;Ian Cooper&lt;/a&gt; from Huddle walking us through Ports and Adapters in an evolutionary step by step way, evolving through an application while also going through the history of the architecture from &lt;a href=&#34;http://www.cs.sjsu.edu/~pearce/modules/patterns/enterprise/ecb/ecb.htm&#34;&gt;Entity-Control-Boundary&lt;/a&gt; back to Hexagonal and Ports and Adapters.&lt;/p&gt;
&lt;p&gt;I must check out his library &lt;a href=&#34;https://github.com/BrighterCommand/Brighter&#34;&gt;Brighter&lt;/a&gt; for its CQRS Command Dispatcher support.&lt;/p&gt;
&lt;h4 id=&#34;the-power-of-roslyn&#34;&gt;The power of Roslyn&lt;/h4&gt;
&lt;p&gt;After lunch, I was able to find out more about (and how easy it is) to make Roslyn inspecters and refactors from &lt;a href=&#34;https://twitter.com/kuhlenhuth&#34;&gt;Kasey Uhlenhuth&lt;/a&gt;. Another must try to add to the list.&lt;/p&gt;
&lt;h4 id=&#34;give-it-a-rest&#34;&gt;Give it a REST&lt;/h4&gt;
&lt;p&gt;I met &lt;a href=&#34;https://twitter.com/westleyl&#34;&gt;Liam Westley&lt;/a&gt; the night before and his elevator pitch and some conversion over beer lead me to make this a must-see. Also from Huddle and works with Ian Cooper, the full title &amp;ldquo;Give it a REST - Tips for designing and consuming public APIs&amp;rdquo; was a nice mix of tips and tricks for building, consuming, and maintaining REST APIs in a real, pragmatic way. Full of example horror stories from in and around his own company, it was full of valuable points to take away and start using.&lt;/p&gt;
&lt;p&gt;One point of note, was using a nested PUT on a resource to do patch actions in a lightweight way (such that a record status update would be a PUT to &amp;ldquo;record/123/status&amp;rdquo;). Pragmatic. Also, asynchronous requests using &lt;code&gt;202 Accepted&lt;/code&gt;, using &lt;code&gt;429 TooManyRequests&lt;/code&gt; for throttling, and using cache-related headers.&lt;/p&gt;
&lt;p&gt;(Apologies to &lt;a href=&#34;https://twitter.com/PeterHilton&#34;&gt;Peter Hilton&lt;/a&gt; for missing yours that was at the same time, it is going to be a must see when I get access to the recordings. Beautiful code: typography and visual programming. - &lt;a href=&#34;https://twitter.com/it_vegard/status/1006891857073377280&#34;&gt;see twitter&lt;/a&gt;)&lt;/p&gt;
&lt;h4 id=&#34;reinventing-mvc-pattern-for-web-programming-with-f&#34;&gt;Reinventing MVC pattern for web programming with F#&lt;/h4&gt;
&lt;p&gt;For a bit of a change, while still following the AspNetCore theme, I went and watched &lt;a href=&#34;https://twitter.com/k_cieslak&#34;&gt;Krzysztof Cieślak&lt;/a&gt; (Chris), dubbed OSS Troublemaker. He talked about his Open Source project &lt;a href=&#34;https://github.com/SaturnFramework/Saturn&#34;&gt;Saturn&lt;/a&gt; which is built on top of &lt;a href=&#34;https://github.com/giraffe-fsharp/Giraffe&#34;&gt;Giraffe&lt;/a&gt; which in turn is built as an F# Library on top of AspNetCore. Saturn is an &amp;ldquo;MVC&amp;rdquo; library in F#, written to give you the power and performance leveraged from AspNetCore, but trying to keep in mind the concept of the Pit of Success, to make it easy to use, and easy to get starting as a new developer, while benefiting from the principles of MVC, and the power and productivity of F#.&lt;/p&gt;
&lt;p&gt;So many new tools to explore, and we are only one day in!&lt;/p&gt;
&lt;h4 id=&#34;an-opinionated-approach-to-aspnet-core&#34;&gt;An Opinionated Approach to ASP.NET Core&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://twitter.com/OdeToCode&#34;&gt;K. Scott Allen&lt;/a&gt; gave us some opinions. I couldn&amp;rsquo;t find anything too much to argue with, which probably means I should have gone to a different talk instead. However, his points were interesting to hear from someone else, nonetheless.&lt;/p&gt;
&lt;p&gt;Use &amp;ldquo;Features&amp;rdquo; folders to structure areas of your application functionality (keep Use-Case centric code together essentially); Async suffix has served its purpose, and is no longer really that relevant (we can stop mandating it); There is a button in Visual Studio to toggle the Solution Explorer between classic view, and filesystem view; put your build and helper scripts in your repository; have samples in your repository; put your solution at the top level of your repo.  As I say, lots of stuff that I would probably advocate as well if you asked me.&lt;/p&gt;
&lt;p&gt;The one throw-away comment that stuck with me was actually &amp;ldquo;I wish there was a way to put my tests in here too&amp;rdquo; in relation to being beside the code in the Feature beside the feature&amp;rsquo;s code.  This is something I have to go away and see if it can be done with a little MSBuild magic, and maybe even extracted to a target file in a NuGet package, perhaps.&lt;/p&gt;
&lt;h3 id=&#34;one-down&#34;&gt;One down&lt;/h3&gt;
&lt;p&gt;Tomorrow is day 2, and there will another ~70 talks to get down to 7 which I should be able to give another debrief on as well. It may take up until tomorrow to make that decision, though.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Global Day of Coderetreat 2015. Done.</title>
      <link>https://blog.csmac.nz/post/global-day-of-coderetreat-2015-done/</link>
      <pubDate>Sat, 14 Nov 2015 18:35:22 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/global-day-of-coderetreat-2015-done/</guid>
      <description>&lt;p&gt;It was another great year being involved in the Global Day of Coderetreat for 2015. This was my first year hosting, and it was great fun planning the exercises and running the day. With 16 people turning up, we had a nice mix of student developers, junior developers from various different Software Consultancies around Wellington, and a couple of Seasoned Vets of the GCDR who are known faces from the .Net Community. We had an even mix of Ruby and C# developers, and everyone felt comfortable with javascript this year as well. This made for great opportunities for learning and collaboration to happen, no matter who you ended up pairing with.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://res.cloudinary.com/csmacnz/image/upload/c_scale,h_600/v1447572057/WP_20151114_09_33_49_Pro_2_lbm70z.jpg&#34; alt=&#34;Working in pairs at the 2015 Global day of Coderetreat&#34;&gt;&lt;/p&gt;
&lt;p&gt;The day was structured with 5 45-minute exercises, having 3 before lunch, and the other two after. There was a nice little breakfast put on with the help of a little money from Xero, and a great effort of muffins from my wife, Katherine. We had Subway catering for lunch, again thanks to the support of Xero. It was also great to be able to hold the event at Xero&amp;rsquo;s Wellington office again too, using the large, sunny bull-nose area on level 2, and the well fitted Melbourne meeting room complete with a large TV to run our slides from. In fact, this is the 4th time this has run in Wellington, and all four have been able to use this space!&lt;/p&gt;
&lt;p&gt;For those of you unfamiliar with the GDCR, this is a global, annual event created by Corey Haines that has been running for 5 years now, based on an idea that evolved through 2009-2011. Using Conway&amp;rsquo;s Game of Life, programmers work in pairs to code up a solution in 45 minutes. The aim is not to solve the problem completely, but instead use its simplicity to explore features and techniques in your language of choice, especially things that you wouldn&amp;rsquo;t normally do as part of your day job. This opens your mind to think differently, problem solve and come up with innovative solutions to interesting artificial restrictions against your language or tools.&lt;/p&gt;
&lt;p&gt;After starting simple with everyone getting to write a standard solution once, Wellington this year ran through 4 constraints: No conditional statements, no loops, ping pong TDD evil coder, and no mutable state.  Most of these I hope are self-explanatory, but I will elaborate on ping pong TDD evil coder as it is one of my favourite exercises.&lt;/p&gt;
&lt;p&gt;Each pair is tasked with dividing the roles of developer, and test writer. The test writer writes tests without writing implementations, to guide the developer into writing the correct solution to the game of life.  The developer has other ideas and writes the most ridiculous, incorrect code they can just to make the tests pass. The keyboard is passed back and forward in this fashion, up until half-way through the 45 minutes. Now we get the pairs to swap roles. The tester now writes the implementation code, and the developer now has to write the tests. To top it all off, we make everyone work in silence, so that they cannot discuss anything that is happening, and have to communicate in the reading and writing of the code.&lt;/p&gt;
&lt;p&gt;At the end of each of the 45 minutes, we would take a break, and also get back together as a group to discuss the solutions, how teams went, and what interesting observations had been made. As expected, the first exercises only one or two people would talk in these discussions. But by the end of the day, most people felt comfortable and had something to contribute to the conversation. This also gave way to us being able to end by going around the room, and everyone was able to say one thing they learned, one thing that surprised them, and something they would start to use in their day to day.&lt;/p&gt;
&lt;p&gt;One interesting observation that I made while watching one particular pair during the no loops exercise, was around the other rule of GDCR, that if you manage to complete the game of life inside the 45 minutes, you have missed the point.  Pretty quickly, I noticed that these guys had &amp;ldquo;finished&amp;rdquo;. I enquired about their solution, which involved using recursion to solve the looping problem. For most people, getting to this conclusion within the 45 minutes is a great result, but these guys already knew that answer before they started.  I pushed them by saying &amp;ldquo;Great, now what if you can&amp;rsquo;t use recursion?&amp;rdquo;.  This left them throwing around ideas until about the last 5 minutes where they came up with a great solution, but ran out of time to implement it. They didn&amp;rsquo;t finish. So I was happy that they had not missed the point after all. What was their solution? I&amp;rsquo;ll leave that open for you to think about on your own.&lt;/p&gt;
&lt;p&gt;In the end, it was a successful day with everyone learning something useful to take back to their day jobs, and having enjoyed their Saturday. We ended in the time honoured tradition of tidying up and heading off to the pub.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://res.cloudinary.com/csmacnz/image/upload/c_scale,h_600/v1447572054/WP_20151114_16_26_10_Pro_ulugrw.jpg&#34; alt=&#34;A great end to another year.&#34;&gt;&lt;/p&gt;
&lt;p&gt;A huge thanks again to Xero for being so supportive of this year&amp;rsquo;s event. And I&amp;rsquo;d like to personally thank Jen O&amp;rsquo;byrne and Jean McClymont for giving up their Saturday to come along and help out, and Ben Amor for supporting me behind the scenes. Very much appreciated! And a small shout-out to Martin and Amy for handing over the reigns and encouraging me to make it all happen this year.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Global Day of Coderetreat 2015 is here</title>
      <link>https://blog.csmac.nz/post/global-day-of-code-retreat-2015-is-here/</link>
      <pubDate>Wed, 11 Nov 2015 18:22:41 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/global-day-of-code-retreat-2015-is-here/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s that time of year again for Programmers the world over to gather together and practice their art. Yes, It&amp;rsquo;s the 2015 Global Day of Code Retreat on Saturday 14th November, and once again I have found myself involved. 4 years ago I attended my first GDCR in Wellington and it was great fun. Now, having stepped in to help facilitate last year, I have stepped up to Host it, with the help of a few of my colleagues as Xero.&lt;/p&gt;
&lt;p&gt;If memory serves, this is at least the 4th time Xero have graciously sponsored and provided the venue to hold the event in Wellington. And for the First time we have our Auckland office involved too, which is the first step to a worldwide rollout I suspect.&lt;/p&gt;
&lt;p&gt;The event is a great place for developers to come along and meet other devs from their local community and mingle with the other languages groups around town. We always get a nice mix of languages turn up including c#, ruby, objective-c, java, javascript developers, along with those enthusiasts who choose to use more niche or up and coming languages like Rust or Go.&lt;/p&gt;
&lt;p&gt;We will spend the day working with &lt;a href=&#34;https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life&#34;&gt;Conway&amp;rsquo;s Game of Life&lt;/a&gt; with a few 45 minute long exercises. In these exercises we will practice TDD in a Pair Programming setting, with a special rule or constraint applied. I don&amp;rsquo;t want to give anything away, so you will have to wait until after the event to find out what these constraints are.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m looking forward to Saturday and will follow up with a post-mortem of the event as well.  For more information, check out the GDCR homepage at  &lt;a href=&#34;http://globalday.coderetreat.org/&#34;&gt;http://globalday.coderetreat.org/&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Global Game Jam 2009</title>
      <link>https://blog.csmac.nz/post/global-game-jam-2009/</link>
      <pubDate>Mon, 02 Feb 2009 05:15:08 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/global-game-jam-2009/</guid>
      <description>&lt;p&gt;This weekend I was lucky enough to participate in Global Game Jam 2009 in the Dunedin, New Zealand Team. For those of you who don&amp;rsquo;t know what Game Jam is, it&amp;rsquo;s a 48-hour game building competition run in multiple centers around the world simultaneously. Dunedin entered three teams and successfully made 3 games in the 48 hours allocated, with a total of 10 people participating in Dunedin, and a total of over 1700 participants worldwide.&lt;/p&gt;
&lt;p&gt;The competition had 3 international constraints: Game-play must last no longer than 5 minutes; It had to represent the theme &amp;ldquo;As long as we&amp;rsquo;re together, we will never run out of problems&amp;rdquo;; and it had to include one of three themes, cold, blank or modern. The Dunedin chapter of the competition has hosted and run by Tim Nixon of &lt;a href=&#34;http://www.straylight-studios.com/&#34;&gt;Straylight&lt;/a&gt;, who have hosted running versions of all our games on their website, which were all developed to run on the web.&lt;/p&gt;
&lt;p&gt;My team made a game called &amp;ldquo;My Mate&amp;rsquo;s Drunk&amp;rdquo;. The story-line was your mate has dragged you out for a night on the town and has gotten rather sloshed. Your task is to get him home without being late, and with causing as little damage to the town on the way home. This game was written in Java. &lt;a href=&#34;http://globalgamejam.org/games/my-mate039s-drunk&#34; title=&#34;Global Game Jam - My Mate&#39;s Drunk&#34;&gt;Global Game Jam - My Mate&amp;rsquo;s Drunk&lt;/a&gt; &lt;a href=&#34;http://dev.straylight-studios.com/gamejam/MyMatesDrunk/game.html&#34;&gt;Straylight - My Mate&amp;rsquo;s Drunk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One team build a weather simulator where you terraform a planet by manipulating the clouds. Their back story is that humans will arrive at the planet in a few thousand years, and you are a small robot sent ahead to terraform the planet to get it ready and inhabitable for them. You essentially have 5 minutes to get the planet ready for them and get a percentage terraformed rating at the end. This game was developed in Silverlight. &lt;a href=&#34;http://globalgamejam.org/games/terraqua&#34;&gt;Global Game Jam - TerrAqua&lt;/a&gt; &lt;a href=&#34;http://dev.straylight-studios.com/gamejam/terraqua/testpage.html&#34;&gt;Straylight - TerrAqua&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Third team built a battling toasters game which is called Death By Toaster. Set in a Post-Apocalyptic Future junkyard, the mutant appliances are coming alive and fighting for survival. You battle for supremacy and glory. This game has 1, 2 or 3 player mode, and is also built with Silverlight. &lt;a href=&#34;http://globalgamejam.org/games/death-toaster&#34;&gt;Global Game Jam - Death By Toaster&lt;/a&gt; &lt;a href=&#34;http://dev.straylight-studios.com/gamejam/DeathByToaster/&#34;&gt;Straylight - Death By Toaster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Be sure to also check out other games built by people all over the world at the &lt;a href=&#34;http://globalgamejam.org/&#34;&gt;Game Jam Website&lt;/a&gt;. It was heaps of fun and my only hope is that people play and enjoy all the great games that came out of this weekend.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>