<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Editorial on csMACnz&#39;s Blog</title>
    <link>https://blog.csmac.nz/categories/editorial/</link>
    <description>Recent content in Editorial 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>Mon, 15 Jul 2019 09:50:55 +0000</lastBuildDate><atom:link href="https://blog.csmac.nz/categories/editorial/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>We are all 10x engineers, but I don&#39;t think it means what you think it means</title>
      <link>https://blog.csmac.nz/post/we-are-all-10x/</link>
      <pubDate>Mon, 15 Jul 2019 09:50:55 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/we-are-all-10x/</guid>
      <description>&lt;p&gt;If your reading this blog, and used twitter in the past few days, you have probably already seen this tweet, or some of the replies coming through from the community:&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;10x engineers&lt;br&gt;&lt;br&gt;Founders if you ever come across this rare breed of engineers, grab them. If you have a 10x engineer as part of your first few engineers, you increase the odds of your startup success significantly.&lt;br&gt;&lt;br&gt;OK, here is a tough question.&lt;br&gt;&lt;br&gt;How do you spot a 10x engineer?&lt;/p&gt;&amp;mdash; Shekhar Kirani (@skirani) &lt;a href=&#34;https://twitter.com/skirani/status/1149302828420067328?ref_src=twsrc%5Etfw&#34;&gt;July 11, 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 a developer who tries to be good at their job, I have thoughts on this. As a Human, I like to be heard. (Note that being heard is not the same thing as being agreed with, or being right.) So here I am giving my opinion on this idea of a 10x developer, and specifically these &amp;ldquo;10 signs&amp;rdquo; put up online.&lt;/p&gt;
