.NET South East – May Event New speakers night.

It’s been a while since I last got around to blogging about a .NET South East meetup event. I wanted to make sure I did this month as the plan for this week’s event was close to my heart. I had the idea back in December / January to try and organise a night for new speakers. The motivation behind that was my own experience. I’ve blogged in detail about that but in case you don’t have a few hours spare to both parts, the TL;DR is as follows…

Through my life, I’ve always hated public speaking. The idea of giving a talk or even an introduction to a room of people filled me with a fair degree of dread. Last year I faced my fear by taking part in an ALT.NET show and tell evening. I had 20 minutes to share my experience of working on the Humanitarian Toolbox project. While terrifying beforehand, the actual experience was actually quite enjoyable. Afterwards, the rush and positive feedback was a great feeling. After that first talk, I ended up speaking at two other user group events and two conferences in 2018. While I still get nervous, I’ve found that I actually really enjoy presenting and this year I am extending the number of events I submit and speak at.

Back to the meetup; I wanted if possible to offer other members of the community a safe place for them to try out public speaking. I set aside a date and started promoting the idea to our members. My biggest concern was that no one would be interested and the idea would fail at stage one. However, after a couple of months of asking for speakers, people started to come forward. I know from experience that taking that initial step and committing is no small thing for novice speakers.

With the speakers lined up, I was feeling better about the idea. The next concern was attendee numbers. I was conscious that in order to attend the meetup it requires people to give up a free evening. As a result, people are selective on which meetups they choose to attend. Frankly, I wasn’t sure if the idea of an evening of new speakers with shorter talks would draw in attendees. That concern slipped away as I saw that our RSVP numbers on meetup.com were looking healthy. I was very pleased that members of the community were coming together to support our peers and to join us for the evening.

The Event

The evening began as normal with me introducing the meetup and then going onto present some news items. I wasn’t short of content for this event, holding it the week after MS Build! One slight hitch was that the slides I’d carefully crafted at home hadn’t synced on my OneDrive and as a result, with an hour to go I found myself rapidly recreating the content!

I won’t go into too much detail here besides sharing some links but the items we covered were…

.NET Core 3.0 roadmap announcement – The main goal of this release is to support WPF and WinForms workloads.
ASP.NET Core 2.1 RC1 released – With RTM due by end of May.
Visual Studio Live Share – Announcement of the public preview release.
Intellicode – AI assisted IntelliSense based on machine learning across 2,000 open source projects. Now available in experimental preview.
ML.NET – An open-source, cross-platform, machine learning library.
Visual Studio 15.7 released

With the news complete, we entered the main part of the evening. I’d allocated each speaker twenty minutes of presentation time, plus five minutes for questions.

First up was Dave Mateer who presented a demo-heavy talk. Presenting demos is always daunting but Dave’s went off without a hitch. Dave crammed a lot into his 20 minutes, demonstrating how he’d taken a legacy and poorly configured WordPress site and migrated it to running in the cloud on Azure AKS. Azure AKS is Microsoft’s managed Kubernetes service and by all accounts looks like a great way to get started with containers in production. Dave highlighted the salient things he’d learned along the way. Showing how data volumes can be used to persist data outside of the container for example. Dave also highlighted the power of scripting which means he can quickly spin up and when required delete his Kubernetes environments. Within his twenty minutes, Dave had taken us on a journey from running a container locally, through to a scripted deployment to production, with the site running live on Azure. It was a great talk and really interesting to learn from Dave’s experience.

Dave Mateer presents at .NET South East

Next up was Steve Collins who talked about a SOLID approach to ASP.NET Core. His focus was on configuration and what he’s learned as he began working with ASP.NET Core. Steve first explained a history of configuration in ASP.NET through the previous version. He brought us up to date by showing how ASP.NET Core out of the box provides DI friendly configuration and the options pattern for accessing your configuration values. One of the gotchas that Steve highlighted was the need to use the IOptions and IOptionsSnapshot interfaces to access strongly typed configuration in your dependent classes. This isn’t necessarily easily discoverable for newcomers to ASP.NET Core. Steve then showed how he’d built out a more intuitive pattern over the top that allows for accessing configuration via a bridge class. It was a great talk and Steve touched on some patterns I’m finding myself using on my latest projects. Steve has documented the content that formed this talk in his great four-part blog series which I recommend you go and check out.

Steve Collins presents at .NET South East

We then had a short break before our final talk of the evening. Alex McAuliffe took to the stage to talk about “Falling down holes for beginners”. In this talk, he shared his experience of working on and maintaining an open source project. Alex covered some of the positives of open source before also discussing some things to watch out for. One of the really salient points regarding running your own project was around scoping and focus. As Alex described it’s very easy to get excited about lots of areas of the code and also trying to make things “perfect” which can easily lose the focus on actually completing things. Alex also talked about an unexpected outcome of working on the project; burnout. It’s not always something you would consider when working on a personal project but is certainly something to watch out for. Alex also shared some thoughts on tools for source control and to help maintain code quality. Finally, he concluded with some resources to blogs and people to follow on Twitter. Alex’s slides are available online.

Alex McAuliffe presents at .NET South East

