Scottish Developers Virtual Meetup

Developer groups quite often go through ups and downs, so after last holding an event back in May 2018 – the last one I attended was DDD Scotland almost three years ago – I thought Scottish Developers had long since disbanded. However I was really pleased to see a new event pop up on Meetup a week or two back organising a pandemic safe online virtual meetup with two very different speakers.

I have to say that one of the definite plus points amongst the numerous negatives for the lockdown is that many groups are discovering online groups and conferences. As the bigger tech hub in Scotland many of the events are held in Glasgow, so whilst I’ve taken days off to go to events like Code Craft Conf back in 2019, evening meetings are a lot more difficult. Going online allows much wider participation, so this event was hosted by Andrew in Caroline who were in different cities, with one speaker in Seattle in the USA, and the other in Aberdeen.

First up was Stephanie Stimac, a Microsoft employee on the Edge team whose talk was about the absolute minefield of HTML controls on web pages. This is a problem that has been around right from the earliest days of the web, and even almost thirty years later is still an issue – if you use the standard HTML controls in a web page by default they will use operating system components in a page and will look and function differently depending on which browser is being used to view the page, and especially if the browser is running on a different platform. This problem has never been fixed, web developers have merely worked around the problems initially by creating their own controls within pages, or more often than not using one of the now numerous frameworks that wrap up solutions to all these problems.

Thankfully, since I work very much in the middleware space, and with a standard browser for internal websites I don’t have to deal with browser complexities in my working life, however this did serve as a reminder of why I’ve always found doing that sort of stuff frustrating. This really is a problem that should have been solved long ago – Stephanie had some interesting statistics part way through her presentation of quite how many hours of developer time have been spend faffing around trying to deal with problems with the controls. Stephanie did offer some cause for hope, but we’re really not there yet.

The second talk, Gary Ewan Park talking about a Build Orchestration Tool called Cake was maybe more relevant to me, especially given that we’re in the process of moving our product builds from an ageing TeamCity platform to a modern Azure DevOps platform.

Although the build in TeamCity and ADO is doing the same task, how it does it is very different between the two, such that we currently have a specialist build team that is effectively recreating the TeamCity build for each of our products in ADO. Cake gets around that problem by moving the build into code. This means that the build can be run locally, and with one line in either TeamCity or ADO can be run the same way there too. The build orchestration is also written in standard C# – so the language that most .Net developers use, rather than particular configuration files for the build platform in use.

We’ll have to see whether we change how builds at work are done – as they’re the responsibility of a separate team who have been working on scripts in ADO specific YAML for a long while, but Cake does seem like a good way around the problem we’ve been having.

Anyway, it was a great restart for the Scottish Developers, and with another virtual meetup tentatively planned for April, hopefully not nearly so long to wait for another one.

If you want to watch the talks, a recording of the whole event is available on YouTube.

DDD 2020

Adding to the list of things that COVID-19 has changed, we can add the regular community Developer Days that run around the country. The last one that took place was DDD North back in February just before the pandemic hit, with every other one unable to run. That didn’t stop the community organisers though, and this weekend they put together an online free developer conference, DDD 2020.

Unlike the in person conferences, DDD 2020 was unencumbered by limitations of venue, so whereas even the biggest DDD events I’ve been to have only had four tracks going, DDD 2020 had seven, and no limit on the number of attendees. All in all there were 50 different sessions to choose from, so plenty to interest everybody.

As with the in person conferences I attended a mix of sessions, some of which piqued my interest, others of which were relevant for work.

First off I attended the session on .Net 5 and C# 9, hosted by Stuart Lang. This was a whistle stop tour of some of the new features in .Net 5, and changes in C# 9. In all honesty I doubt I’ll get to use many of these in anger any time soon, as I’m very firmly in the realms of legacy applications for the moment, but it was certainly interesting. Stuart also showed a pretty interesting graph that highlighted that Microsoft is going to have a much more aggressive attitude towards supporting older .Net frameworks going forward, so legacy apps are clearly better off staying on the .Net 4.8 Framework as this will be supported for many years to come, but even .Net 3.5 has support going out to 2029.

The other interesting aspect is that the lifetimes for the even numbered releases of .Net were significantly longer than the odd numbered releases, so he suggested that unless you can update the version of .Net easily you should only be targeting the even numbered releases.

Next I took a diversion into psychology with Adam Griffiths session on a Geeks Guide to People. This was a lot of interesting insights into how people work together and respond, not surprisingly with some insights on the effect of interacting primarily online.