&lt;p&gt;I like the idea that there are no 10x people, instead, you can strive to produce 10x teams.&lt;/p&gt;
&lt;h2 id=&#34;1-meetings&#34;&gt;1. Meetings&lt;/h2&gt;
&lt;p&gt;A lot of people don&amp;rsquo;t like meetings. But unfortunately, communication is a big part of effective teams and businesses. While it is true that some people love meetings, and some meetings don&amp;rsquo;t hold productivity, the key here is communication. If you can find an effective means of communication within a team that works, that is most important.  Having a team full of people that don&amp;rsquo;t have meetings doesn&amp;rsquo;t make a 10x team. If meetings are causing you or your team problems, it is work looking at other strategies for effective communication. There are alternatives out there.&lt;/p&gt;
&lt;h2 id=&#34;2-office-hours&#34;&gt;2. Office Hours&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;Nine to Five&amp;rdquo; is such an old fashioned idea these days. Not only do some countries have alternative ideas like 4 day weeks, long lunch hours, &amp;ldquo;flexitime&amp;rdquo;, but more and more business work across locations and across timezones. We are asking people to work outside these hours for various reasons already, so why not some give and take here?&lt;/p&gt;
&lt;p&gt;Most people would love flexible work hours. It turns out that if people can work around their own schedule, they put their best work forward when they are present. I would much rather have someone contribute 100% at 9 pm at night because their kids are in bed and they can concentrate rather than pay them to sit at their desk for several hours texting and calling their family. Just a thought.&lt;/p&gt;
&lt;p&gt;We are so fortunate that in our industry is so capable and adjustable to different working hours that it is a shame not to support this. It is not that &amp;ldquo;10x developers are the people who like this&amp;rdquo;, it is actually that most employees want this, and it can be done.&lt;/p&gt;
&lt;h2 id=&#34;3-screen-colour-and-worn-keyboards&#34;&gt;3. Screen colour and worn keyboards&lt;/h2&gt;
&lt;p&gt;If I saw a sports star on the field/pitch/court wearing badly worn shoes, I wouldn&amp;rsquo;t think &amp;ldquo;This is a superstar&amp;rdquo;, I would probably think &amp;ldquo;he isn&amp;rsquo;t paid enough&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Why are you letting your developers use worn-out equipment? Buying the required hardware and software is such an important thing, just do it! In all seriousness, though, giving staff the right tools to get their job done is always a good idea.&lt;/p&gt;
&lt;p&gt;There is an interesting dichotomy with custom technical tools as well. If you have one developer that goes against the grain of the team with customisation, then it both makes it harder for them to use other machines (e.g. during pairing/mobbing) and for others to use theirs. There is some efficiency to using the out of the box defaults too. You can get up and running faster, and waste less time doing customisations every time you refresh your machine or change jobs and get new hardware.&lt;/p&gt;
&lt;p&gt;Also, if you have to have everything customised your own way, you won&amp;rsquo;t be able to acclimatise to new situations, new tools, new teams. Not someone you want to add to your team.&lt;/p&gt;
&lt;h2 id=&#34;4-good-memory&#34;&gt;4. Good memory&lt;/h2&gt;
&lt;p&gt;One my big comparisons between my generation and the one before me (that is the one with the access to Google, but not access to iPads) was that at school we were no longer taught to memorise and recall information. Instead, we were taught, and learned, the importance of finding and referencing information. There is too much information for us all to hold in our heads. knowing where to look and what to look for is far more important that memorised information for a technology that will be obsolete in 3 years (if you are lucky), let alone memorising a dozen of them over time.&lt;/p&gt;
&lt;p&gt;Yes, it is great to get people who know the domain really well, and for some people, it really is a skill. But people can&amp;rsquo;t know what they haven&amp;rsquo;t seen yet, and new hires always start as a blank slate. Not to mention tomorrow will bring a new set of libraries, applications and services that need to be learned and understood.&lt;/p&gt;
&lt;p&gt;Scott Hanselman talks of the experience-groundhog-day scenario.&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;Do you have 10 years’ experience, or the same year 10 times? &lt;a href=&#34;https://t.co/LhIeWiWl3H&#34;&gt;https://t.co/LhIeWiWl3H&lt;/a&gt;&lt;/p&gt;&amp;mdash; Scott Hanselman (@shanselman) &lt;a href=&#34;https://twitter.com/shanselman/status/1001495109836226560?ref_src=twsrc%5Etfw&#34;&gt;May 29, 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;5-full-stack&#34;&gt;5. Full Stack&lt;/h2&gt;
&lt;p&gt;Don&amp;rsquo;t you love buzz words? FullStack. A full-stack would be from the HTML/CSS/js to the backend code, to the database. But it is also understanding how the TCP/HTTP layer works with packets and routing. How does your platform infrastructure run, do you manage and patch the servers? Database backups and data security, not to mention how the hardware scales, can you write the assembly to work with arm processors too?&lt;/p&gt;
&lt;p&gt;Jack of all trades, master of none. That is a saying that acknowledges you are spread too thin. You can&amp;rsquo;t be an expert in everything, so instead, you can hire an expert in each thing. Yes, you want everyone to be a generalist, but make sure you have coverage with all of the specialists, too.&lt;/p&gt;
&lt;p&gt;I can&amp;rsquo;t say I&amp;rsquo;ve met too many people who can design and build an amazing user experience, and also optimise a large scale database, and run a datacentre. Oh and also works well with others&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;6-wait-wat&#34;&gt;6. Wait, WAT?&lt;/h2&gt;
&lt;p&gt;This one I just have to quote it in two parts:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;10x engineers can convert &amp;ldquo;thought&amp;rdquo; into &amp;ldquo;code&amp;rdquo; in their mind and write it in an iterative fashion.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Just for a second, imagine with me, that you could replace the words &amp;ldquo;10x engineer&amp;rdquo; with &amp;ldquo;a developer&amp;rdquo;. Crazy idea, but it might actually work.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given a product feature, they can write that entire feature in one or two sittings of 4 to 6 hours with a caffeinated drink without distraction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We all have good days where we fire on all cylinders. Or a task or feature fits into just the right hole in a system.  Cherish the days when it happens, but realise its more about the stars aligning and less about the ability of your developer. We are all capable of this. But the rest of the time it&amp;rsquo;s just a Monday.&lt;/p&gt;
&lt;h2 id=&#34;7-good-memory-part-deux&#34;&gt;7. Good Memory. Part Deux&lt;/h2&gt;
&lt;p&gt;We talked about this. Enough said.&lt;/p&gt;
&lt;h2 id=&#34;8-learning&#34;&gt;8. Learning&lt;/h2&gt;
&lt;p&gt;This is another one of those things with a dichotomy. If you are always learning something new, you never get to master anything. There is a benefit to having people who are masters, and people who can learn, and people who can teach and share. You need balance both as a developer and person, but also in and within a team. If you don&amp;rsquo;t have this yet, look at hiring the capabilty, but don&amp;rsquo;t use it to rule in or out talented people.&lt;/p&gt;
&lt;h2 id=&#34;9-terrible-leaders&#34;&gt;9. Terrible leaders&lt;/h2&gt;
&lt;p&gt;Yes. I think exactly what you want to do is hire someone who cannot teach how the system works to new staff. That will help you grow. No, not really. The team is only as strong as its weakest point. And the ability to both cover for, and teach and grow newer talent is key to growth and success.&lt;/p&gt;
&lt;p&gt;Also, while it is true that some people will be amazing on your team, but will interview poorly, I can&amp;rsquo;t say there is a direct reverse correlation here, either. Sorry.&lt;/p&gt;
&lt;h2 id=&#34;10&#34;&gt;10. &lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;10x engineers rarely job hunt or move out of the company. They move out because you make their life miserable with the process, meetings, training, and other non-value-added activities. If you come across them, hold on to them. Celebrate them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So close. This is the first point I almost agree with. Just go ahead and replace &amp;ldquo;10x engineers&amp;rdquo; again with &amp;ldquo;developers&amp;rdquo;, Or even just &amp;ldquo;employees&amp;rdquo; will do.&lt;/p&gt;
&lt;h2 id=&#34;01x-developers&#34;&gt;0.1x developers&lt;/h2&gt;
&lt;p&gt;While there are seeds in here that make for an interesting debate, they have nothing to with &amp;ldquo;10&amp;rdquo; or &amp;ldquo;X&amp;rdquo;. The best summary of the whole situation is this: The scale is off.  I think the truth of the matter is that there are developers who might contribute to failings in a team (and some warning signs appear above, under the wrong inversion, though). We can call them the 0.1x developers. They are the ones to truly watch out for.&lt;/p&gt;
&lt;p&gt;As founders and employers, you will want to be doing all the right things to attract and keep good talent, and that is more important than going after a mythical creature known as the 10x developer.&lt;/p&gt;
&lt;p&gt;What someone needs to do is follow the footsteps of Dylan Beattie&amp;rsquo;s &lt;a href=&#34;https://github.com/RockstarLang/rockstar&#34;&gt;Rockstar programming language&lt;/a&gt; and make a language or piece of hardware board and call it &amp;ldquo;10x&amp;rdquo;. Then we can all be Rockstar Programmers and 10x Engineers.&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>Silverlight 6 with .NetStandard support Announced</title>
      <link>https://blog.csmac.nz/post/silverlight-6-with-netstandard-support-announced/</link>
      <pubDate>Sun, 31 Mar 2019 16:30:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/silverlight-6-with-netstandard-support-announced/</guid>
      <description>&lt;p&gt;&lt;em&gt;Published on April Fools Day, 2019&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Microsoft announced today that they are working on Silverlight 6, which is to include .NetStandard support up to at least NetStandard 2.0.&lt;/p&gt;