It was extremely impressed by all three talks. Dave, Steve and Alex had clearly put a lot of effort into preparing their slides, demos and content. Despite having a quite short time limit, each one packed a lot of great content into their allotted time. Having spoken to some of the attendees after the event I got the sense that everyone had enjoyed listening to the talks and the format of the evening in general. I want to repeat my thanks once again to the speakers for volunteering and taking part. I know that standing up in front of a crowd can be intimidating and I hope that all three enjoyed the experience overall.

Humanitarian Toolbox Codeathon .NET South East - Coding for the Greater Good

On Saturday (20th January) we held a special .NET South East event, spending the day ‘coding for the greater good’ on the Humanitarian Toolbox allReady project. We were very excited to be joined by Richard Campbell, one of the co-founders of Humanitarian Toolbox and co-host of the popular .NET Rocks Podcast. A team of 19 volunteers joined us to contribute towards the project during the day, all first time contributors to the project. For many, this was also their first time working on an open source project and GitHub.

Richard Campbell - Humanitarian Toolbox co-founder
Richard Campbell Introducing the Humanitarian Toolbox to our Team.

Planning

The possibility of running a codeathon came together quite recently and once I was able to arrange with Richard for him to join us, I kicked the planning into high gear. The first problem when trying to host an event like this is usually finding a suitable venue. In my case this was not a problem as Madgex, my employer, are very supportive of these events and were immediately open to the idea of hosting it. We have three neighbouring meeting rooms which can be opened up into one larger space. We do this for our monthly .NET South East meetups too and it creates a very reasonable working area.

We picked the date around Richard’s travel plans for NDC London. Richard and Carl were recording their shows at the event and Richard had a day spare following the conference which was ideal for hosting the codeathon. I created a meetup event to allow people to begin reserving their place at the codeathon. Initially I set a limit of 14 spaces until I’d had chance to fully assess the logistics of running the event. In the end we raised this to 18 spaces.

So we now had a date and a venue planned; the final  thing I started to put into place was food. I wanted to ensure that our contributors didn’t run out of steam too early in the day and as we all know, the best fuel for developers is pizza!! Madgex kindly agreed to pay for the pizzas and also for some post event catering to re-fuel before our regular meetup began.

Organising GitHub Issues

After the Christmas holidays I started to organise the issues in the project. allReady has evolved over the last few years into a quite large application. As a result, the complexity level for those starting out with the project has increased. When running a codeathon I am conscious that for some people, everything may be new and so I wanted to try to make the barrier of entry as low as possible. Part of this includes having a good range of smaller issues that can be easily tackled by first-timers.

Fortunately, one of the things we had recently been focusing on is the need to improve the user experience (UX) of the application. The application is very much functional, but not always intuitive for a new user. As a result of this I spoke to a friend of mine, Chris, a UX designer working in Brighton. We spent a couple of hours reviewing the application and during that session he found a number of small, but neccesary changes we could make to give us some quick win improvements to the UX.

After that meeting I came away with a lot of subtle changes that I was able to create issues for; perfect for the codeathon. These may not see very exciting on the surface but they will really help improve the usability of the application. They were also small enough that they can easily be tackled in one day as someone new to the project finds their feet. I hoped these could be good gateway issues before people started to tackle more complex feature requirements.

In the week leading up to the event I spent time organising the final logistics, such as ensuring we would have sufficient power connections for all of the laptops. I was also able to increase the RSVP limit as we wanted to make the most of the opportunity and allow as many members of our community to contribute. I also reached out to some local charities to see if they would be interested in attending the event to see how the application may be able to help with their own requirements.

I am very thankful to some of my colleagues at Madgex who were also helping to make sure we had everything in place ready for the weekend. This was particularly useful as I was at the NDC London conference the three days prior to the event so couldn’t be there in person to perform any last minute preparations.

Codeathon

On the day of the codeathon I set off by train to Brighton. Once there, my first stop was to pick up Richard from his hotel. Dan, the organiser of .NET Oxford was also staying at the same hotel and would be joining us for the event. It was great to finally meet Dan in person after many months of chatting via Twitter about running our user groups.

Together, the three of us set off for the Madgex office. One of my colleagues, Chris was already there and had been helping out by letting the early arrivals into the building.

The next 45 minutes to an hour were spent organising the meeting room space. Again, my colleagues had been very helpful, having set up a few things the day before. We just needed to ensure we had the suitable power points for the numerous devices we’d be running on the day. Ricky, our IT support technician at Madgex had kindly come in on his weekend to help with the setup and to be on hand for any technical challenges.

The setup went very smoothly and soon we had most of volunteers for the day settled in. Nearly everyone had been able to get the project cloned onto their laptops and tested prior to the event. This is extremely useful and meant that we were ready to start the event and begin coding with very little delay. At codeathons this really does help with the productivity as we can focus on code, rather than machine preparation.

At about 9:20am we were all ready to begin. We started with a short introduction from Richard who shared the history behind Humanitarian Toolbox and the goals of the allReady project we would be working on. Our volunteers listened with rapt attention and it was fantastic to have Richard with us to share his passion for the charity he has founded.

Humanitarian Toolbox Codeathon introduction

After Richard finished his introduction, I spent a few minutes speaking about the technical stack and the basic flow for working on issues and submitting pull requests. I find it useful to review this flow before starting, especially when we have some first time open source contributors in the room. In hindsight I probably needed to mention a few other things to make it easier for people to get going which I’ll include in my slide deck for future events.