Also on the subject of interacting online was the great session on speaking and presenting virtually from Dylan Hayes. As you can see from the picture it got quite meta when he got to the point of trying to explain the use of OBS for a presentation during a presentation he was hosting with OBS!

Dylan had lots of good tips that are useful both if you are doing full presentations, or even just regular meetings in Teams or Zoom. In particular he advised against the use of virtual backgrounds – ironically being used by several other speakers during the day, and instead recommended paying attention to what is behind you and curating what people can see. He also had good advice on the use of external cameras, where and where not to place lights, and using and external microphone. A big takeaway is that the cameras and microphones on laptops are junk, and to get a good effect you really need to be investing in external webcams and microphones.

Next up I went along to a session called “Break Up with your Dev Machine” presented by Callum Whyte, looking at whether developers really still need the kind of beefy powerful computers we have at the moment. As a travelling consultant he was looking at whether you could get by with something smaller and less powerful by taking advantage of online service such as Virtual Desktops in Office 365, or GitHub Codespaces, or a hybrid combination.

Whilst new tools like GitHub Codespaces are pretty impressive – it is effectively running VS Code in a browser, I’m not sure many developers will be able to cope without a powerful machine, not least because at times you’re not going to have a reliable internet connection.

My next session was another change of gear with the CTO of Black Marble talking about his Azure DevOps plug in that automatically generates release notes. During the session he went through the way the plugin has developed, and showed off some of the functionality. Given that at work release notes and deployment instructions are very much a manual process, it certainly looked like something we could make use of.

Into the afternoon, next up was Sean Farmar talking about using Domain Driven Design to decompose your monolith. Again with the monolithic legacy applications I’m currently dealing with, this was really relevant for work, although in an hour long session Sean could only barely scratch the surface.

His first piece of advice is probably one of the most important, that the easy temptation to throw your hands in the air and rewrite a monolith is a fantasy, and often produces similar problems after a lot of time and expense. Much better to look at what you currently have, and use patterns such as the strangler pattern to put a facade in front of a monolith and slowly evolve it into something more maintainable.

The session took a look at a simple example, and splitting the domain into a number of bounded contexts where there was high cohesion and coupling within a bounded context, but not outside. Communication between contexts should use messaging or events.

Another important point he made towards the end is that there is not a one to one relationship between bounded contexts and micro-services – logical boundaries in the design and physical structure are two very different things.

Next up was Simon Painter talking about Pride and Prejudice and C# – a bit of a random title, and even more random when he started the session talking about breakfast cereal!

What he was actually talking about was Markhov chains, a concept first described over a century ago by Russian mathematician Andrey Markhov, but which turns up all over the place in computing supporting AI systems, generating test data, or predictive text engines, hence the Pride and Prejudice connection.

Having started off demonstrating the principle with breakfast cereals he moved on to using the technique to analyse Pride and Prejudice, and then to generate text at random that whilst it didn’t make much sense, certainly sounded like nonsense written in the style of Jane Austen. Fascinating stuff.

My last session of the day, was the only time we had a serious technical glitch, with the session starting almost twenty minutes late after they had issues with Teams. Given the hiccups we have with Teams at work at times I’m surprised we got as far as we did during the day before something went wrong.

Having said that it was worth waiting for. Gary Short is a data scientist, and having worked for various companies over the years is now working for himself, currently looking at how people handle unforeseen events on the road network.

In the past the organisations responsible for our roads have often relied on experienced road managers who would set up closures by gut feel, however Gary demonstrated how they can use the large amounts of data gathered from roadside sensors to determine the effects of particular actions on the road network.

As so often with data science solutions it’s as much about gathering large amounts of data and determining patterns, but as ever with Gary’s sessions, really interesting seeing what the kind of data volumes modern computers can handle can now produce.

In summary, as a first attempt at an online DDD I think the day was a great success. Given that DDD Scotland hasn’t run since 2018 leaving Scottish Developers with DDD North as probably the nearest event, it was great for me as a developer based in Scotland to not have to drive for several hours to attend the day. Whilst I have travelled to DDD events previously, most notably to the last DDD Scotland from down south, and also to DDD South West, it was great to have access to such a good variety of content without leaving my home office. Whilst it obviously lacked the interaction and networking that are also parts of the DDD events, the wider inclusion of streaming online brought in many more developers than would usually be able to attend, and for those of us with family commitments allowed us to participate as well. Hopefully the experience with DDD 2020 online will lead into some more hybrid events for 2021 as restrictions are eased.