Tag Archives: Microsoft Developer Day

DDD 2018 at Microsoft Reading

After a busy July, finally I’ve got a quiet moment to catch up with my notes from the recent Develop Developer Developer event held at Microsoft HQ in Reading.

I attended a real mix of sessions this year. First up was a real mind bending session led by Francess Tibble and Anita Ramanan, two software engineers at Microsoft talking about Quantum Computing and the Q# language. The session was split into two parts, the first a bit of a crash course in the physics involved in Quantum Computing, with quite a bit of maths too. The interesting take away is that present day quantum computers are expensive and unstable as they are particularly sensitive to external factors so can lose state in seconds. As a result we currently have the Quantum Development Kit that simulates how a real quantum computer should behave.

The key difference with a quantum computer is in the bit, in classical computing the bit is ether 0 or 1, but in quantum computing the bit can also be any point in between, taking the usual light bulb analogy for a classic bit, it’s like having a dimmer attached. I really haven’t got the space to cover all their content in detail, but they did do a version of the same talk a few days before DDD which is online on YouTube.

Moving on I then attended Joseph Woodward talking about Web Assembly, Blazor and the Future of Web Development.

Joseph started with a run through of the history of web development, and the perennial problem that whilst there has been a relentless move towards providing applications in a web browser, the tools to create rich applications in a web browser are really pretty limited. JavaScript, the main language of the web has become that largely by historical accident, and is pretty slow. Web Assembly is the latest of a number of attempts to replace JavaScript as the language of the web, in this case providing what is effectively a low-level byte code for the web and then compiling other languages into this byte code. At this stage it’s still very much a minimum viable product, but does seem to show some promise with multiple languages being able to compile into Web Assembly byte code.

For C# and other .Net support, since they also compile into the intermediate language of the .Net platform, Microsoft offers Blazor, which is a full .Net machine written in Web Assembly byte code. This of course does mean that .Net intermediate language is then being interpreted into Web Assembly byte code, so there are plans to compile to avoid this double layer of interpretation.

The actual coding is familiar to any C# programmers with familiar dependency injection, and the ability to pull in code using Nuget. Interop with JavaScript is provided, and is necessary because Web Assembly does not provide access to the DOM.

It was clear from the talk that the platform is still immature, it lacks performance and has no threading or garbage collection. However it does show promise. Even if it doesn’t provide a replacement for JavaScript, it does allow us to mix and match languages picking the language that is best suited for a particular task.

Next was what for many people was one of the big draws for this years DDD, the return of Barry Dorrans, now .NET Security Curmudgeon at Microsoft, but who before joining Microsoft and moving across the pond had been a regular speaker on security at developer events. Barry was presenting his Code Behind the Vulnerability session, variations of which he has presented for a number of years at conferences around the world. The great advantage of presenting it here however is that it allowed developers who don’t work for companies with the budgets to send their developers to paid for conferences to see this important session. Indeed Robert Hogg CEO of Black Marble who organise the DDD event at Microsoft considered the subject matter so important that he said to any of his developers in the room that they’d be fired if they did anything that Barry had spoken about!

The purpose behind the Code Behind the Vulnerability session is basically to go through security issues that Microsoft have found in their code, and the cause so other developers don’t make the same mistakes. Barry updates this session periodically as new exploits and problems come to light, so it is well worth keeping an eye out online for new versions.

Barry covered eight different security advisories, including hash tables that could bring a system down if they received specific user data – the tip here being not to use user supplied data as keys for a hash table, exposed endpoints that allowed users to work out encrypted messages, and a number of occasions where people had turned off or misused features making security holes, for example turning off signing on view state allowing attackers to create .NET objects, or simply writing a GET API call that changes state.

Barry’s summary slide is the basics, but the whole slide deck is worth a read. His summary is:
– Sign your data, even when it is encrypted
– Don’t use regular expressions
– Don’t use BinaryFormatter
– Don’t overbind in MVC
– Use the right HTTP verb
– Validate your inputs

Barry’s session is a critical one for anybody doing .NET development, many of the issues he shows are easy to make, but can have catastrophic consequences.

The next session I attended was rather lighter, but was also one that has been presented at a major conference but Dylan Beattie was bringing to DDD. You can view the keynote version of Apps, Algorithms and Abstractions: Decoding our Digital World on YouTube and it is broadly similar.