With the introductions complete, we commenced coding. Everyone was heads down very quickly, choosing issues to work on and producing code to address them. As expected, there were quite a few questions along the way and I hope I was able to help everyone get started without too much of a delay. There’s a lot to take on and learn at an event like this and I thank everyone for being very patient as I worked through the various questions.

In under 1 hour we had had our first pull request to the project and after that the flood gates opened and more streamed in. I did my best to keep up with the requests, performing code reviews before merging them into the project. Our AppVeyor account was struggling under the load a little. Each pull request to the project triggers a build on the AppVeyor system. This is very useful to be able to verify that the code included in the PR builds and that the tests all pass. As we had many PR’s coming in concurrently, it did start to creak at the seams a little. Worth noting for future events to see if we can increase the capacity of the account.

We had a brief lunchtime break for pizza at around 12:45pm, which was a good chance for people to break from their screens and chat about the progress so far. The morning had flown past at a great rate and already the team had achieved a great deal. The team were eager to get going again and before long were back at their laptops, working on the next set of pull requests!

Codeathon contributors in action

During the afternoon we had organised a series of User Experience (UX) user testing sessions. We are conscious that the project has been developed mostly by backend developers and as a result, while functional, the User Interface (UI) and UX of the project leave something to be desired. This is now a focus on the project to see what we can change and improve to make it as easy to use as possible. A big thanks to my friend Chris for joining us to run the user testing sessions and to our willing test subjects, Jenny, Zen and my wife Rhiannon. It proved really useful and we now have a number of good suggestions from Chris for changes that we can make to resolve some difficulties identified during the testing.

The afternoon seemed to go even faster than the morning, with more PRs being made as people became more familiar with the project and the workflow. By 5pm we had made significant progress and it was time to wrap up the event. We concluded with some sandwiches provided from a local caterer which were very welcome after our busy afternoon.

Achievements

Including myself and Richard we had 17 people working on the project all day, and a further 4 contributors for the additional work being done in the afternoon to perform the UX testing. This was a really great turnout and it meant we could get through a lot of work in a relatively short space of time. I can’t thank everyone enough for coming along and helping to make the day such a success. On reflection, the number we had was just about right. Any more would have been harder for me to support without delaying people.

In total we had 30 pull requests opened during the event. That’s thirty issues within the project being addressed and fixed which is pretty incredible. That may be close to a record for a single day Humanitarian Toolbox event! I was able to review and merge 18 of those during the day as well, which means that code is already active in the project. I will endeavour to get through the reviews of the remaining 12 PRs as soon as possible.

How can you help?

If you like the sound of this project and this style of event, we’d love for people to join us in contributing to allReady. For those that took part in the codeathon, we hope many will continue contributing to the project too. During the next couple of months there is a global Microsoft MVP (Most Valuable Professional) event running which is a virtual codeathon to get Microsoft MVPs from around the world contributing to the project. I am helping to organise and run that event and hope to see lots of activity on the project leading up to the Global MVP summit event in March.

This is a great time for newcomers to join the project as we have lots of experts on hand to support you and help you get started. The best place to start is to visit the GitHub project repository. From there you can view the open issues and jump in wherever you feel comfortable. If you need support, just let us know and we can help out.

I have started a series of videos explaining how you can get started with open source contributions and showing the technical steps. You can view these on my YouTube channel.

Summary

I’d like to wrap up with another huge thank you to everyone who helped in some way with organising this event and especially to those contributors who took part during the day. It was a great showing from the community and I hope everyone enjoyed the day as much as I did. The aim of the event was to introduce people to the project and get them past the learning curve for contributing to an open source project. A big thanks to Madgex for supporting the event with the use of their meeting rooms, as well as for providing some food to keep the troops fuelled up. In my opinion it was a huge success and I hope that we can arrange future events to continue the good work from everyone who contributed.

MVP Logo

My Microsoft MVP Journey Becoming a Visual Studio and Developer Technologies MVP

On November 1st I got a very nice surprise in my inbox from Microsoft. I was being awarded an MVP in the ‘Visual Studio and Development Technologies’ category. This is an achievement that I am extremely proud of and very excited about. It’s an honour and honestly quite daunting to join such an amazing group of talented community leaders and experts.

A few people have since asked me about the process of becoming and MVP so I thought it might be helpful to share my experience here.

My Background

Before diving into the specifics of the MVP process I thought it would be worth giving a little background of my career. I’ll try to keep this short by skipping to the salient points, however I think it’s helpful to share a little of my background, which has not always been in development.

I’ve worked in the IT industry since around 2000/2001 when I got my first job as a desktop technician for the NHS in my college (high school) holidays. Even before that I was “into computers”, building my own PC from components ordered online and dabbling in programming with QuickBasic and later VB6. I continued my IT career with a job as a desktop and server engineer for a manufacturing company. Whilst doing that role I suggested building an intranet for some of the internal documentation. I had some limited self-taught experience with HTML at the time so I learned what I could from books and online. Later I taught myself classic ASP in order to build a spare parts ordering system for use within the manufacturing company and its partners. Then ASP.NET was released and I started playing around and learning to work with that from books and online articles. Around the ASP.NET 2.0 timeframe my employer needed to improve an in-house Access database system for managing hydraulic test results for their products. I rebuilt that system using SQL Server with a web (WebForms) frontend. I think at this point I was still using VB.NET!