&lt;p&gt;Development Manager &lt;a href=&#34;http://bit.ly/llirpa&#34;&gt;Loof Lirpa&lt;/a&gt; on the Silverlight Development team has confirmed that there is a Silverlight version 6 in the works, and it will be compatible with the .Net Standard and the dotnet cli.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;We have been working hard behind the scenes for a while, because it is important for us to get this right and be as compatible as possible, we didn&amp;rsquo;t want to announce anything until we were certain it was going to be possible to do.&amp;rdquo;, Mrs Lirpa told us.&lt;/p&gt;
&lt;p&gt;As well as the existing Windows and Mac Browser support we have come to expect from Silverlight, and the Windows OOTB mode, version 6 will ship with Linux support for the first time. Leveraging the work done for .Net core on linux, and with the help of Johnny Skeeet at Mozilla, browsers on Linux including the Chrome browser will also support the new version. &amp;ldquo;We have had such great success with embedding Flash into our browser from a security point of view, we look forward to completing the Silverlight 6 integration for all platforms.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Developers should expect to have builds available by April 1st 2020.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>So you wanna be a Rockstar (Developer)?</title>
      <link>https://blog.csmac.nz/post/so-you-wanna-be-a-rockstar-developer/</link>
      <pubDate>Tue, 05 Feb 2019 20:13:39 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/so-you-wanna-be-a-rockstar-developer/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&amp;lsquo;Cause we all just wanna be big rockstars