Dylan starts off with talking about how news of his birth and a first picture made it from where he was born in Africa, back to his grandparents back in Oxfordshire – a process that took weeks. He then looks at technology today where we can get a photo appear on a phone in your pocket and respond immediately. In the space of his lifetime the way we communicate has fundamentally changed. His session goes through the basic technology that underpins these changes, and is absolutely fascinating.

This was probably my favourite session of the day as it covers so many different areas of technology. It was also presented in an easy to digest way, and in a way that I’ve been able to show it to my children and they can start to understand all sorts of technological ideas.

My final session was one of those I picked more because I enjoyed the speaker – Gary Short talking about AI Dev-ops. Gary started looking at how the principles that have brought about dev-ops can be applied to AI and machine learning work, for much the same reasons. There has always been a big disconnect between data scientists and coders. Data scientists have a very niche skillset, so in the past they would do the specialist work, and then hand their carefully designed models to developer to implement. However tools are now being produced that allow data scientists to develop an implement their models, and coders to just connect to these rather than implement them.

Gary also had some useful tips, he highlighted that you can only optimise algorithms for false positives, or false negatives, not both, so it is a business decision as to which costs more, false positives or false negatives. This is a useful tip with regards to our products at FISCAL as we have a continual tension between reducing the number of false positives we produce, whilst not missing results, i.e. a false negative.

In summary DDD 2018 was a good day, and well worth spending a Saturday. For many developers there isn’t the budget to go to paid conferences regularly, so it is particularly good to be able to see sessions from those conferences presented live at a free community conference. Particularly for sessions like Barry’s important information about how to code securely is something all developers should be hearing, not just the ones who work for a company with a good training and conference budget!

A Busy Saturday

Yesterday was somewhat of a busy day – not only was it the fifth of the successful series of Developer Days at Microsoft, but we’d also got tickets for the equally successful Watercress Belle, the fine dining train that the Watercress Line preserved railway run on a number of Saturday evenings during the year.

The day didn’t have an overly great start. For some reason, I did something I never usually do, and despite driving a familiar route ended up heading onto the A329(M) going in the wrong direction! Not too much of a problem as I could just drive down to the next junction, go round the roundabout and back, but still a bit of a pain. Thankfully I’d left in good time, so still managed to get to Thames Valley Park without too much of a problem.

Looking through the list of sessions in advance, whereas at previous events when I’d had several sessions, usually at the same time that I really wanted to go to, this time around there were a number of spots where there was nothing I was massively enthusiastic about needing to go along to, as a result, my choices tended to have slightly different criteria. My first session choice was a good example. Whilst I was quite interested to learn about Mock Objects, Colin, the chap doing the presentation sat opposite us at the geek dinner following a previous Developer Day, and I thought I’d go along to support him too.

Although I understand that Colin had done his presentation previously, he’d been allocated one of the larger rooms, and with a full house he seemed understandably nervous. In the early stages of the presentation he did seem to flit about a bit in relation to his slides, and it took a while to answer the question I had, which was why I should consider using mock objects. Having said that, once we got to a few examples, it all started to make sense, and ultimately it was a useful and informative talk.

Moving on, I then went for something rather different, and attended the Guy Smith-Ferrier session giving tips on using Visual Studio 2005. Guy has been involved with the community for a long while, and I believe has spoken at every previous developer day. However I don’t think I’ve ever actually attended one of his sessions. Largely as expected, several of his tips were ones I knew about, however there was a goodly number of tips and tricks that told me something new. Guy’s experience was pretty apparent though, and he coped both with people in the audience correcting him, and, as is sometimes the case at these events a persistent good natured heckle from someone he knew sat down the front.

Session three was one of the points where I really didn’t know which session I was going to attend beforehand. Eventually I plumped for Alan Dean (who again we sat opposite at a previous Geek Dinner) giving a very interesting talk about Object Thinking.

The basis of the talk is a book from Microsoft Press, also called Object Thinking, the premise of which is that as software developers we have not properly understood the concepts of object orientation. Essentially what has happened is that traditional software developers have taken the concepts of of object orientation and then moulded them to be a lot closer to traditional programming than perhaps was intended. Certainly the example code that Alan showed us seemed rather radical, eschewing a lot of the perceived benefits of a language like C# – effectively reducing objects to a collection of generic fields. Refreshingly Alan was very careful not to try to “sellâ€? the concept, rather it was pitched very much from the point of view that this was a technique he found interesting and useful, and it is something that may be of benefit to us too. It has definitely made me keen to at least read the book, even if I don’t ever use the ideas.

