Home GOTO Experts Adam Furmanek

Adam Furmanek

Software Developer, Blogger, Public Speaker, Book Writer

I am an internationally recognized consultant, software architect, and book writer with over 15 years of experience in software architecture and development across a range of domains. In my career, I worked with all layers of the software engineering and multiple types of applications, including logistics, e-commerce, machine learning, data analysis, and database management.

I am always interested in digging deeper, exploring machine code, and going through implementation details to better understand the internals of the technologies I use every day. That's why I like debugging, decompiling and disassembling the code to understand memory models, concurrency problems and other details hidden deep inside.

In my free time, I play ping-pong, watch Woody Allen's movies and blog stuff at http://blog.adamfurmanek.pl

Upcoming masterclasses featuring Adam Furmanek

Understanding Windows and .NET through debugging

Debugging is hard to do and hard to learn. Each bug is different, and there is no single path to learn how to tackle memory leaks or concurrency issues. It also requires an understanding of multiple software layers, starting with C#, through intermediate language, down to the operating system, and the machine code level. In this workshop, we'll see .NET under the hood. We will use debuggers to understand type safety, memory management, or concurrency primitives. We will learn how to debug the platform when something goes wrong.

Objectives:

  • Understanding of Windows and x86 CPU architecture, how they work together and how they are used by .NET platform.
  • Understanding of various .NET mechanisms, memory structures, exception handling, asynchronous programming.
  • Common debugging scenarios with WinDBG, including memory management, concurrency, garbage collection.
  • Tools helpful for post-mortem debugging and investigation.

Requirements:

  • Windows 10 running on x86_64 architecture
  • Visual Studio 2019
  • .NET Core 3.1.101
  • .NET Framework 4.8
  • dnSpy
  • WinDBG + configured symbols + configured SOS for all .NET environments
  • git
Tuesday Sep 29 @ 09:00 | Copenhagen, Denmark

Reserve your spot now

Understanding async machinery down to a single detail

We all use asynchronous code and we have some understanding of the machinery behind it. It's time to see how it works and learn why it's hard to synchronously wait for asynchronous code, how to wait for async void methods, or how to debug deadlocks. We will see the code generated by the compiler, understand synchronization contexts and integration with TPL library, reimplement part of the mechanism to fix deadlocks, or just play with internals to understand them better.

Objectives:

  • Understanding async state machine
  • Learning about synchronization contexts and how they differ between console, ASP .NET, ASP .NET Core, or desktop applications
  • Implementing custom primitives for better code control
  • Awaiting async void methods
  • Capturing all out-of-band exceptions
  • Implementing custom tasks or synchronization contexts

Requirements:

  • Windows 10 running on x86_64 architecture
  • Visual Studio 2019
  • .NET Core 3.1.101
  • .NET Framework 4.8
  • dnSpy
  • WinDBG + configured symbols + configured SOS for all .NET environments
  • git
Monday Sep 28 @ 09:00 | Copenhagen, Denmark

Reserve your spot now

Browse all experts

Here