NDC London 2022 Highlights: CUPID, Dylan Beattie and more!
Arjun Aravind • 16 May 2022 • 7 min read Last week, I had the good fortune of attending NDC London in its entirety and it was amazing!When my manager told me that I'd be attending the conference, several weeks ago, I was excited for a multitude of reasons:-
- I'd never attended a conference before!
- I was going to be surrounded by all kinds of software engineers from various technical backgrounds.
- It was an all-expense-paid trip to London (crazy!).
- And, most importantly,..............FREE SWAG!
As you can see, I was pretty hyped for it.
---------------
The majority of the talks I attended were really good and a few were a little hit-and-miss. From what I gathered from the other attendees, it was about 65-35 in terms of good and bad talks.
In this article, I'll be briefly writing about the talks I really liked and memorable events (one of them being a bomb scare, if you can believe it) that happened over the course of the 3-day conference.
- Note: There were multiple talks all happening at any given point in time. I've only written about the ones I went to.
Alright, let's see what happened.
CUPID
"CUPID - for joyful coding" was the name of a talk given by Daniel Terhorst-North on CUPID. According to Mr North, CUPID is a set of properties or benchmarks that we can adhere to, while coding, to make our codebase much more readable.
This was one of my favourite talks because of how thought-provoking it was!
Mr North proposed CUPID as an alternative to the SOLID principles that we're all familiar with. He argued that a codebase must be a "joy" to read for other developers, especially newcomers.
He mentioned that following SOLID principles while coding doesn't necessarily guarantee a "joyful" codebase.So what does CUPID stand for, you ask?
He added that SOLID principles might be more geared towards enabling complex team dynamics in a company rather than readability of the code itself.
- C - Composability
- Any software or module must be small, easy to learn and not have too many features. This increases the chance of it being used by other softwares or modules.
- U - Unix Philosophy
- Any software must do just one thing and do that well. Mr North distinguished this from the SOLID-related 'Single Responsibility Principle' by mentioning that SRP focusses on how code changes whilst this focusses on what it does.
- P - Predictability
- Softwares should be deterministic, consistent and behave as expected. Observability plays a key role in this.
- I - Idiomatic
- When writing in a language, follow best practises, idioms and common patterns adopted by that language's community. This makes the codebase more familiar to newcomers coming in.
- D - Domain-based
- Try to make sure that the naming of functions, variables or anything in the codebase uses the same terminology used in the real-life use-case (or domain) that the software has been designed for.
You can read more about CUPID here.
An eventful first evening....
It's important to note that the conference was held at the Queen Elizabeth II centre in Westminster, right next to the houses of Parliament in London.
Fancy!
Around 3:30PM on the first day, an announcement was made informing occupants of the centre that everyone needed to evacuate immediately as a fire had been detected.
When we exited, we noticed an extremely large police presence outside the centre, which was super weird. What was weirder was that the police quickly cordoned off the entire area.
The entire street, along with the conference centre, was cordoned off.
Later on, a tweet by the Westminster Police mentioned that a "suspicious vehicle" had been sighted in the area. The police also carried out two controlled explosions, which we heard, as part of their checks on the vehicle.
Fortunately, the police seemed to be on top of the situation and all was well.....except that the rest of the talks were mostly cancelled for the day!
Memorable first conference, right?
Failure Is Always An Option
This was the name of a talk given by Dylan Beattie delving into how some organisations have approached building fault-tolerance into their systems. I'm glad I decided to go to this one because it was the highlight of the conference for me!
I think what made this talk really enjoyable was the fact that Mr Beattie interspersed the whole thing with humour and fascinating stories.
Taking some case studies such as the Apollo and Challenger space programs, Mr Beattie illustrated just how much effort had been put into making those machines truly tolerant to failure. And when I mean "tolerant", I mean having backup plans for backup plans!
Mr Beattie suggested that a good way, to foresee failure in a system, would be to view software as not just the running of the application itself.Mr Beattie also illustrated how users can utilise software in ways that developers can never foresee by describing how people in Kenya invented an informal e-banking system using mobile minutes. By the way, if you haven't heard about this before, take a look!
Instead, if we saw it as a combination of the application, the people who are using it and the reasons for which they are using it, we could more easily figure out where it may go wrong.
Dylan Beattie and the Linebreakers
Oh man, I definitely have to mention this!
So, as I got to know during this conference, Dylan Beattie is a fan of rock and is a proper musician himself. He's part of this band called 'Dylan Beattie and the Linebreakers' who perform programming-themed parodies of famous songs!
It sounds nerdy as hell but they were actually good! Some of their covers really got me singing along; they had a song titled 'DMCA' (in the tune of 'YMCA' by Village People) and there was another one titled 'We're Gonna Build a Framework' (based on Billy Joel's 'We Didn't Start The Fire'). Good stuff.
Silver Bullet Syndrome - Part 2
This was a talk given by Hadi Hariri as a 'sequel' to one of his talks from several years ago.
This was mostly a humorous 'rant', as Mr Hariri himself described it, on how developers love to create abstractions on top of abstractions and how these abstractions lead to problems which, in turn, lead to even more abstractions being created!
To be honest, even as a rant, it did hit a little close to home! As developers, we do subconsciously like to solve interesting problems and create elegant, if sometimes unecessary, abstractions.
Watch the original to get a gist of what this talk was like!
Concurrent Affairs
This talk by Kevlin Henley was extremely informative and super funny!
It was interesting because Mr Henley talked about the various constructs, available in programming languages, which can be used to enable concurrent programming. A curious thing that I learnt was that most of these constructs, that we consider "modern", were described years ago in older languages.
I feel like I'm not doing full justice to his talk as there were just so many engrossing things he talked about! Here's an older version of the talk that you can check out, I highly recommend it!
These talks were fascinating as well!
While the talks I mentioned above were more theoretical, the ones I've listed below were very technical and instructed attendees on how to solve specific problems.
I didn't want to write about these in detail as they covered a lot of technical concepts. I have also included links to the slides wherever possible.
- 'Track database changes with Apache Kafka' by Francesco Tisiot
- This talk provided some really useful information on how we can use Kafka to notify other services whenever something in a database changes.
- This was really interesting because there is no actual API for this that databases expose. Rather, we make use of a low-level piece of code present in most DBs.
- 'Commodore 64 Emulation in JavaScript' by Imran Nazar
- I couldn't find the actual slides, but the link given is similar to the one I saw.
- This was an inspiring 'lightning talk', which is one where the speakers have a hard time limit of 15 minutes. Mr Nazar demonstrated a Commodore 64 emulator that he had built.
- By 'emulator', it wasn't just something that had a UI, that took an input and spit something out using an internal 'if' statement or something; this was an actual, virtual "computer" with an architecture that had been built in JavaScript. So cool!
- 'Observable Web Applications' by Todd Gardner
- The speaker talked about how we can use native Javascript hooks to track errors in the browser and how we can utilise tools like 'Core Web Vitals' to monitor page performance.
- 'GraphQL Observability' by Michael Staib
- This was a talk on why it's a bit difficult to introduce observability in GraphQL-based applications. The speaker also mentioned how we can use OpenTelemetry for this purpose.
---------------
Right, I hope you guys found all these descriptions intriguing enough that you decided to take a deeper dive into these topics.
I'd like to thank all these wonderful speakers for making the conference absorbing and for providing me with some new perspectives on computing in general. Cheers!