Next up was lunch, and after my experiences previously, I managed to grab my lunch quickly, and secure a reasonable spot for the lunchtime Grok Talks. First up though, wasn’t a Grok Talk as such, but three students who had won through to the final stages of the Imagine Cup with a proposal called “My First Programming Languageâ€?. The team are being mentored by a regular attendee at the Developer Days, so in preparation for their trip to the finals of the competition, he put the three of them in front of us to get our feedback both on the ideas, and on their presentation.

In terms of the presentation, the most annoying part of the presentation was that they kept swapping presenter – it was suggested that for clarity they should have a single lead presenter in the finals. In terms of the content, it was quite interesting I think for many of us, as it was attempting to address the fact that there is a shortage of properly trained software developers. One chap next to me seemed to think that was a good thing – more jobs and better pay for the rest of us, but it does highlight an interesting change. I like many of my contemporaries learnt to program as a child, with computers like the ZX Spectrum. However over time, including a programming language with a computer has fallen out of fashion, and alongside that, computer teaching at schools, which included some element of programming as I was going through has changed focus to become ICT, which is much more about training children to use software packages rather than to actually write software.

Their tool was aimed at relatively young children, in order to try and teach them the skills that are needed to program software. Having said that while the concept seemed good I’m wondering whether, as with situations where schools prefer children to use Microsoft Word rather than an ‘educational’ word processor, the same might apply to software development. Indeed you only need watch a young child who is able to work a mobile phone much better than an adult to realise that in most cases they can understand complex tools a lot better than adults.

After lunch I attended a session by Gary Short, another SSE escapee talking about using Agile methodology in both an enterprise, and software house environment. There were certainly moments in that presentation when he was talking about difficulties in an Enterprise environment when I could tell he was very much talking about problems I encountered in SSE – and he certainly gave some food for thought for implementing the ideas in a smaller scale environment.

Last up I attended Multi-threading Patterns, a presentation by Cristian Nicola. Cristian admitted from the start that he’d had to reduce a four hour presentation down to one hour. Since in order to get to the patterns – the bit I was interested in, he had to cover a lot of the basics of multi-threading, I found it a bit disappointing, as inevitably the patterns part of the presentation was the bit that got snipped significantly.

After the end of the Developer Day, whereas usually I’d be heading home, or maybe to the geek dinner this time we were off to Alresford near Winchester with some friends to enjoy a five course dinner on the Watercress Belle. The evening consists of two steam hauled round trips on the line whilst an army of volunteers serve a delicious meal cooked on the train, definitely recreating some of the feel of a luxury dining train of old. It’s not the only special train they had running last night – last night they also had the Real Ale Train which runs the other way on the line, starting at Alton to a similar timetable – an connecting with South West Trains for the journey home. The focus of these trains is somewhat different, being very much on the drink!

As on previous trips, the food on our train was excellent, and despite the rain we got a good view of the countryside on the first round trip, and then the really atmospheric final return trip stopping at dimly lit country stations before pulling into Alresford at the end of the trip. A great evening, and one we’re sure to repeat.

Date for your Diary

Craig Murphy has given a bit of advanced warning of the next Microsoft Developer Day which is going to be held on 10th June, again at Microsoft near Reading.

If it is anything like the second event, this is going to book up really quickly, so it’s worth keeping an eye out for the formal announcement to get your place booked.

If like Dave or Sarah you’re a potential speaker you’d best get your ideas ready, as the call for speakers is due later this month.

Hopefully we’ll be able to organise another post event dinner too… Whatever is planned, it’s already in the diary!

Developer Developer Developer 2 Announced

After attending the first Microsoft Developer Day back in May, I was keeping my fingers crossed that they would do another one. The good news is that Craig Murphy has started gathering speakers for the next day on Saturday 22nd October.

So if you feel a burning desire to take a session, get in touch with Craig. On the other hand, if you don’t, mark 22nd October in your diaries, and get ready to book your place, as I’m sure places will be snapped up quickly.