Saturday, 20 August 2016

DDD Melbourne 2016

Sign for Monash UniversityLast weekend I was privileged to be able to attend my second DDD Melbourne conference. I flew over Friday afternoon and had an uneventful transit from Melbourne airport to the motel, via the Skybus and a train connection. I stayed locally near Monash University’s Caufield campus, the venue for this year’s event.


Welcome and intro to DDD Melbourne

Around 350 people were there. Monash was a great venue, with all lecture theatres having excellent AV facilities, so no problems watching presentations or hearing speakers. It was also really nice to catch up with a few familiar faces.


Paul Fenwick with slide of 1970's sci fi robotsThe day started with a thought-provoking keynote from Paul Fenwick, making us stop and think about what kind of future we’re creating. That slide with the strange robots – I had that book as a child! Smile
Morning tea break

After that I caught the following sessions:

  • Thinking in React with Mohammad Helmy
  • Deploying Straight to Production: A Guide to the Holy Grail with Damian Brady
  • The Actor/Model pattern in .NET: Akka.Net vs Orleans for the curious with William Tulloch
  • Better APIs with GraphQL with Josh Price

Lunch break

After lunch I also got to present 10 tools and libraries to enhance .NET Unit Testing.

Audience before closing presentationThe final talk for the day was from Shawn Wildermuth. An inspiring and personal look into the life of a developer, and a great way to end the day.

Shawn talking about active listeningOne key point Shawn made was how critical it is if you want to be a good developer, is to really work in your listening skills – not just “hearing” but actual ‘active listening’, because as it turns out, good communication skills are more important that good technical skills.

 


And with that DDD Melbourne was over for another year. Off to the airport for the flight back home late Saturday night to be back at home with family and my own bed.

Tuesday, 9 August 2016

NDC Sydney 2016 Reflections

Now that I’m home again, it’s a good opportunity to think back over the last week. What were the highlights, lowlights of attending the first NDC conference held in the southern hemisphere?

Overall

WOW!. I had a great time, learned a lot, really enjoyed the sessions as well as meeting and chatting to lots of other developers. I’ll say it again.. WOW Smile

Depth of speakers

Scott Hanselman's opening keynoteThere were a lot of “big name” international speakers. I was going to name some, but that’s not really fair. Go have a look at the list.

That is definitely a plus. You don’t get many opportunities to see these people in Australia, let alone all in the one place. And not to mention the quality local talent.

