Shahab Ganji
Lead Coding Architect, SQUER Solutions GmbH
Tulln, Austria
Actions
Shahab is a seasoned software engineer with more than 20 years of experience, specializing in software architecture and event driven systems. He thrives on challenges and enjoys mentoring others. With excellent communication skills, he fosters autonomous teamwork and emphasizes respect within the team. Embracing change is his motto, advocating for collaborative environments where everyone's contributions are valued.
Area of Expertise
Topics
Roslyn 101: Source Generators, Diagnostic Analyzers and CodeFix Providers
Have you ever spent so much time writing boilerplate code? Or debugged code and wished there was a hint from the compiler? Well, .NET Source generators and Diagnostic Analyzers are here to help you out! In this session, we will demystify Roslyn Compiler APIs, a powerful toolset that allows you to generate code at compile time and analyze your codebase for potential issues.
Through a practical example, we are looking into how to design and create a source generator and what are the best practices for them, how we could avoid reflection and more. You'll learn about syntax trees, semantic models, and symbols. We'll create diagnostic analyzers helping our developer team to catch gotchas early, and we will provide Code Fix Providers suggesting alternative approaches for already written code to encourage best practices in our team.
This session is designed for intermediate to advanced .NET developers, team leads, and architects who want to improve developer experience and code maintainability.
By the end of this session, attendees will have a solid understanding and practical knowledge of how to leverage Roslyn Compiler APIs to automate code generation, enforce coding standards, and enhance the overall development experience.
Hands-on: Roslyn
We as developers use Compilers and IDEs the most during our day-to-day job. They help us navigate, write and refactor code efficiently and focus on providing value for the business. However, the general toolchain lacks domain-specific knowledge. Roslyn, the .NET Compiler Platform, allows extending its capabilities by providing additional context, bringing even more productivity to the team!
Diagnostic Analyzers and Code Fix Providers are two components that shorten the feedback loop for developers to catch and fix potential issues already at design-time. Source Generators delegate infrastructural plumbing to the compiler by auto-generating boilerplate code, saving developers’ precious time. Additionally, source-level interception can replace reflection-based dynamic code to enable Native AOT (ahead-of-time compilation) support.
You will leave this workshop with hands-on experience and a solid understanding of the Roslyn APIs which helps you to bring context-aware developer experiences to your teams, whether you are building applications or libraries.
Agenda
- Basics of metaprogramming with Roslyn
- Understanding Syntax Trees and Semantic Models
- Incremental Source Generators
- C# Interceptors
- Diagnostic Analyzers
- Code Fix Providers
- Code Refactoring Providers
- Completion Providers
- Testing and Debugging
- Publishing as NuGet package
- Tooling
- Real-world use cases from the ecosystem
- Where to go next
Target Audience
You, who are familiar with C# and are enthusiastic to bring even more integration with Roslyn into your daily development experience.
Prerequisites
- Laptop
- Latest .NET SDK
- Your preferred IDE
- Rider (recommended)
- Visual Studio
- Visual Studio Code
- Access to NuGet.org
Hands-on: Roslyn Source Generators
In today’s fast-moving world of software development, in order for engineers to be able to focus on the business rules and domain logic, it is imperative to delegate infrastructural plumbing to the compiler. As C# coders, we have the advantage of utilizing Roslyn to generate such boilerplate code. Additionally, source-level interception can replace reflection-based dynamic code for trim-friendlier applications.
At the end of this workshop, you will have hands-on experience of how the .NET ecosystem employs Source Generators for high-performance solutions and a solid understanding of how frameworks like ASP.NET Core use Interceptors to enable Native AOT (ahead-of-time compilation) for Minimal APIs.
Agenda
- Basics of metaprogramming with Roslyn
- Understanding Syntax Trees and Semantic Models
- Incremental Source Generators
- C# Interceptors
- Testing and Debugging
- Publishing as NuGet package
- Tooling
- Real-world use cases from the ecosystem
- Where to go next
Target Audience
You, who are familiar with C#, are enthusiastic about performance optimization and interested in how to use Roslyn in your day-to-day development experience.
Prerequisites
- Laptop
- Latest .NET SDK
- Your preferred IDE
- Rider (recommended)
- Visual Studio
- Visual Studio Code
- Access to NuGet.org
Create a Tic Tac Toe game and learn about Event Sourcing
Living at the moment is great... until the moment throws a production error and your logs say: ¯\_(ツ)_/¯
Traditional systems forget the past. Event Sourcing doesn’t. It captures every change like a journal, making debugging, audits, and insights way easier, and sometimes even fun. And it doesn’t just give you those benefits, it brings context to your moment, something that matters not just in software, but in life too.
We’ll walk through the core concepts—commands, events, read models, projectors, event store, and see how they come together in a real-world application. And yes, there will be live coding, because there’s nothing like seeing it all unfold in action.
If you’ve ever been curious about Event Sourcing but found it a bit intimidating, this session is for you. It’s all about clarity, practical insights, turning facts into code, and maybe a few dad jokes along the way.
Logs Don’t Have to Shrug: A Practical Guide to Event Sourcing
Living at the moment is great—until production throws an error and your logs shrug back: ¯\_(ツ)_/¯
Traditional systems forget the past. Event Sourcing doesn’t. It records every change like a journal, making debugging,
audits, and insights much easier—and sometimes even fun. But beyond the benefits, it also comes with real trade-offs
every developer should know before adopting it.
In this session, we’ll explore the core building blocks of event-sourced systems—commands, events, read models,
projectors (reactors), and the event store—and see how they fit together in practice. We’ll unfold practical patterns by
applying them to a live-coded Tic-Tac-Toe game, step by step.
What you’ll learn
• Develop a clear mental model of Event Sourcing and recognize when (not) to use it
• Apply practical patterns immediately in your own systems
• Understand both the superpowers and the pitfalls of event-sourced architectures
Anyone (backend developers, cloud developers, architects) who is curious about event-driven systems and wants to move
beyond the theory into real-world applications. No prior Event Sourcing experience required—just curiosity and maybe a
sense of humor.
Everything about Configuration and Secret management in .NET for all of us!
We all have dealt with configurations, secrets, and settings in our applications and projects.
Ever wondered how they actually work in .NET and how could you leverage them to your benefit? Storing secrets in code or
configuration files is a common mistake that can lead to security vulnerabilities. So how can we manage them correctly
and prevent leaking secrets?
This talk will guide you through how configuration works in .NET, what you should and shouldn't do, and how you can use
the power of the cloud to keep your secrets safe by looking into the external configuration store pattern!
In this talk, we will cover the following topics:
- The importance and basics of configuration
- The Options pattern and how it helps to create a robust configuration system
- Validating your configuration and settings
- What is the External Configuration Store pattern
- How to use Azure Key Vault to store your secrets
- How to use Azure App Configuration to store your configuration
- How to use Managed Identities to securely access your secrets
- Other tips and tricks to keep your configuration safe
And there will be live coding, because there’s nothing like seeing it all unfold in action.
This session is for anyone who wants to learn more about configuration and secret management in .NET, whether you're a
newbie or an experienced developer.
Kafka through the lens of .NET
So you want to build an event-driven system and wonder how to put your data in motion?
Well, Kafka is one of the answers! With its rich ecosystem, it will help you to achieve this goal.
Through patterns and examples, we will look into building blocks of Kafka, be it records, partitions, (de)serialization,
schema registry and kafka streams, to libraries and frameworks that are existing for it in the .NET ecosystem.
This session is designed for .NET developers, team leads and architects who want to learn how to use Kafka in their
applications. By the end of this session, you will have a solid understanding of the basic concepts of Kafka and how to
use them in your .NET applications.
Building your own Event Sourcing System With Azure Cosmos DB
Event sourcing and Event-Driven Architectures are great ways to scale your system, bringing scalability, elasticity, and resilience within today's software systems. Azure Cosmos DB is a globally distributed, multimodel and scalable database.
In this session, we will learn and examine the intrinsic details of Event Sourcing and how we could leverage Azure Cosmos DB to achieve it. We will examine how to store events, getting states back, creating read models to satisfy queries, and how to propagate necessary data in near real time, as events are happening, to other parts of the system.
Compiler is your friend! Empowering developers with Roslyn
Compilers are the core component of every programming language we use to develop applications, and letting them do the
repetitive work, especially if it’s something that multiple developers need to do. You’ll save time and reduce errors, making your workflow smoother and more efficient. Plus, onboarding new developers and imposing programming
patterns and guidelines can take a good amount of time from your team.
Roslyn with its rich APIs is helping us to tackle these challenges at compile time. In this session, we will investigate Compiler APIs from Roslyn and how they assist to create Source Generators, Semantic Analyzers and Code Fixers tailored for our team.
Building Event-Driven Microservices at scale with Azure Cosmos DB
The most prominent shift we've observed in the field of distributed systems over the last decade is probably the transition from traditional synchronous integrated systems to message-driven means. This change is a logical response to the high demands for scalability, elasticity, and resilience within today's software systems. Regardless of how overwhelming the array of message-based options may seem, Azure Cosmos DB serves as an incredible solid backbone for most of them, whether utilized as a transactional outbox or a fully-fledged event store in the context of event-sourcing. By diving deeper into real-world experiences, we will discover the mechanics of how Cosmos DB can guarantee nearly infinite scalability if you follow a few basic principles and patterns to efficiently model your data. While Cosmos DB should not be considered as another silver bullet, this talk will teach you why you should certainly keep it as a prominent tool in your toolkit when it comes to building event-driven systems at scale.
.NET DeveloperDays 2025 Warsaw Sessionize Event
Microsoft MSFarsi Talk - 2025 User group Sessionize Event
Microsoft Zero To Hero Community - 2025 User group Sessionize Event
Swetugg Stockholm 2025 Sessionize Event
Øredev 2024 Sessionize Event
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top