Later my role was outsourced and I was transferred to work for the outsource provider. There I continued as a desktop and server engineer but due to the stricter role boundaries I was no longer able to perform any development work. I kept my skills up with my own side projects, focusing on the current releases of ASP.NET at the time and starting to teach myself C#. I also took on a little bit of side work producing a bespoke website and CRM for a consulting firm in my own time.

I developed my career at the outsource provider over the years there, becoming a UK engineer lead and eventually moving into a role as a Service Delivery Executive, managing support in Europe and Africa for one of our large customers. This was a move away from the technical aspects and into management and customer relations. I enjoyed the challenges but as time went on the resources were stretched and the role became extremely stressful and unrewarding. I stopped enjoying what I was doing and found the 50+ hour work week was absorbing any spare time I had to relax and dabble with development.

I decided to make a change. I realised I was enjoying the experience of building sites with ASP.NET and learning as much as possible and so I applied for a few developer roles. I was very conscious that I had no idea how my self-taught developer skills would stack up in the real world. However I interviewed for Madgex (my current employer) who clearly found my answers suitable as I was offered a job there! I started at the level of “developer”, so between junior and senior. This reflected fairly my skill level at the time. I immediately loved the role and found my days were far more enjoyable. I was no longer stressed and was able to enjoy having some proper free time outside of work. It was a change in direction that I am very pleased I made.

I have now worked at Madgex for over 2 years and in that time have been constantly learning. For sure there was some elements of my developer skill set that were lacking, having been self-taught, but I quickly worked to fill those gaps in my knowledge. The team I joined was amazing and I learned so much from the experienced developers there. In my personal time I spent a lot of the free time I had learning more, watching videos and keeping up with the developments around the new ASP.NET Core framework. About a year or so ago I was lucky enough to be able to put that into practice as we started developing a new product at Madgex. I’ve since been promoted to senior developer and within the last month taken on some additional responsibilities as a developer community lead.

Nomination

The journey to becoming an MVP begins with a nomination at https://mvp.microsoft.com/. In my case I received my first nomination in January 2017 from MVP James Chambers whom I had worked with quite closely on the Humanitarian Toolbox allReady project. James was aware of my blog and activities contributing to OSS and felt I should be put forward for the MVP.

As a nominee, the first you hear about this is via an email from Microsoft, stating that you’ve been nominated. You are given a link to complete a profile in their system.

Recent contributions

As part of the profile completion process you are asked to provide a detailed list of your community contributions. This includes things like any events you have spoken at, blogging, videos you’ve shared and OSS contributions. Retrospectively working out what I’d done and when was no easy task. Had I been expecting a nomination it would have been helpful for me to have kept a record for the last year of activities. If you’re involved in community and hope to one day be nominated I would recommend that you keep a list of key dates for your community activities.

Once you have completed your profile and contributions you submit the form and get a confirmation email that it will go into a review process at Microsoft.

The long wait

In my case, after completing my profile it was a long wait before anything happened, many months in fact. During that time I assumed that the nomination and profile must be under scrutiny within Microsoft. Every now and again I went in to update the contributions against my profile. The process is a bit of a black box and I’m not really sure if my nomination was forgotten about or that it simply takes some time to get a response.

In August I happened to be at a Microsoft community event being run by the the UK Community Program Manager / MVP Lead, Claire Smyth. Since I had the opportunity I asked about the MVP process and mentioned my nomination. We followed up by email and Claire was able to locate the nomination in the system. At this point we arranged a brief call to discuss the MVP along with support Microsoft were offering to new user groups. I happened to have just setup my new user group, .NET South East at this time so Claire had kindly offered me some support and advice.

This was a useful chat and Claire was able to explain a little more about the things that the MVP team are looking for in nominees. It’s mostly that there is a varied and comprehensive range of contributions that show a positive community benefit. I was able to discuss my community activities in a little more detail. Claire also explained that after the nomination is approved it usually also goes to the respective product teams for them to review the contributions and give their feedback. In my case I’d had a little contact with some of the ASP.NET team and I let Claire know some of the people I’d previously interacted with.

At the end of the call Claire confirmed she would look over the information and see if the nomination should go forward.

Further nominations

During the weeks after our call I was fortunate enough to receive two further nominations for the MVP award, including one from Jon Galloway at Microsoft. This last one I feel had particular weight in tipping me over to get the award. Since the review process includes some input from the product teams as to which nominees are ready to the award, having a nomination from someone on the ASP.NET team was likely very helpful! If you receive additional nominations you seem to get a whole new profile to be completed. I dropped an email to Claire who I believe was able to link the nominations together in the system. Just to be sure, I completed the profile on the most recent nomination link. By this point I’d done some more talks so I was able to add some extra contributions to my list.

After this, things went quiet again while the process continued behind the scenes. It was a busy period and I forgot mostly about the nominations for a while. Then, on the 1st of November after an evening meal with some friends I happened to glance at my phone when heading to the car. I had a few emails and I scanned over the list. One particular subject line jumped out at me – “Congratulations 2018-2019 Microsoft MVP!” My excitement mounted further as I opened the email and read the first paragraph!

MVP Award Email

