Pages

Sunday, October 26, 2025

NDC Porto 2025 - Filled to the Brim

Another milestone achieved! After following them for years, I finally made it to my first NDC conference. What better first one than NDC Porto? This conference was special in multiple ways. It focused on workshops, it was a conference from a different community where I didn't know anyone yet, and it was placed in a beautiful city where I haven't been before and that invited exploring.

 

Arriving in Portugal 

There weren't too many feasible travel options, so I had to get up in the middle of the night when I usually would just go to bed. On the upside, it also meant I arrived already around noon. This meant I could not only catch a nice lunch, but also take my time to finalize preparations for my own workshop taking place the next day before heading out to get a first impression of Porto. What a beautiful, chill city this is - I really enjoyed the vibes, the friendly folks, the amazing food.

Whenever I'm at conferences, I like to check in with fellow speakers and participants early. This time, as I didn't know anyone yet, I realized once again how hard it is to get into contact with each other. This is where speaking shines with a usually hidden quality: you're having something in common with other speakers, you're usually connected through certain channels upfront, and you're usually staying at the same hotel so it's rather easy to meet each other at the hotel bar. This time, my accommodation seemed not have any other speakers hosted, though. I struggled to connect - a great reminder how I felt before becoming a speaker, and a great reminder to ourselves to make conferences a welcoming space, especially for newcomers.

In the end, I decided to use this first day as personal time off to accommodate. Probably a good idea, given how busy the last months were.

 

NDC Porto Conference Days 

The first conference day arrived, and the first challenge for me was to get to the venue in good enough shape - a longer walk combined with humid weather left me sweating. Well, that's one of the struggles of being a speaker. Good thing my workshop was scheduled for the afternoon and I had time to compose myself.

After getting some really nice swag (a proper backpack!) and grabbing some black tea to wake up my brain, it was time for the opening keynote: "Machines, Learning, and Machine Learning" by Dylan Beattie. Dylan reminded us how technology can make barriers to the meaningful things easier. Yet how should this work when we introduce randomness into the system? Reality is not deterministic, rather probabilistic - as is what we call "AI" nowadays. Yet it's here, so we have to decide for ourselves what we are going to do about it. Coding agents are good at problems we already solved. And still, when we integrate things like AI tools where the outcome is not guaranteed, we're in trouble - as variable-ratio reinforcement is highly addictive as we know from gambling and social media. Also, turning little programs into useful products (and knowing the difference between the two) will always need the human in the loop. Dylan left us with this thought: learn the foundations, learn to spot bullshit, and in best Douglas Adams manner: don't panic.

After the morning keynote, I joined Ardalis (Steve Smith)'s workshop "Clean Architecture for ASP.NET Core in Two Hours!". Two hours was indeed a challenge for so much content! We didn't have much time for exercises, yet Ardalis left us with a lot of material to study further at home. He walked us through a brief history of how software architecture evolved, presented the principles of clean architecture and showcased how these could look like for .NET projects. This was especially interesting for me as I'm now working on a product where .NET makes a big part of the tech stack. Check out Ardalis' clean architecture NuGet template to use as a starting point with ASP.NET Core.

After delicious food and first conversations with fellow participants, it was time for my own workshop in the afternoon: "Secure Development Lifecycle Applied - How to Make Things a Bit More Secure than Yesterday Every Day". Giving this edition was a special occasion for me in multiple ways. First, this was a four hour version of my workshop. Second, the workshop room was far from usual - Alfândega Porto Congress Centre's Noble Hall is literally a huge hall in a historical building turned into a room for workshops. Third, we improvised to make the rather fixed two-person table setup work and still have meaningful group exercises. And finally, it showed me once more that all the preparation in the world cannot foresee everything. It's still good to be as prepared as possible to prevent things that are preventable, and have certain fallbacks in place - just in case. And yet, sometimes you learn right there in the moment. In this instance, this meant that people had to spend more time on setting things up as I intended - good thing we had more time to practice anyways! All worked out in the end, and I learned my lessons for the next editions of this very workshop. Also, it seemed like the majority of folks had fun and gained value out of the session - at least based on the feedback of them coming back after a half hour break in between, and the thoughts they left with me in the retrospective.

Many folks went to an organized wine tasting dinner during the evening. As I don't enjoy wine as much, I had decided to opt for different plans and in the end cherished a calm evening with delicious comfort food at a really nice place.