And live in hilltop houses, drivin&amp;rsquo; fifteen cars&lt;/p&gt;
&lt;p&gt;&amp;ndash; Rockstar by Nickelback&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Have you been to see rock bands perform live? There are a lot of subtleties to their performance that you might not have noticed. And it is relevant to software development. (Really!)&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ve seen the &amp;ldquo;Diva Rockstar&amp;rdquo; on stage? Basically, they take the main spotlight, everyone knows them and has no idea who the rest of the band are. In fact, you might even think the other guys are not very good, really.&lt;/p&gt;
&lt;p&gt;In some cases, there may be two, maybe a lead singer, and a guitarist competing against each other, making each other look bad to make themselves look better? Oh and those other guys, merely decoration, not even worth learning their names.&lt;/p&gt;
&lt;p&gt;You have a big problem in both scenarios. As a whole, the music they are producing is terrible. Sure that guy can sing or that woman can play, but as a whole, it sounds unpleasant, and off somehow. Not enjoyable.&lt;/p&gt;
&lt;p&gt;But a real proper performance? It just sings. And here is why. Teamwork.&lt;/p&gt;
&lt;p&gt;Pay close attention and you can see some true signs of polish that produce an amazing performance. First, the lead singer and lead musician share the spotlight. The guitarist lets the singer&amp;rsquo;s voice shine, and the singer takes a break for a sweet, sweet guitar solo.  But more than that. They introduce the rest of the band. Bongo on drums with a smashing drum solo, Rip on bass with his fast fingers, and Gill on backing vocals etc.&lt;/p&gt;
&lt;p&gt;But it isn&amp;rsquo;t even just the guys on stage that are slick. The crew are so good you barely notice them.  Where did that acoustic guitar come from? I&amp;rsquo;m sure he was holding a Gibson before&amp;hellip; He starting this song holding a guitar now he is just carrying the mic around&amp;hellip; He keeps throwing away the picks into the audience but never seems to run out&amp;hellip;&lt;/p&gt;
&lt;p&gt;If you look closely, you will see very well choreographed and rehearsed handoffs during and between certain songs that the stage crew sneak on and off to assist with. The support crew are as important as the band themselves for a successful outcome.  And again there is more. These guys set up the stage before, help to pack up the gear to get back on the road for the next gig after. You have sound engineers that are tuning the sound system to keep a clean and consistent output of sound.&lt;/p&gt;
&lt;p&gt;That lead singer is standing on the shoulders of a whole crew of people. And makes sure to shine the spotlight on the rest of the team playing the tunes.&lt;/p&gt;
&lt;h3 id=&#34;huh&#34;&gt;Huh?&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;You&lt;/em&gt;: Hold on, this is a software development blog&amp;hellip;
&lt;em&gt;Me&lt;/em&gt;: &amp;hellip;
&lt;em&gt;Me&lt;/em&gt;: Right.
&lt;em&gt;You&lt;/em&gt;: &amp;hellip;&lt;/p&gt;
&lt;p&gt;Ok was that too subtle? If not then I&amp;rsquo;ll just repeat myself to reinforce the point.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t aim to be a Rockstar developer. Aim to be an amazing team. And especially don&amp;rsquo;t be a Diva.&lt;/p&gt;
&lt;p&gt;If you are trying to outshine everyone else, you are actually being detrimental to the aims and goals of the team. And you don&amp;rsquo;t want to be competing with the other Rockstar wannabes on the team either. You want to spend less time fighting for control and more time shipping solutions, right? Right.&lt;/p&gt;
&lt;p&gt;The other big point of this analogy was to point out how critical the whole team, and a wider team, actually play a part. If it wasn&amp;rsquo;t for the PM, PO, BA, Strategy Manager, Customer Support crew, not to mention Guild leaders, Evangelists, External trainers, CTO, Sales, Finance, Payroll&amp;hellip;  you wouldn&amp;rsquo;t still be here.&lt;/p&gt;
&lt;p&gt;It takes more than just a Rockstar to deliver software. You need a team of team players that work well together, practice their handoffs with each other, practice their craft together and put on a good show as a team, not a single spotlight with everyone else hiding in the shadows. No one wants to listen to that mess.&lt;/p&gt;
&lt;h2 id=&#34;--&#34;&gt;&amp;ndash;&lt;/h2&gt;
&lt;p&gt;And if you really want to be a Rockstar developer, I leave you with this this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/RockstarLang/rockstar&#34;&gt;https://github.com/RockstarLang/rockstar&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Looking forward to dotnet in 2019</title>
      <link>https://blog.csmac.nz/post/looking-forward-to-dotnet-in-2019/</link>
      <pubDate>Thu, 17 Jan 2019 20:40:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/looking-forward-to-dotnet-in-2019/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s a new year, and we already have a bunch of dotnet releases to look forward to, thanks to the open development processes that Microsoft is using these days with dotnet.&lt;/p&gt;