A nice variety of presentations, and a chance to talk to all these people (and in my case asking “would you be interested in doing a Skype talk to our user group in Adelaide?”, to which the answer was almost always “yeah, sure I’d love to do that”.

The other nice thing is that even though you might regard some of them as having “celebrity” status in the software development (or even just the Microsoft software development) realm, the reality is that I didn’t find anyone who was so caught up in their own ‘fame’. They’re just regular people – they only have walk outside the conference to get a reality check if there was any doubt. No one walking past would have any clue who they were Smile

Venue

Sydney Hilton was excellent. Great rooms, helpful staff, yummy food. Full marks.

Weather

Rain on the windowIt was wet. I guess that’s the risk of holding a conference in early August – you’re going to catch a bit of Wintery weather sometimes. Not an issue for the conference itself, but maybe a little disappointing for foreign speakers who were hoping to do a bit of sight seeing during their visit.


Common trends and themes

There wasn’t a specific theme for the conference, but I did notice some topics that came up a few times in the presentations. In particular some that stood out to me were:

  • Micro services
  • F# and functional programming
  • Don’t get hung up on chasing new stuff all the time

Volunteer crew

Volunteers at the registration deskIt is quite an easy job –

  • Get rostered to look after a particular breakout room for half day blocks.
  • Pass around a cordless microphone for attendees to ask questions (so questions get picked up in the session recordings)
  • Count all the eval votes after each session and give the totals to Information Desk.

For doing this you get to attend the conference and participate in all the activities for free (and get a couple of bright green ‘CREW’ t-shirts).

Voting slipsThere weren’t enough volunteers (a few apparently failed to turn up), which meant extra shifts for the rest of us. Hopefully next time there are enough so that everyone gets a fair share of shifts and free sessions.


Session recordings

In the next few weeks, expect to see all of the sessions uploaded to Vimeo at https://vimeo.com/ndcconferences

Next year

The dates have already been announced - 14-18th August, 2017. Mark your diary, talk to your boss, manager, colleagues, social secretary and/or spouse. This is THE developer event in Australia.

I hope to be there again next year, and I hope you will be too!

Saturday, 6 August 2016

NDC Sydney–Day 3

Friday, the final day of NDC Sydney. I was rostered in Room 2 all day, so got to see these speakers/presentations:

And then a late flight home to Adelaide Friday night.

Thursday, 4 August 2016

NDC Sydney–Day 2

Thursday sees me spending rostered the entire day in room 1. This was actually my preference, as the majority of the talks were already on my wish list. One slightly ‘down’ side of doing room 1 is that the bigger crowds mean counting much larger numbers of eval votes after each session.

The evening finished off with a hilarious talk from Assoc. Prof. James Mickens, followed by a social evening of food and drinks in the hotel bar – a good chance to meet and chat with other attendees.

One more day to go!

NDC Sydney–Day 1

The first full day started with Scott Hanselman’s keynote, then straight into sessions. I was rostered to look after room in the morning, with the afternoon free to attend other sessions.

Here’s my photo tweet stream from the day:

I had a quiet night back in the hotel room, though many attendees went on a harbour cruise. It had been quite wet and rainy, so I didn’t mind missing out on that.

Wednesday, 3 August 2016

NDC Sydney–Day 0

Cloud view of Sydney HarbourIt’s Tuesday, so off to NDC Sydney conference. I must say 11am is a very sensible time to fly from Adelaide to Sydney. Makes a nice change from 6am flights!


George St looking towards Hilton HotelI’m attending NDC as a volunteer crew member, but it turns out the organisers were extra-pleased to see me, as they’d forgotten that I was coming, and were actually short of helpers. Phew, glad that worked out well.

NDC is being held at the Sydney Hilton. I’ve actually been here many years ago attending a SharePoint conference. I wasn’t originally going to stay here on-site, but my employer (RL Solutions) encouraged me to do so and I’m really glad I did. It is super convenient to just be able to “pop upstairs” to my room.
Code Club registration badgeI started right away, helping out with the registration desk for the NDC Sydney Code Club, an evening of workshops for kids aged 7-16. It was great to see some of the conference speakers had brought their families over to Australia and so their kids got a chance to participate, as well as a bunch of Sydney school kids.
As a bonus, they had Scott Hanselman as their keynote speaker. I’m pleased to report the kids enjoyed Scott just as much as the adults will at the rest of the conference. Scott was entertaining and informative. I could hear lots of laughter coming from the room. After Scott’s welcome keynote, there were a number of workshops the kids participated in, including IoT, Minecraft and other fun stuff.

Here’s photo of Scott enjoying the perks of working for Microsoft (well I think that’s what he said!) from his welcome talk to the kids:

 Not really Scott Hanselman

Monday, 1 August 2016

Error AD0001: Compiler Analyzer … threw an exception of type 'System.InvalidOperationException' with message 'Feature 'IOperation' is disabled.'

If you upgrade to the latest beta release of one of the Roslyn compiler analyzer packages, you might notice they fail with an error like this:
Compiler Analyzer 'Microsoft.ApiDesignGuidelines.Analyzers.UsePropertiesWhereAppropriateAnalyzer' threw an exception of type 'System.InvalidOperationException' with message 'Feature 'IOperation' is disabled.'.
The solution wasn’t immediately obvious to me, but I eventually tracked down this comment on a Github issue. According to the comment, the analyzers are using an API that needs to be enabled through configuration. To do this, you need open up the .csproj file and add a new property as a child of the first PropertyGroup element like this:

<PropertyGroup>  
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>  
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>  
  <Features>IOperation</Features> 

Or if you have lots of projects, run this PowerShell script to update them all:

Get-ChildItem *.csproj -Recurse | ForEach-Object {   
    $content = [xml] (Get-Content $_) 
    $xmlNameSpace = new-object System.Xml.XmlNamespaceManager($content.NameTable)   
    $xmlNameSpace.AddNamespace("p", "http://schemas.microsoft.com/developer/msbuild/2003")
    if (-not $content.Project.PropertyGroup[0].Features) {    
        Write-Host "Features missing in $_"
        $featureElt = $content.CreateElement("Features", "http://schemas.microsoft.com/developer/msbuild/2003")    
        $featureElt.set_InnerText("IOperation")

        $content.Project.PropertyGroup[0].AppendChild($featureElt)
    }  
    $content.Save($_)

    # Normalise line endings    
    (Get-Content $_ -Encoding UTF8) | Set-Content $_ -Encoding UTF8
}

Saturday, 30 July 2016

What HockeyApp told me about my Visual Studio extension

Last time I wrote about how I managed to incorporate HockeyApp into a new Visual Studio extension I’ve created. Well I published the updated extension a couple of days ago and HockeyApp is already paying dividends.

Here’s the info from HockeyApp at the time of writing:

Build Number

Downloads

Crashes

Last Updated

1.1.0.0

0

119

29 Jul 2016, 10:15

1.0.0.0

0

8

26 Jul 2016, 21:54

HockeyApp can provide a way to deploy applications, but that isn’t relevant to Visual Studio extensions, which is why the ‘Downloads’ column is zero. So you can see there’s a bunch of crashes (aka exceptions) that my extension is experiencing. Now I’m pretty sure that these wouldn’t be really crashing Visual Studio, but they would be affecting how well the extension works.

There’s now a number of issues created in the Github repo for me to review:

A bit of work for me to do now Smile Hopefully not too much - I suspect a few of can all be handled in a similar way. Interesting too to see all the different ways your own code can interact with other parts of both Visual Studio and other extensions!

Actually after a bit of investigation, I have a theory that most of these exceptions are nothing to do with me. When I configured HockeyApp, I used the RegisterDefaultUnobservedTaskExceptionHandler(). I suspect this was causing HockeyApp to capture any unobserved Task exception that happened in Visual Studio – not just relating to my extension. I guess if there was a way to get HockeyApp to include only those exceptions based on the extension's namespace that would be more useful.