I was honestly shocked and very excited to read this email. I immediately showed it to my wife who was also very excited. I’d explained the MVP and mentioned my nominations for it to her earlier in the year and she was aware of what a big thing it was to be awarded the MVP.

What do you get?

In the congratulations email you are sent details of how to start accessing some of your MVP benefits via the MVP site. There’s a lot to take in. I started by ensuring my MVP profile was correct so that it would appear on the MVP site. I then looked at things such as the MSDN Visual Studio Enterprise subscription which is a very handy subscription to get! After agreeing to a Microsoft NDA you are also able to access special mailing lists that include members of the product teams. I joined the ASP.NET mailing list and the Azure one as those are most relevant to what I do day to day. You can also sign up for a Microsoft Yammer group that gives you access to chat with other MVPs and Microsoft personnel. There’s still lots of things I need to look into as MVP have access to various licenses and products as part of their benefit package. For me though, the access to the wider product teams and fellow MVPs is one of the best benefits.

As well as the access and licenses mentioned above the other thing you can expect as a new MVP is an award pack posted to you from Microsoft. I got an email stating that mine had been posted and would be with me in about one week. I’d seen photographs of the award pack from other MVPs via Twitter so knew roughly what to expect. Even so, on the day of its arrival to my home it was exciting to unbox the contents. Inside the award pack you get a very solid physical trophy made of glass. It’s much more substantial than I’d expected and looks really great. You also get a certificate, MVP ID card, lapel pin and some MVP stickers. It’s a really nice pack and it’s nice to have something physical to represent the award.

Microsoft MVP Award Pack

MVP Summit

The other very exciting opportunity for MVPs is the chance to register to attend the MVP Global Summit which is run annually out of the Microsoft campus in Redmond, Seattle. My MVP award was perfectly timed, just before the registration for this event opened. On the day of registration I was eager to sign up to attend. It’s a hugely valuable opportunity to visit the Microsoft campus and to meet and interact with the Microsoft product teams directly. The registration process itself was a bit of a nightmare as despite jumping on the minute it opened, the system was clearly unable to handle the load and was crashing. I spent nearly two hours trying to complete the hotel registration phase. During that time a number of MVPs were experiencing problems and tweeting about the issue. One MVP provided a couple of phone numbers we could try to get support. Not surprisingly the phone system also struggled under the load but eventually I was able to get through to someone. They were very helpful and in very little time managed to get me registered for the event and the hotel of my choice. I’m looking forward to my first trip to the US and the chance to meet many of the MVPs and Microsoft staff I follow on Twitter.

Next Steps

Being awarded the MVP is a very exciting development in my career. Over the last two years I have been very focused on blogging and sharing as much as I can with the amazing developer community. I learn huge amounts from other community contributors and it’s wonderful to play my small part in that and be recognised with this prestigious award for that work. It’s a little intimidating too, to be joining such an expert group of fellow MVPs. I can’t help but feel a degree of impostor syndrome at the thought. I hope to live up to the award by continuing to contribute within the community. I want to keep up blogging, speaking, running my user group and OSS contributions as much as possible. There are a few other projects and ideas that I hope to find the time to do also that I hope will contribute further to the ASP.NET community in particular. I owe a huge thanks to the community and various specific people along my journey who have supported what I’m doing, offered advice and nominated me for this award. A big thanks to everyone who has helped me along the way!

.NET South East October 2017 Meetup With guest Rabeb Othmani

Last night we held our third .NET South East meetup at Madgex HQ with special guest Rabeb Othmani. Here’s a brief summary of the evening…

Preparation

Planning for this meeting felt a lot easier than past events as I have built a few lists of things to do and have a bit of experience with setting everything up. As usual I did a bit of marketing for the event via Twitter, hoping to spread the word.

On the evening I finished work around 4:30pm to begin setting up the room and preparing things like the snacks and drinks. We have a pretty well-oiled process now and with the help of Ricky our IT guru we had the room prepared in about 30 minutes. The plan for the evening was to stick to the process we’d developed at our prior meetup.

We had our attendees sign in down in the foyer with two volunteers, Chris and Jenny very kindly helping to do that this month. Again we placed our food and drinks networking area in our main reception space so that there was more space for people to chat and socialise. Toby and Sally; two more Madgexians kindly helped meet and greet people from the lifts. This month I was please as everything was ready well in advance and I was actually able to spend a bit of time greeting and speaking to people as they arrived. This was something I’d been unable to do at the prior events where I was running around getting the final things sorted.

In the end we had 20 attendees for the evening so a bit of a drop off from our first two. I had kind of expected this since the novelty has worn off for some. We did have some new faces though so it was nice to see more members finding their way to us.

Intro and news

At 7pm I opened the evening with my introduction, including thanking our fantastic sponsors and then went on to discuss some of the news items I had gathered for this month…

Quantum Computing