&lt;p&gt;The three big releases I am looking forward to are C# 8 and .Net Core 3.0, and a NetStandard2.1. (Not to mention there is a .Net Framework 4.8 as well. But I&amp;rsquo;ve moved on.)&lt;/p&gt;
&lt;h2 id=&#34;c-8&#34;&gt;C# 8&lt;/h2&gt;
&lt;p&gt;It feels like we&amp;rsquo;ve been talking about C# 8 for a while, with 7.1, 7.2 and 7.3 releases building towards it. (It was 2 years ago when they were talking about what&amp;rsquo;s new in C# 7.0!). We&amp;rsquo;ve had demos at Build, NDC and online of what is coming, with &lt;a href=&#34;https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/&#34;&gt;Preview releases&lt;/a&gt; dropping towards the end of last year. We should expect to see VS 2019 Released this Quarter (one hopes) and can get a better look at C# 8 in its final form at that point.&lt;/p&gt;
&lt;p&gt;What we do know is there are a bunch of cool features coming:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nullable reference types&lt;/li&gt;
&lt;li&gt;Async streams&lt;/li&gt;
&lt;li&gt;Ranges and indices&lt;/li&gt;
&lt;li&gt;Default implementations of interface members&lt;/li&gt;
&lt;li&gt;Recursive patterns&lt;/li&gt;
&lt;li&gt;Switch expressions&lt;/li&gt;
&lt;li&gt;Target-typed new-expressions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More detailed notes and examples of what these are and how they look was published on the .Net Blog article &lt;a href=&#34;https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/&#34;&gt;Building C# 8.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am seriously looking forward to the Nullable reference types (I have a few libraries to get updated to support it still), Switch expressions and recursive patterns, and also finding out where the other features start to find their use for me.&lt;/p&gt;
&lt;h2 id=&#34;net-core-30&#34;&gt;.Net Core 3.0&lt;/h2&gt;
&lt;p&gt;Once again, we have a proper Major release. This one is as important as the .Net Core 2.0 milestone was, but hopefully, the jump is much more stable. This is an umbrella for new dotnet CLI tool updates, MSBuild updates, a new 3.0 runtime, and support for all in Visual Studio as well.&lt;/p&gt;
&lt;p&gt;The big headline is Windows Desktop Coming to .NET Core. Yes, this is OS-specific and not cross-platform, but is a huge step in getting those GUI apps transferred over to the dotnet CLI and the .Net Core runtime. As part of this, they even OpenSourced all the GUI frameworks WPF, WinForms and WinUI.&lt;/p&gt;
&lt;p&gt;Things to look out for when moving to .Net Core 3.0:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desktop Applications support&lt;/li&gt;
&lt;li&gt;Applications now have executables by default&lt;/li&gt;
&lt;li&gt;dotnet build now copies dependencies&lt;/li&gt;
&lt;li&gt;Local dotnet tools&lt;/li&gt;
&lt;li&gt;ARM64 and updated platform support&lt;/li&gt;
&lt;li&gt;Many language and runtime improvements
&lt;ul&gt;
&lt;li&gt;fast in-box JSON Reader&lt;/li&gt;
&lt;li&gt;C# 8 language features support&lt;/li&gt;
&lt;li&gt;System.Buffers.SequenceReader&lt;/li&gt;
&lt;li&gt;IoT improvements&lt;/li&gt;
&lt;li&gt;TLS improvements on linux&lt;/li&gt;
&lt;li&gt;Cryptography improvements&lt;/li&gt;
&lt;li&gt;More BCL Improvements using optimized Span&lt;T&gt;, Memory&lt;T&gt;&lt;/li&gt;
&lt;li&gt;Default implementations of interface members&lt;/li&gt;
&lt;li&gt;Tiered Compilation on by default&lt;/li&gt;
&lt;li&gt;Assembly Metadata Reading with MetadataLoadContext&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To see more of the changes in detail, especially the language and runtime improvements, you can read up more yourself &lt;a href=&#34;https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-net-core-3-preview-1-and-open-sourcing-windows-desktop-frameworks/&#34;&gt;in the Announcement from December&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;netstandard21&#34;&gt;.NetStandard2.1&lt;/h2&gt;
&lt;p&gt;The release of .Net Core 2.1 and 2.2 went by without needing to update the baseline of compatibility. The NetStandard2.0 target has stood up well as a baseline common denominator after the false start .NetStandard1.x gave some of us.&lt;/p&gt;
&lt;p&gt;Late last year Microsoft &lt;a href=&#34;https://blogs.msdn.microsoft.com/dotnet/2018/11/05/announcing-net-standard-2-1/&#34;&gt;Announced .NET Standard 2.1&lt;/a&gt;, which is a new required standard that will be first implemented in .dotnet 3.0 and .Net Framework 4.8 is a foundation to allow using some of the new language features that need Runtime support, such as Async streams, indexers and ranges.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As mentioned, you can start playing with some of this stuff today in the &lt;a href=&#34;https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/&#34;&gt;Preview of Visual Studio 2019&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Plenty of new stuff to learn over the coming year and I can&amp;rsquo;t wait for Release day so I can update everything I have.  First stop will be Nullable reference types.&lt;/p&gt;
&lt;p&gt;What are you looking forward to using the most?&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>A Little Town called Milton</title>
      <link>https://blog.csmac.nz/post/a-little-town-called-milton/</link>
      <pubDate>Mon, 23 Jul 2018 06:00:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/a-little-town-called-milton/</guid>
      <description>&lt;p&gt;There is a small town in the South Island of New Zealand called Milton. The main road runs right through the town in one side and out the other. Its a nice enough place to stop on a road trip.&lt;/p&gt;
