Maarten Balliauw

Information & Communications Technology

.net .net core Azure JetBrains Software Architecture Web Web API

Antwerpen, Flanders, Belgium

Maarten Balliauw

.NET and web. Works at JetBrains.

Maarten Balliauw loves building web and cloud apps. His main interests are in .NET web technologies, C#, Microsoft Azure and application performance. He is Developer Advocate at JetBrains. He's an ASP Insider and former Microsoft MVP. Maarten is a frequent speaker at various national and international events and organizes Azure User Group events in Belgium. In his free time, he brews his own beer. Maarten's blog can be found at http://blog.maartenballiauw.be.

Current sessions

Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos speaker

After buying a set of Sonos-compatible speakers at IKEA, I was disappointed there's no support for playing audio from a popular video streaming service. They stream Internet radio, podcasts and what not. Well, not that service I want it to play!

Determined - and not knowing how deep the rabbit hole would be - I ventured on a trip that included network sniffing on my access point, learning about UPnP and running a web server on my phone (without knowing how to write anything Android), learning how MP4 audio is packaged (and has to be re-packaged). This ultimately resulted in an Android app for personal use, which does what I initially wanted: play audio from that popular video streaming service on Sonos.

Join me for this story about an adventure that has no practical use, probably violates Terms of Service, but was fun to build!


Debugging Tips and Tricks in Rider

When I started software development, I was writing “echo” statements in code to see what was happening. We’re beyond that era, but do we know how to use the debugging tools available to us? In this talk, we’ll see how we can greatly improve our debug-fu, and tour most of the debugger tools available in JetBrains Rider. A practical, demo-driven session with tips and tricks on how to let tools help us make troubleshooting and finding bugs much easier!


Building a friendly .NET SDK to connect to Space

Space is a team tool that integrates chats, meetings, git hosting, automation, and much more. It has a HTTP API that lets you integrate third party apps and workflows. That API is huge, though!

In this session, we'll focus on just the API. You will see how we built the .NET SDK for Space, and how we make that massive API more digestible. You will see how we used code generation, and various C# language features, to incrementally make the API feel like a real .NET SDK.


Exploring .NET’s memory management – a trip down memory lane

The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!


Approaches to application request throttling

Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...

In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.


Become a productive .NET developer with JetBrains Rider

With .NET Core, an explosion of .NET IDE's happened! There's good old Visual Studio, but also VS Code and JetBrains Rider. In this talk, we'll dive into the latter. We'll explore navigation, automatic inspections and quick fixes, code generation, built-in tooling like version control integration and local history and look at the special scenario's the debugger has to offer, like conditional breakpoints. Come to this session to learn about this new (and fast!) kid on the block and learn plenty of tips & tricks to enhance your development productivity.


Microservices for building an IDE – The innards of JetBrains Rider

Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!


Indexing and searching NuGet.org with Azure Functions and Search

Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type name.

Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result. Expect code, insights into the service design process, and more!


Past and future events

See my blog for previous talks

31 May 2018 - 2 Jun 2018