The first item I discussed was taken from the Ignite 2017 announcement that Microsoft are expecting to release a Quantum computing programming language by the end of this year. Microsoft are heavily invested in research around building a working quantum computing device and would like to start skilling up developers to work in the quantum world. The new language is yet unnamed (my guest is Q#!) and will include full Visual Studio integration, including a debugging experience. A local simulator will be available to simulate a 30 Qubit device or an Azure based 40 Qubit similar can be used. It’ll be interesting to watch how this develops as quantum computing could truly change the way we think about programming.

Microsoft Quantum Computing

Arstechnica Article on MS Quantum Computing

.NET 4.7.1 built in support for .NET Standard 2.0

A smaller news item but worth a quick mention, this story refers to the Microsoft announcement that 4.7.1 of the .NET Framework now includes all necessary files to consume .NET Standard 2.0 libraries. While 4.6.1 introduced compliance with the .NET Standard 2.0, it required some additional files to be deployed and in some cases binding redirects to be used.

.NET 4.7.1 built in support for .NET Standard 2.0 Announcement

UWP Supports .NET Standard 2.0

A related story was another Microsoft announcement that a major update for UWP means that it now supports .NET Standard 2.0. This introduces an additional ~20k APIs to the platform which developers can now take advantage of. It should also make sharing code between UWP and other platforms much easier. To use this update you need Visual Studio 15.4 and need to be targeting the Windows 10 Fall Creators Update.

UWP Supports .NET Standard 2.0 Announcement

Rabeb Othmani – Welcome to the age of conversational interfaces

Rabeb Othami speaking about conversational interfaces

Rabeb gave us a great talk that really set my mind off thinking about building bots! She talked about the coming of age of conversational interfaces via devices like Google Echo, Amazon Alexa and our smart phones.

She described the history of the changing development landscape as users move to consuming on smaller devices and via different interfaces. We moved from mouse on desktop devices, to touch on tablets and smart phones and we’re now entering the age of voice communication where we may never physically interact with the device at all.

Recent advances in technologies such as AI and machine learning are enabling us to develop more intelligent applications while improvements in voice recognition, language interpretation and text to speech have also driven the industry forward and moved us towards more and more voice based interfaces.

Digital assistants such as Google, Siri and Cortana understand more about the context in which we are operating and can tailor responses and information to our needs.

Voice as an interface is becoming popular in part due to its convenience and speed. With text we need to locate our device, unlock it, access an app, type data and wait for a response. With voice, we can very quickly interact without any need to physically hold the device. We can interact on the move or in situations such as in the car when our hands are not free to use a device. Voice can be very simple when done right as there are no UI issues in the traditional sense. However the application/device must be able to understand and interpret the intent of the user.

Rabeb listed some key point to consider when building voice based interfaces:

  • Make it smart
  • Use language users can understand
  • The capabilities of your tech
  • The structure of the info – For example dates; e.g. should you infer a year if the user doesn’t say one?

When building for devices like Alexa you build skills which are a unit of conversational intelligence. You must register the skill to be able to use it from your device. Skills invoke a bot in the cloud which does the processing for your application. Rabeb demoed the Microsoft bot SDK in Visual Studio and a simple bot which would call her phone using the Nexmo APIs.

Rabeb Othamni at .NET South East

It was a great introduction to the world of bots and voice interfaces. I have been inspired to add it to my list of things to try and I hope a few others will do the same. This is exactly why I believe user groups are so great. In a short evening you can quickly learn about a new technology with enough to get you excited and start you on a path of discovery. A big thank you to Rabeb for travelling down from Bristol to spend the evening with us.

As always, a big thanks too to the amazing volunteers from Madgex who helped me setup and run the evening and to all of the attendees for making time to join us. A final thanks goes to our sponsors for the evening who offered some great prizes and support of our user group.

Prize Draws

With the end of the evening closing in we drew the winners of the prizes from our fantastic sponsors for the event. The prizes we had to offer were:

JetBrains
One year individual subscription to any single JetBrains Toolbox product

Progress
DevCraft Complete License code

Manning
Free eBook

elmah.io
6 month Small Business license

PostSharp
License to PostSharp

Again we use the WPF app created by Dan Clarke, who organises the .NET Oxford meetup. The rules as with the last event were:

a) names are added from the RSVP list (as at about 1 hour before the event)
b) if the name drawn is not in attendance, we redraw.

Next events

We have some great speakers lined up for the next couple of months, and I’m working with a few people of plans for next year too.

.NET South East November 2017 – Michael Newton
Making Distributed Systems in .NET Easier

.NET South East November 2017 – David Arno
Roslyn Analysers

2018 events to be announced soon!

Call for speakers

I’d love to get a range of varied content and speakers to present at our user group. We have a nice pipeline for the coming months but those months will fly by very quickly. If you’d be interested in speaking at a future event we’d love to have you. Please get in touch via the contact form on this blog or ping me on Twitter and we can discuss availability and topics.

I’m really keen to draw as many speakers from our local community too so please let me know if you might be interested in speaking. Perhaps you have presented a talk internally and could open it up to a wider audience. I highly recommend speaking as a way to develop professionally. I’m happy to offer advice for new speakers and help where I can.

If you don’t like the idea of public speaking, you are not alone. Please check out my own story in my recent two part blog series – Part 1 of How to not hate public speaking.

Links

https://www.nexmo.com
https://rabebdiaries.wordpress.com/
https://dev.botframework.com
https://developer.microsoft.com/en-us/cortana

.NET South East August 2017 Meetup With speakers Dylan Beattie and Steve Gordon

Last night we held the first ever .NET South East meetup event! I’ve been really looking forward to this meetup since first announcing the idea at the end of June. I talked about some of my motivations behind starting the group in an earlier blog post.