&lt;p&gt;There is a unique feature to this main road in Miton, you see. When you get to the middle of the town and the road has a massive kink in it.  Why is this here?&lt;/p&gt;
&lt;p&gt;One story goes that two surveyors were building the road, one from the south and one from the north. A nice straight road.  The problem is that when they go their straight road to the town they realised that it didn&amp;rsquo;t line up. So they had to use the kink to connect it up.&lt;/p&gt;
&lt;p&gt;Another story tells of a tree that didn&amp;rsquo;t want to be removed, so when they realised it was in the way of the road it was too late. The road had to go around it.&lt;/p&gt;
&lt;p&gt;No matter which version of the story you believe, there are two very interesting and important lessons to learn here.&lt;/p&gt;
&lt;p&gt;When you are working together on a project, and there is a point where you meet and connect, it is important to define exactly how this connection is defined and then build from that agreed contract.&lt;/p&gt;
&lt;p&gt;Say you are building an API service that another team will consume. Building out the contract of that API together will help avoid any kinks later. Software refactoring might be easier than re-laying an entire stretch of Highway, but it still costs you.&lt;/p&gt;
&lt;p&gt;The other lesson is this: do some research ahead of time and understand your constraints. If you know what obsticles are in your way, you can produce a cleaner result to avoid them, rather then producing nasty work-arounds once you have already built a bunch stuff that is going to be too much effort to destroy and start over.&lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;
&lt;p&gt;CC Image courtesy of &lt;a href=&#34;https://www.flickr.com/photos/johnbullas/2663355586&#34;&gt;johnbullas on Flickr&lt;/a&gt;&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>AWS Summit London 2018</title>
      <link>https://blog.csmac.nz/post/aws-summit-london-2018/</link>
      <pubDate>Sun, 20 May 2018 07:00:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/aws-summit-london-2018/</guid>
      <description>&lt;p&gt;I recently attended the AWS Summit in London and thought I would give some notes on the event from my perspective.&lt;/p&gt;
&lt;p&gt;As a developer working for a company that uses AWS, there was plenty to get out of an event such as this, and the free attendance makes a great business case to get the time to go.&lt;/p&gt;
&lt;p&gt;I really enjoyed the schedule of talks that I attended, and the keynote was a good overview of the state of things as AWS, with some exciting insight into partners in Automotive, and Healthcare.&lt;/p&gt;
&lt;p&gt;I went on, what one attendee tweeted, the &lt;a href=&#34;https://twitter.com/unixdaemon/status/994575955728502784&#34;&gt;@abbyfuller Track&lt;/a&gt;.  As someone who has got to grips with Docker locally, and keen to leverage what AWS can offer in terms of clusters and cluster management, This was both a catchup refresher and heads-up of whats new as well (Fargate). If it wasn&amp;rsquo;t for a more immediate need of ECS, I probably would have followed the Machine Learning track instead, there was a tonne of new stuff there, including on SageMaker.&lt;/p&gt;
&lt;p&gt;I attended:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Container Scheduling - Abby Fuller &lt;a href=&#34;https://twitter.com/abbyfuller&#34;&gt;@abbyfuller&lt;/a&gt; (AWS)&lt;/li&gt;
&lt;li&gt;Builders&amp;rsquo; Lab: Docker to Amazon ECS -  Ric Harvey &lt;a href=&#34;https://twitter.com/ric__harvey&#34;&gt;@ric__harvey&lt;/a&gt; (AWS)&lt;/li&gt;
&lt;li&gt;Building Highly Scalable Retail Order Management Systems with Serverless - Bastien Leblanc &lt;a href=&#34;https://twitter.com/bastleblanc&#34;&gt;@bastleblanc&lt;/a&gt; (AWS) &amp;amp; David Edwards (River Island)&lt;/li&gt;
&lt;li&gt;Deep Dive into AWS Fargate - Abby Fuller &lt;a href=&#34;https://twitter.com/abbyfuller&#34;&gt;@abbyfuller&lt;/a&gt; (AWS)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Honourable mention goes to the Cost Optimisation as a By-Product of Awesome Practice &amp;amp; Agility at Trainline (David Stanley -Trainline, Giorgio Bonfiglio - AWS, Richard Westby-Nunn - AWS) presentation, which I heard was really good.&lt;/p&gt;
&lt;p&gt;The presentation from David Edwards was a great overview of a 6-month enterprise-level project transforming their legacy internal sales fulfilment pipeline into a modern, asynchronous, event processing system, making use of Kinesis, Lambda and step functions. This new system allows future innovations to hook into different process events to perform new and interesting business use cases going forward.&lt;/p&gt;
&lt;p&gt;The stalls were an interesting mix. I guess working for a Software-as-a-service Company, we already have a great grasp of outsourcing to other SAAS products for managing aspects of our Ops Data hosting, from source control to logging, instrumentation monitoring security and metrics.  Since we already have products or solutions in place, and I am reasonably far removed from the choices, understanding, and interest in these tools, the stalls didn&amp;rsquo;t really have anything specific to offer me. However, you could always find an icecream, tee-shirt or six, and stickers in abundance if you take a look.&lt;/p&gt;
&lt;p&gt;Two other aspects of the day I didn&amp;rsquo;t take advantage of, but would consider in advance of going again, was the Exam Centre, and the Ask an Architect.&lt;/p&gt;
&lt;p&gt;It is a great way to focus on getting certified to book in to sit different AWS Exams at the Summit. You give yourself a deadline to get ready for it and are sitting in an environment with other people also getting their certifications.&lt;/p&gt;
&lt;p&gt;I think if I was at a certain stage in a project, or planning approaches for the next project, then the Ask an Architect would be a great opportunity to get expert advice on a specific problem, and a deeper understanding of which tools and technologies in the AWS Stack to apply to it.&lt;/p&gt;
&lt;p&gt;Would I attend again?  Yes, but only if one of the following was true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There is a development track which directly correlated to a project currently worked on, or soon to be worked on (ML/SageMaker content for instance)&lt;/li&gt;
&lt;li&gt;I am wanting some focus to sit examinations&lt;/li&gt;
&lt;li&gt;I was working for a company or in a role that needed to make contact with SaaS product vendors to evaluate new solutions to make use of.&lt;/li&gt;
&lt;li&gt;I had an interesting architectural problem in need of some good outside Architecture input without springing for an expensive consultant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recording of the keynote is up on Youtube - &lt;a href=&#34;https://www.youtube.com/watch?v=XXbF6cUIgfs&#34;&gt;https://www.youtube.com/watch?v=XXbF6cUIgfs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hopefully, other recordings from the summit will follow.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>You can&#39;t out-exercise a bad diet</title>
      <link>https://blog.csmac.nz/post/you-cant-out-exercise-a-bad-diet/</link>
      <pubDate>Thu, 10 May 2018 20:41:55 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/you-cant-out-exercise-a-bad-diet/</guid>
      <description>&lt;p&gt;I heard a great quote yesterday:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can&amp;rsquo;t out-exercise a bad diet&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And this is a great metaphor for technical debt.&lt;/p&gt;
