The last time I attended DDD was prior to lockdown in 2019 (note: that blog post seems to be janky now). I was a second year CS student attending my first conference at the time. I remember feeling a bit overwhelmed in some of the talks as the presenters demonstrated concepts and functionality that was well beyond what I'd seen in University ACW's and beyond what I'd been doing in personal projects too. The most important takeaway from the day was that I understood that my experience and knowledge was still extremely junior in the grand scheme of things - even if I seemed like a super hacker to the average user.
All that seems a long time ago now. I've graduated presenting "Parentull", co-parenting software built with Blazor to help parents in conflict become better co-parents by centralising children's information and sourcing data from third parties. Although I didn't add the functionality at the time, I originally did theorise "contact planning" to avoid lengthy (and costly!) legal battles and using the application as a means to negate the need for having an ex-partners contact details. This would be particularly useful, for example, if there had been domestic abuse or an ex was constantly sending messages or calling. There are more blog posts about Parentull, so if you're interested do feel free to read those or contact me for a coffeee to discuss as I am still developing it and would love to build on the very positive feedback already recieved from solicitors, district judges and business leaders.
I've also got a couple of internships under my belt. The latest one was with the University of Hull working with David Parker on Hip-Hops; but an earlier one saw me working with Blazor to create a CRM for a Hull Based Company. That was quite an interesting project as I was solely responsible for architecting, coding, testing and deloying it. I learned a lot of skills on the job alongside solving quite a few problems which hadn't popped up in a university environment. An internship prior to that saw me creating Cyber Security policies and plans for an international hospitality business. Incidently, I am currently looking for a junior dev/dev ops type role, so feel free to slide into my DMs with offers / connections.
All of this made me feel much more confident in my skillset and knowledge.
I started the day at around 7.30am, which based on some of the tweets I saw, was significantly later than other attendants start to the day with suggestions of 5.30am set offs! Thankfully, I don't live far from the University of Hull so after a quick bacon sarny and coffee, I was walking to DDD. The air was chilly but fresh making for a refreshing morning walk to the event. Sadly, Hull isn't very visually appealing this time of year but just a month or so ago was ablaze with Autumn colours lining cottingham road and University of Hulls campus which always brings me joy each year. Perhaps a point to take away for DDD's organisers if they fancy injecting some colour to the event.
On arriving at DDD, registration was quite simple. All I had to do was pick up my badge and begin attending talks - though choosing exactly which ones to attend proved to be more difficult given the range of expert speakers and awesome talks on offer. This is the same problem that one might encounter if using a fast food app, such as Deliveroo, Uber Eats or Just Eat - there is simply so much choice that decision making becomes prolonged or can end in disappointment.
Fortunately for DDD, they have the opportunity of being able to mitigate this situation by requiring speakers to make their slides available via the DDD website or sending them out afterwards. I'd also argue that making sure that talks are recorded and published would put everyones minds at rest about making the "wrong" choice. I'm sure there will be an argument that if that happens, less people will be interested in attending but I disagree - DDD is about the community, it's about learning from others and making connections.
How can that happen if you don't attend?
Session 1: Doing XAML the right way by Matt Lacey
For the first session, I chose Matt Lacey's "Doing XAML the right way" based on the fact that my knowledge of XAML could be better and I'd had problems with it in the past so there was room for improvement and gaining knowledge.
I arrived early, so much so that I was in the lecture theatre before anyone else arrived. When Matt walked in, he quipped "I admire your enthusiasm!" and had a little bit of chat. Good start!
Throughout the talk, I was surprised to learn that XAML hasn't really changed as much as other languages, especially when considering how much the web and standards have changed over the last decade - XAML is the same as it always has been. That may explain why I encountered frustrations including it in an application for my dissertation project. At the time (2020/2021), using XAML for templating and styling seemed really outdated and clunky compared to Blazor's reuse of razor components and css.
Matt explained these issues are compounded by a lack of modern tooling for XAML, but did recommend XAML Styler as a way of getting proper formatting for XAML alongside giving a very good suggestion to format documents and commit prior to changes so that everyone has clarity on what has been changed.
Throughout the rest of the talk, Matt delved into the way he was trying to improve XAML templating and formatting. I won't mangle his explanation but I'll include his wrap up slide below which contains some very common sense advice:
Other resources Matt mentioned (and built) were the Rapid XAML Toolkit and MauiAppAccelerator which readers may want to check out.
Towards the end of the talk, Matt gave out free copies of his "Usability Matters" book. Obviously, I asked him to sign it so that when he's super famous, I can pawn it for a few quid but until that time, I've started reading and found it quite useful so far. In particular, I think the sections on benefits for the user and non-visible output will be very beneficial.
Session 2: Automated Testing for Logic Apps by Mike Stephenson
Another area I've struggled with is testing. I'll make no bones about that, I absolutely suck at testing. I remember when I had a chat with Brian Tompsett about it in second year during his networking module. He told me that the very best programmers were able to get programs to talk back to them and tell them what was happening and what went wrong. I can absolutely get my programs to talk back to me, but the problem is that is not a test - so I need to get to the stage where I validate the "feedback" from programs.
In any event, given the above I opted to attend Mikes "Automated Testing for Logic Apps" talk. I figured seeing how others are testing logic apps would be benefical and give me an idea of what good/bad tests look like in the wild.
Instead of reiterating the content Mike went through, I will just point to his site The Integration Playbook where he has talks and resources listed, including a couple of talks with roughly the same content presented at DDD. Another reason for not re-iterating here is that I plan to do a series on testing so I'll be referencing the content again then.
Mike can be found on Twitter, Github, Linkedin and via his personal website.
Session 4: Universal Problem Solving by Proactive Paul
A less technical third session but no less interesting. Paul presented a few ideas around planning and productivity.
The first being around the idea that it's perfectly possible (and perhaps even acceptable) to ditch items from "to do" lists if they've been on the list for x amount of time, or are simply irrelevant. The priority should be on items which require immediate attention or are more valuable. This idea came with a story about a professor, real or fictional is rather irrelevant, who began piling papers on the floor instead of using a traditional "in/out tray" system.
At the end of the month, the professor would remove the bottom half of the pile and begin working through the papers again. This makes sense to an extent, but I suggest it only works for short term items. Longer goals and strategic aims cannot be simply forgotten and I think simply dismissing paperwork might only work in academia too.
The second was centered around creating processes and knowledge bases. I really enjoyed this section of the talk as it got me thinking about how I could improve The Codhead Club, a club for techies in Yorkshire & Humberside who want to meet up and do tech for good projects, that I started but also how I could improve my own life via automated processes and claw back time for important tasks.
One of the key points of this section was to start at the end of the process. What is the outcome? Then move to the start. What does the process do? Then fill the middle. It doesn't need to be complicated, but it does need to be logical.
Paul also asked "What happens if there is no process?". Great question. There are many companies out there who won't have a Cyber Security Breach process, a "Global Emergency" policy or a "Nuclear War" policy or even thought about smaller things, such as power not being available, being sued, robbed or even ensuring temporary staff if someone is off ill.
After three wonderful talks, it was time for lunch. I made my way over to Canham Turner and got in the queue. The food looked delicious and I have to say the Brie and Mango pockets were absolutely divine.
While I was eating, I noticed a catering staff member I'd got friendly with during my time at University. She noticed me to and popped over quickly, giving me a bit of cheek "I knew you'd be hear if there was a free meal" she said. I rolled my eyes and smirked, quipping back "I'm just here to annoy you!". We became friendly after she noticed that I was conning loyalty stamps out of the Library cafe team to get free coffees. It started out as a bit of a test to see if I could do it, a little social engineering never hurt anyone, right? What became one free coffee turned into several before it was noticed. Then, of course, the ribbing started. Everytime I went for a coffee after that some sort of comment was made. It still makes us laugh, even now.
When I went to see Rob to get the book signed, he was sat with Warren Viant who suggested that I was a Groupie for Rob. I'll perhaps give the traditional defintion of groupie a miss, but I do think it's better to look up to people like Rob than say, the Kardashians or similar. In any event, I was successful in my mission to get the book signed:
Session 4: Why don't people seem to be able to diagnose problems these days? by Richard Fennell
After lunch, coffee in hand. I headed for Richard Fennell's talk, although I was somewhat disappointed Rob Miles talk was on at the same time as his talks are usually very good fun.
Richard's talk echoed a lot of what Paul had mentioned in his talk in that problem solving and diagnosis follows a clearly defined process - which is why processes are important. This was interwoven with tales of Richard's younger years working in I.T which were interesting to hear.
The biggest takeaways I took from Richard's talk was firstly to get users/customers to try and self-diagnose the problem they're facing. Richard did this via having customers draw out the problem they were having and faxing it to him, by which time they would have solved the problem themselves; obviously now he uses templates on Github issues; and secondly to ensure logs and insights are giving the most information they can so that if a problem does need resolving, logs can be looked at with ease.
You can find a copy of Richard's presentation here. He can also be found on Github and Twitter.
Session 5: State Management in Blazor by Don Wibier
The final session of the day was on state management in Blazor by one of DDD's Sponsors, DevExpress who sent along dutch resident Don Wibier. It's been a long time since I heard a dutch accent, so it was lovely to hear one again (for those who don't know, I used to live in the netherlands. Here are some photos of my last trip there).
Don did an amazing job presenting different state management techniques, demonstrating the code and explaining why each technique was progressively better.
The techniques were:
1) Cascading State Parameter
2) State Machine
3) MVVM Design Pattern
There was also a technique which wasn't presented, the "Flux pattern" which I have not heard of previously. It can be found at https://github.com/mrpmorris/Fluxor
If I had to provide a critique of Dons talk, it would be that there was a very heavy reliance of DevExpress tooling but they're the sponsor so, of course they're going to try and drive a few sales.
Don can be found on Github, Twitter and on DevExpresses blogs.
Other talks and resources
I asked on Twitter for other speakers to share their talks and resources, a number did. They're linked below but I didn't attend their talks so I can't comment further but definitely check them out.
- PodcasterJay - Empathy, Sympathy & Compassion
- Andy Clark - When Microservices Go Bad
- Annie Talvasto & Karl Ots - Securing Container Apps - Why & How
- Peter Bull - Modern .NET and WPF
A few other people have blogged about DDD as well, so be sure to check out their blogs -
- Rob Miles - DDD North in Hull was Completely Wonderful
- Craig Pickles - A Day at DDDNorth Developers Conference in Hull
- Ian Nelson - DDDNorth 2022
Unfortunately, the day did need to come to an end. After Dons talk the only thing left was the prize draw and thanks before everyone left. After lots of cheering and clapping for the winners, and snagging some github stickers and an azure pin. I headed out into the rain for the brief walk home.
All in all, it was a great day out learning from others in the industry and I'm looking forward to attending more in the future. I even hear there might be plans to get a DDD on Microsofts' Campus in Reading which would be well worth attending (providing there was ample chance for Microsoft merch and a few sneak previews!)
If you want to connect with me, I can be found on Twitter, Linkedin, Github or you can find me via The Codhead Club and our discord. I'd be happy to have a chat!