I’d spent a lot of time leading up to this event trying to think about all of the bits I needed to plan and have ready. I had great support from some of the other community leaders to help with ideas, advice and suggestions. I was also able to attend an event at Microsoft in London for community leaders, speaking with some of their team about how they can support user groups, so I’m looking forward to working with them too.

Over the days and weeks before the event I had been staggered by the number of RSVPs we were getting via meetup.com. One of my two big concerns when moving forward to launch the group had been whether there would be interest from the local community and people would show up. I had set a rather arbitrary 60 person limit for the group, never really expecting to hit that. However, with a day or two left before the event, we were full! In fact I was starting to worry that if everyone turned up, we would run out of space and seating.

The big day!

Thoughts of the meetup were always in the back of my mind during the day and as the start time approached I was equal parts excited and nervous. I start and finish early at work so by 4pm I was able to shoot out and grab an early dinner from Pompoko in Brighton. It was nice to have 20-30 minutes to relax out of the office and prepare myself for the evening ahead.

Returning to the office at 4:30pm it was time to begin setting up. We have 3 meeting rooms at Madgex which can all be opened up into one large space. It’s the perfect location for an event like this as we have a large TV screen for presenting on and an audio system with an array of microphones. I’m hugely thankful to two Madgex staff in particular at this stage who helped me to get this room ready and setup the equipment. Leah our amazing office administrator was on hand helping to set up the seating, whilst Ricky our IT tech was there to ensure the audio/visual side was all functioning as expected.

Our one and only technical hitch for the evening was actually with one of the folding doors which allow us to open up the last room as part of the space. The last folding section was jammed shut and we couldn’t open the door fully. However, it wasn’t a major issue and we were still able to get the seating setup. It was not one of the things I’d worried about going wrong! I’d been mostly concerned with the TV output and microphones working correctly.

Madgex venue for .NET South East

I was amazed at how quickly the time evaporated as we got the room and snacks prepared. Once the meeting rooms were ready I set about putting up some signs to guide people into the Madgex offices. By 6:15pm we had our first early bird arrivals. Some more of my colleagues at Madgex jumped in to add their support here, helping get people through the security doors and into the office. Madgex are on the 1st floor of a shared building and access is tightly controlled. To access the building you need to be buzzed in, then to use the lifts you will need an access fob.

It was actually the logistics of this which was the hardest part of the evening. Fortunately I had two volunteers on hand to help. Rachel, our development team lead kindly based herself in the foyer of the building to let people in. She would then put them in the lift and swipe her access fob so they could be delivered to the 1st floor. Ready and waiting in the entrance of the Madgex office, Chris, one of our senior developers was ready to greet the guests and get them signed in. With RSVP lists on hand Chris was able to tick off the attendees for the evening.

The other logistics challenge we have is access to the toilets, or more specifically, how people get back into the Madgex office. Once you leave for the toilets a security locked door stands in your way if you want to return. We had organised visitor access fobs for the evening and Chris was superb as passing those out and gathering them back from our guests. During our 10 minute break Chris manned the door to enable people to use the facilities.

Without Chris and Rachel helping on the night I’m really not sure how we could have gotten everyone in so successfully, so I know for next time that I need to line up at least two volunteers again. We also realised that once we start it’s near impossible to hear the intercom buzzer so I have made sure to update our details on meetup to stress that entry after 7pm can’t be guaranteed. Unless we are able to get someone stationed near the door (who was not worried about missing the talks) I’m not sure how we can improve this. We’ll try to think about possible solutions to that problem, but hopefully everyone arrives on time. By having the arrivals from 6:30pm and talks at 7pm, we hopefully give enough of a window to get people into the event.

In the end we had 49 attendees (including myself) and I think nearly filled every seat in the room. I was really amazed by the turnout as people started to fill up the area where we were serving drinks and snacks. Before long it was getting quite congested. We’ll think about the possibility of picking a different networking space for the next event. I’d honestly not dreamed that the first event would be so popular. A big thanks to everyone who made time to attend and show their support. It’s great to see that we have such a large community who are willing and able to attend. I really hope we can keep the attendance level up for the upcoming events.

Audience at .NET South East

Intro and news

As we hit 7pm it was time to get everyone seated and begin the event. I expected to be more nervous than I was as I prepared to give my introduction. However, I felt pretty good and after a minute or so I was into my stride. After covering the obligatory health and safety notices I went on to share some of the reasons behind starting the group and welcoming everyone to the event. I then took a chance to thank our sponsors, especially Madgex for the support they’ve given and for providing a venue for the evening. The meeting rooms are a great space and I hope everyone was reasonably comfortable in there.

I also covered a little news and events section which originally I was unsure about including. However, with the release of .NET Core 2.0 last week I felt that was worth spending a few minutes to talk about it. The big changes are the wider API surface now available in .NET Core 2.0 which align it to .NET Standard 2.0. This hopefully eases the barrier to entry for companies with existing code that they may want to migrate over to core.

I also highlighted the .NET Conf event which is running in September as well. It’s a free, streamed conference organised by Microsoft which will likely include a lot of .NET Core 2.0 and ASP.NET Core 2.0 content.

Talks

Dylan Beattie: Life, Liberty and the Pursuit of APIness : The Secret to Happy Code