&lt;p&gt;We all agree that you need to pay down your tech debt in your software. And it&amp;rsquo;s great to commit to addressing a little technical debt during each sprint. The problem is that this is the exercise.  And if you still have a bad diet of cutting corners and taking shortcuts, your stuck with an overweight system (a monolith, if you like).&lt;/p&gt;
&lt;p&gt;If you want to get serious about the technical debt, you need to start by fixing your bad diet of shortcuts and start by doing things right while doing the right thing.  Only then can you really start paying down existing technical debt as well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Developers are not lazy, they&#39;re efficient</title>
      <link>https://blog.csmac.nz/post/developers-are-not-lazy-theyre-efficient/</link>
      <pubDate>Mon, 09 Apr 2018 08:00:00 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/developers-are-not-lazy-theyre-efficient/</guid>
      <description>&lt;p&gt;Well, mostly.&lt;/p&gt;
&lt;p&gt;I hear the excuse a lot from developers, &amp;ldquo;Oh, because I am lazy&amp;rdquo;.  This seems to be some sort of way of justifying the way we do some of our development, automation scripts, bash power-user commands like &lt;code&gt;grep&lt;/code&gt; and &lt;code&gt;awk&lt;/code&gt;, even writing a program to solve something we could do ourselves manually. Unfortunately, even copy+paste development.  We don&amp;rsquo;t do ourselves any favours using the term lazy though, since not all words can have their meanings reversed, unlike &lt;code&gt;literally&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve spent some time trying to analyse this, and determine what we are actually trying to convey, and how accurate we actually are by making such a statement about ourselves, or the work we are completing.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve come to the conclusion that most of the time we actually mean we are trying to be efficient.  Why spend a bunch of time repeating a task manually, when we can get the computer to do it for us. While the computer is running the task for us, it frees up some real time to stop and think, analyse upcoming problems, or automate/script up the next task to be run.&lt;/p&gt;
&lt;p&gt;First, a simple task of moving files.  I will use the example of photos in folders that we want to collate correctly. Now, we know that our photos have a taken date, and that is what we want to use for sorting.  We could manually create a folder for the first year, a folder for the first month (or &lt;code&gt;01&lt;/code&gt; really) and then go through the photos one at a time, and when the photo matches that year and month, move it (or copy, whatever) to our new folder.  And any reasonable person would spend the next few months doing this, or not bother.  But we are programmers. We can write a bash shell command, script file, or program to complete this task for us.&lt;/p&gt;
&lt;p&gt;Here comes the efficiency bit: If there are 100 photos, A GUI Power User can probably reorganise these photos manually and get it done faster than most programmers could write, test, and debug a program, and probably faster than the average shell user could script and test a solution. But here is the thing: If we want/have to do this once a week, or once a month ongoing, by taking longer to write the script the first time, you save countless time going forward. This is not lazy, especially if writing the script takes longer, and is more work the first time.  The other case is that we have thousands of photos (100s of thousands, even), and by automating this we will easily get it done faster than if we did it manually, and probably more accurately too. Efficient.&lt;/p&gt;
&lt;p&gt;A similar argument can be made for creating formulas in an Excel spreadsheet, a mail merge in Word, or a workflow in IFTTT.&lt;/p&gt;
&lt;p&gt;This highlights another point. Most of the time we hear someone declare themselves lazy, they actually spend more time on the problem.  Writing a code solution will usually take longer than the manual approach. At least in the short term. I wouldn&amp;rsquo;t use the term lazy to explain someone who rather than drive and get stuck in traffic decides to take a push bike instead. Efficient, looking ahead at the real payoff.&lt;/p&gt;
&lt;p&gt;I mentioned Copy Paste. That is lazy. Let me explain&amp;hellip; No, there is too much. Let me sum up.&lt;/p&gt;
&lt;p&gt;There is a false economy to copy and paste. You might get a quick-win solution running by copying some existing code, then tweaking it a little bit.  If you are doing TDD (Red, Green, Refactor) you are encouraged to take this shortcut to get to Green. But if you have to copy and paste multiple lines to code every time you need to add something, you are doing it wrong. Firstly, you have more chance of making a mistake every time you copy. You end up with a maintenance headache have to update all the copies as well.&lt;/p&gt;
&lt;p&gt;The correct solution, if you have created one copy, and can see that it will be copied again, is to extract out one or more methods to perform the task that you can call multiple times instead. (&amp;ldquo;compression-oriented programming&amp;rdquo; or &amp;ldquo;semantic compression&amp;rdquo; - &lt;a href=&#34;https://caseymuratori.com/blog_0015&#34;&gt;see related&lt;/a&gt;).  Duplicate code is ripe for refactoring. (TDD step 3, Refactor!)&lt;/p&gt;
&lt;p&gt;We should stop calling ourselves and others in our profession lazy. We are efficient, we automate, we are programmers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Microsoft &amp; Google, Android Wear support is missing</title>
      <link>https://blog.csmac.nz/post/microsoft-google-android-wear-support-is-missing/</link>
      <pubDate>Thu, 19 Jan 2017 23:50:24 +0000</pubDate>
      
      <guid>https://blog.csmac.nz/post/microsoft-google-android-wear-support-is-missing/</guid>
      <description>&lt;p&gt;Ok, so I know I am in the minority as a Windows Phone user, but sometimes I just get frustrated and I wish Microsoft at least tried to achieve parity with their platforms, and not leave it to others who just won&amp;rsquo;t bother.&lt;/p&gt;
&lt;p&gt;I have a really nice &lt;a href=&#34;https://www.microsoftstore.com/store/msuk/en_GB/pdp/Acer-Liquid-Jade-Primo--Unlocked/productID.5064103000&#34;&gt;Acer Liquid Jade Primo&lt;/a&gt; Windows 10 mobile phone. Continuum, Hexa Core Processor, 3GB memory, nice 5.5&amp;quot; screen, great camera.&lt;/p&gt;
&lt;p&gt;Yesterday I went shopping and saw the really nice Fossil Q watches. (Further disclaimer: I already own a really nice Fossil Mechanical watch, and a Microsoft Band 2) They were really nice, but I had to walk away. Why? Because they run Android Wear.&lt;/p&gt;
&lt;p&gt;Now, technically, there is no limitation that says &amp;ldquo;because it is Android, it will not work with Windows&amp;rdquo;. It has even been &lt;a href=&#34;https://mspoweruser.com/developer-working-making-android-wear-work-windows-10-mobile/&#34;&gt;proven possible&lt;/a&gt; by an independent developer talking to the Bluetooth APIs, and Windows has some really nice API hooks already to allow smart devices to hook into many parts of messaging and notifications. It&amp;rsquo;s just that Google has no inclination to write a Windows Phone 8 or Windows 10 UWP app that supports it. They wrote an iPhone app, though. Because otherwise how will their hardware and software compete with the Apple Watch?&lt;/p&gt;
&lt;p&gt;What makes me frustrated isn&amp;rsquo;t that Google isn&amp;rsquo;t supporting Microsoft&amp;rsquo;s business plan, and the progress of their competitor to Android, It is actually that Microsoft doesn&amp;rsquo;t seem to be doing anything to provide these missing applications themselves. If you are willing to write apps for Android Wear, then why not allow those apps the chance to work with a Windows Phone?&lt;/p&gt;
&lt;p&gt;Microsoft Research, I would love to see you release something awesome in the Android-Wear client app space.&lt;/p&gt;
&lt;p&gt;Just one more stone on the scales tipping them in the wrong direction that might one day force me to buy an Android.&lt;/p&gt;
&lt;p&gt;/rant&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>