The second conference day came, and now that my own work was done, my focus was fully on participating and learning. This day started with a keynote as well: "Imagine If We Made It Simple" by Guilherme "Gui" Ferreira. Gui made it clear that easy is not the same as simple. Easy is what you are familiar with without friction - this is very subjective. For simple solutions, however, you'll have to fight for all the time, as this means breaking our own addition to complexity. But simplicity is what makes the essential part, and what makes our systems reliable. Gui encouraged us to keep asking if there's a simpler way to do things, and to try things out - many decisions are indeed reversible. He also encouraged us to get rid of what we don't need, against our very much learned drive to continuously add things instead. Removing complexity and making things simpler, however, can be a massive game changer. A "no" today enables a "yes" tomorrow. Let's instead aim for sustainability on the long run, not only in our solutions, yet also for as humans. Anxiety, pressure and stress are narrowing our thinking, so we need to allow failure and also abort initiatives without retribution - and hence co-create the culture we need to really go for simplicity. Boring tech that we really master and understand for the win! This way, we can do more with less and really go far. Gui left us with this condensed message: focus on what matters, subtract the noise, and win space to master what's important. A lot of food for thought.

This conference had lots of interesting workshops to offer, and yet I simply had to pick those that seemed most fitting to my current work. On this day, I picked the full-day training "OAuth 2.0 Security Best Practices" by Philippe De Ryck. As many of us, I had worked and seen OAuth in practice - and yet, this topic has lots of depths to explore further. Not surprisingly, this workshop validated existing knowledge, and provided lots of further insights - including options I had never heard about before, like Demonstrating Proof-of-Possession (DPoP) for high-security APIs. Philippe went through a lot of material with us, demonstrating concepts with a really useful self-made simulator, and doing his best to engage the audience with quizzes and other exercises to allow us to test our newly found understanding. Pretty tough to do for such a complex topic, yet it worked. Still, my head was spinning after such a full day of complex content.

In the evening, everyone was invited to stay at the venue and enjoy the party with food, a pub quiz, music and karaoke. I found another participant who was there on their own, and once things grew loud at the party, we decided to call it a day and instead explore Porto by night instead. This way, we enjoyed lots of views we might not have seen otherwise - what a great way to end the day!

The last conference day arrived, and yet again it started with a keynote: "The Power of Play" by Rob Conery. Rob showcased how people used play and playfulness throughout computing history to come up with great innovations. People coming together and finding joy in tinkering with things, in trying something to increase their own understanding. While play isn't always regarded as such, play is actually a pivotal thing to do - it's at the epicenter of innovations. Memes started this way. Flickr and Slack originated as a side effect from other endeavors. It's really about trying ideas and seeing which of them takes off. Most will actually fail, and that's totally fine - a few might stick in the end. Yet nonetheless, we're too often trying to replace fun and play with scrolling. We're busy all the time, right? So Rob reminded us to treasure the right now, go out and discover, make time to play. Even if it's a dumb idea - make time to do it anyways.

What better workshop to choose than another full-day security training by Philippe De Ryck? This one was a "Hands-on deep-dive into frontend security". This topic allowed for a few more exercises than the one yesterday, and it was yet again a great mixture of practice on known topics like UI redressing attacks and restricting framing, XSS (and why Angular does such an excellent job as a framework here), and CSP (and why it's generally such a great tool) with additional in-depth insights. If you have a chance to participate in one of Philippe's trainings, I can only recommend it.

And that was it for NDC Porto for me! My brain was fried after all the condense intake, my notes were plenty, and I could make a few new connections in this new community. It was definitely worth it.

 

More Reasons for Porto

A very dear former teammate lives very close to Porto, so we just had to use this opportunity to meet and spend time together. We had such a lovely evening together with his wife and a dear friend! Enjoying lovely homemade food, playing board games, reminiscing the time we worked together and catching up with all the things that changed since then. Many thanks for having me! It really filled my soul and heart.

One more day to spend in this beautiful city. Wandering the streets and enjoying the amazing urban street art. Visiting a few official sights. Just breathing in the atmosphere. Definitely enjoying the delicious tastes of the city. That's another aspect I love about speaking in different countries and cities: having the opportunity to explore the location and get a first impression. Taking some time off after a busy conference, calming down and being in the moment before everyday's busyness takes over again.

Thank you all for having me. 

No comments:

Post a Comment