With my introduction complete it was time for our first talk. Dylan Beattie was kind enough to join us from London (on his birthday) to give his fantastic talk entitled: Life, Liberty and the Pursuit of APIness : The Secret to Happy Code. In this very entertaining talk Dylan presented examples of both good and bad interfaces and how these can affect the happiness and frustration of end users.

During the talk he highlighted the power of giving helpful error messages and prompts for the user/developer to solve the issue wherever possible. Blank wall error messages should be avoided where they offer no useful information to enable the user to proceed. The way those messages are phrased is also important.

Dylan spoke about a personal obsession of mine – including proper XML comments to supply tools like Visual Studio’s intellisence a way to provide developers with useful instruction about how to use your library / code. This is something I’m very keen on as I’ve used a few poorly commented libraries that provide no intellisense support to guide you through their API.

The discussion continued onto proper and relevant logging / monitoring and how logging levels and messages should be used wisely to provide insight into the health of systems. A good recommendation is leaving relevant debug logging in place that can be enabled in production if you need to diagnose hard to replicate errors.

It was a great talk and really well received by the audience.

Dylan Beattie speaking at .NET South East

Dylan ended with a short promotion for a .NET conference that he helps to organise in London called Progressive .NET. There’s a fantastic speaker line-up for the event so I recommend you check it out and convince your boss to send you along! We also have a 20% discount code you can use against the current list price: SE_PROGNET_20

My Talk: Docker for .NET Developers

After our 10 minute break I was pleased to see that nearly everyone had stayed for the second talk of the evening. This time I was in the spotlight and presenting my talk about how .NET developers can get started with Docker. In this talk I share our experience at Madgex as we got started with Docker for a new product. Along the way I explain the architecture we developed and how we used Docker to ease the workflow for our front end developers. Along the way I show some code demos about how we can get started using Docker, building images and running containers. We look at using docker-compose for co-ordinating multiple containers.

I conclude the talk with an explanation of how we’d developed a build and deployment process and how we run in production on AWS using Docker. This included a final demo showing the deployment process in action.

Steve Gordon speaking at .NET South East

Prize Draws

With the end of the evening closing in, before heading off to the pub we drew the winners of the prizes from our fantastic sponsors for the event. The prizes we had to offer were:

JetBrains

One year individual subscription to any single JetBrains Toolbox product

Progress

  1. DevCraft Complete license code
  2. T-Shirts x 5

Manning

  1. ebook – 1Docker in Action by Jeff Nickoloff
  2. ebook – Docker in Practice, 2nd edition by Ian Miell and Aidan Hobson Sayers

elmah.io

6 months Business license

I went for the low tech, names out of a bowl approach for the first event! The rules I’ve devised which I hope are fair are:

a) names are added from the RSVP list (as at 1 to 1.5 hours before the event)
b) if the name drawn is not in attendance, we redraw.

Congratulations to the winners. I hope everyone who won was happy with their prize. One issue we did encounter were that meetup.com doesn’t enforce full names for RSVP’s so we could run into issues with drawing a winner signed up with just their first name when more than one person in the room shares the name! I’m not sure what we can do there but we’ll try to manage it fairly or do some kind of tie break in those cases. I’ll also urge our attendees to add their full names when registering on Meetup.

Next events

One of the main concerns I had when starting the user group was finding speakers. So far those concerns have not been warranted and I’m pleased to have been able to line up some great speakers for the coming three months of events.

.NET South East September 2017 – Jon Galloway
We’re excited to announce that Jon Galloway from Microsoft will join us for the evening to share two exciting talks. What’s new in ASP.NET Core 2.0 and a talk about The .NET Foundation. This is filling up fast and we expect it to be quite popular. Please make sure you visit the link and RSVP to attend as we will have to limit numbers.

.NET South East October 2017 – Rabeb Othmani
Rabeb joins us with her talk “Welcome to the age of conversational interfaces” – looking at how we can build interfaces using SMS, voice and bots.

.NET South East November 2017 – Michael Newton
Michael joins us with his talk “Making Distributed Systems in .NET Easier” – discussing distributed architecture with .NET.

Call for speakers

I’d love to get a range of varied content and speakers to present at our user group. We have a nice pipeline for the coming months but those months will fly by very quickly. If you’d be interested in speaking at a future event we’d love to have you. Please get in touch via the contact form on this blog or ping me on Twitter and we can discuss availability and topics.

I’m really keen to draw as many speakers from our local community too so please let me know if you might be interested in speaking. Perhaps you have presented a talk internally and could open it up to a wider audience. I highly recommend speaking as a way to develop professionally. I’m happy to offer advice for new speakers and help where I can.

Links

A collection of links shared during the evening.

Dylan Beattie’s blog
Steve Gordon’s blog
.NET Conf – Sept. 19th – 21st
Progressive .NET Tutorials – Sept. 13th to 15th
Humanitarian Toolbox Summer Hackfest
.NET Core 2.0 / ASP.NET Core 2.0 Introduction – Scott Hunter
Ian Cooper – Creating a .NET Renaissance (NDC Oslo 2017)

Docker for .NET Developers slides
Docker for .NET Developers – Demo 1
Docker for .NET Developers – Demo 2
Docker for .NET Developers – Demo 3
August 2017 Meetup intro / summary slides