In 2024

Testing applications with HTTP dependencies

September 25th 2024 NT konferenca 2024 Portorož, Slovenia

It's pretty common nowadays for applications to call one or more HTTP service as part of their functionality. In automated tests we want to mock those, so that the we can test the application in isolation. We will explore how to do that at 3 different levels: by mocking the `HttpClient`, by mocking the service class, and by mocking the HTTP service. By the end of the talk, you will learn when to choose each option and which tools you can use to do it.

Learn about .NET from Roslyn analyzers

September 23rd 2024 NT konferenca 2024 Portorož, Slovenia

Since .NET 5, the .NET SDK ships with a collection of Roslyn analyzers which inspect your code for different code quality and style issues. With each version, this collection grows. You can choose to ignore these issues. Or you can pay attention to them, learn something new about .NET or C#, and start writing better code because of it. In this talk, I'll choose a selection of reported issues in .NET 8 to present some not so obvious, but very useful .NET features. And hopefully convince you to not ignore the issues in the future.

What's new in C# 13

September 23rd 2024 NT konferenca 2024 Portorož, Slovenia

Since a new version of .NET is being released every autumn, C# has also adopted the same cadence. So, this November C# 13 is going to be released alongside with .NET 9. In this talk, we will take a look at its new features and how they will affect the code we will be writing (and reading) in the future. Wherever it is relevant, we will refresh our memory about the features of previous language versions, on which this year's features are based. As much as possible, we will try out the new features ourselves.

In 2023

What's new in C# 12

October 18th 2023 After NTK - Dev Edition Ljubljana, Slovenia

Since a new version of .NET is being released every autumn, C# has also adopted the same cadence. So, this November C# 12 is going to be released alongside with .NET 8. In this talk, we will take a look at its new features and how they will affect the code we will be writing (and reading) in the future. Wherever it is relevant, we will refresh our memory about the features of previous language versions, on which this year's features are based. As much as possible, we will try out the new features ourselves.

Using VS Code Dev Containers

September 26th 2023 NT konferenca 2023 Portorož, Slovenia

Setting up a working development environment on your local computer can often take quite some time nowadays. It becomes even more of an issue when you collaborate on multiple projects at once or when the developers on the project use different operating systems. In this talk, we will learn how this process can be simplified by using the Dev Containers extension for Visual Studio Code which uses a file with a description of the development environment to recreate it in Docker. The same file can also be used to set up a development environment in the cloud using GitHub Codespaces.

What's new in C# 12

September 25th 2023 NT konferenca 2023 Portorož, Slovenia

Since a new version of .NET is being released every autumn, C# has also adopted the same cadence. So, this November C# 12 is going to be released alongside with .NET 8. In this talk, we will take a look at its new features and how they will affect the code we will be writing (and reading) in the future. Wherever it is relevant, we will refresh our memory about the features of previous language versions, on which this year's features are based. As much as possible, we will try out the new features ourselves.

In 2022

Using GitHub Actions to build .NET projects

November 15th 2022 Ljubljana.tech Ljubljana, Slovenia

GitHub Actions can be a great choice for building and deploying code from GitHub repositories. This talk should help you get started using GitHub Actions for your .NET projects. We will look at the tools available, learn to understand and modify workflow files, check the actions available in the GitHub Marketplace, and create a simple custom action ourselves.

Model-View-Update pattern in .NET MAUI

September 27th 2022 NT konferenca 2022 Portorož, Slovenia

You might still remember the first .NET MAUI announcement when the MVU (Model-View-Update) pattern was introduced as an alternative to using XAML and the MVVM (Model-View-ViewModel) pattern for application development. Since then, .NET MAUI has been released. But we haven't heard much about the MVU pattern lately. In this talk, we will first compare the two patterns. Then we will look at the current state of the Comet library for developing .NET MAUI application using the MVU pattern and try to create a simple application with it.

Using GitHub Actions to build .NET projects

September 26th 2022 NT konferenca 2022 Portorož, Slovenia

GitHub Actions can be a great choice for building and deploying code from GitHub repositories. This talk should help you get started using GitHub Actions for your .NET projects. We will look at the tools available, learn to understand and modify workflow files, check the actions available in the GitHub Marketplace, and create a simple custom action ourselves.

Using GitHub Actions to build .NET projects

May 7th 2022 Global Azure 2022 Online

GitHub Actions can be a great choice for building and deploying code from GitHub repositories. This talk should help you get started using GitHub Actions for your .NET projects. We will look at the tools available, learn to understand and modify workflow files, check the actions available in the GitHub Marketplace, and create a simple custom action ourselves.

In 2021

Async streams in C#

October 20th 2021 .NET DeveloperDays 2021 Warsaw, Poland

To refresh our memory, we will first explain the benefits of using async streams and examples of available APIs. We will continue by creating an async stream implementation ourselves and look at the potential reasons for doing so. We will conclude by comparing async streams to observables from Reactive extensions.

Best practices for using async and await

October 19th 2021 .NET DeveloperDays 2021 Warsaw, Poland

The `async` and `await` keywords have been a part of the C# programming language for a long time. Despite that, they still hide pitfalls that not only beginners but also more experienced developers occasionally fall into. In this talk, I will present some of the most common mistakes we can make when writing asynchronous code and show ways to avoid them. Key topics: - `async void` is dangerous - avoiding deadlocks - synchronization context

Async streams in C#

September 27th 2021 NT konferenca 2021 Portorož, Slovenia

To refresh our memory, we will first explain the benefits of using async streams and examples of available APIs. We will continue by creating an async stream implementation ourselves and look at the potential reasons for doing so. We will conclude by comparing async streams to observables from Reactive extensions.

Best practices for using async and await

May 12th 2021 JetBrains .NET Days Online 2021 Online

The `async` and `await` keywords have been a part of the C# programming language for a long time. Despite that, they still hide pitfalls that not only beginners but also more experienced developers occasionally fall into. In this talk, I will present some of the most common mistakes we can make when writing asynchronous code and show ways to avoid them. Key topics: - `async void` is dangerous - avoiding deadlocks - synchronization context

What are Azure Static Web Apps?

April 16th 2021 Global Azure 2021 Online

Azure Static Web Apps are a service for hosting static web applications and their serverless backend. In the talk, I will introduce them in detail and compare them to Azure App Services. In the demo, I will use them for hosting a Blazor WebAssembly app with an Azure Functions backend. Before the end, I will mention the (current) limitations and consider when this form hosting might not (yet) be the right choice.

In 2020

What's new in C# 9?

November 25th 2020 NT Remote Online

Along with .NET 5, a new version of C# was also released. Although it's only been a year since the release of the previous version, multiple new features are being introduced. The most important ones are: - The main focus of this release is improved support for immutable types, provided through record types, with expressions and init-only properties. - Pattern matching is being extended with new pattern types. - Top-level programs and target-typed new expressions can reduce the boilerplate code needed in certain scenarios.

Best Practices for Nullable Reference Types in C#

October 21st 2020 .NET DeveloperDays 2020 Online

Of all the new features in C# 8, nullable reference types have the largest impact on our code. A year after the release we'll take a closer look at the feature. After covering the basics to refresh our memory, we'll move on to the challenges that the feature can impose, including: - Introducing nullable reference types into an existing codebase - Support in libraries - Advanced annotations - Support in Entity Framework Core

Best Practices for Nullable Reference Types in C#

May 20th 2020 NT Remote Online

Of all the new features in C# 8, nullable reference types have the strongest impact on our code. We will start the session with basics to refresh our memory almost a year after the release. Only then will we continue with the challenges which we might face when using the nullable reference types. We will cover the incremental introduction of the feature into our code, existing support in libraries, usage in combination with generic classes, and support in EF Core. We will conclude the session with an overview of Microsoft's plans for nullable reference types in the near future.

In 2019

What's New in C# 8?

October 24th 2019 .NET DeveloperDays 2019 Warsaw, Poland

With the release of C# 8, the long-awaited safe handling of null values in reference types has finally become a part of our favorite programming language. But that's not the only important new feature in this version. There's expanded support for pattern matching, asynchronous streams, default interface methods, and more. In this session, I will explain what all these features are and show you how they can be used with some sample code.

Architectural Patterns for Applications in the Cloud

October 14th 2019 MakeIT 2019 Portorož, Slovenia

As we have started migrating our applications to the cloud, microservices replaced multi-tiered architecture as the recommended choice. But is choosing the architecture really always that simple? The session covers the advantages and disadvantages of both architectural patterns and attempts to provide some guidance on how to choose the right one. It concludes with an overview of cloud services that can be used to host the applications depending on the architectural pattern they follow.

What's New in C# 8?

September 10th 2019 SLODUG Ljubljana, Slovenia

The long-awaited support for safer handling of null values in reference types is finally coming with C# 8. But that's not the only large new feature. The session covers all of its new features: expanded support for pattern matching, Asynchronous streams, ranges and indexes, static local functions and more.

What are Global Tools in .NET Core?

May 23rd 2019 NT konferenca 2019 Portorož, Slovenia

Global tools are a feature of .NET Core SDK 2.1 you might have overlooked. It's the infrastructure for simple distribution and deployment of command line tools. The session starts with an overview of how to find, install and use existing tools. It covers how to simply develop your own tool and publish it for others. It concludes with upcoming changes to global tools in .NET Core 3.0.

Architectural Patterns for Applications in Azure

May 22nd 2019 NT konferenca 2019 Portorož, Slovenia

As we have started migrating our applications to the cloud, microservices replaced multi-tiered architecture as the recommended choice. But is choosing the architecture really always that simple? The session covers the advantages and disadvantages of both architectural patterns and attempts to provide some guidance on how to choose the right one. It concludes with an overview of Azure services that can be used to host the applications depending on the architectural pattern they follow.

What's New in C# 8?

May 21st 2019 NT konferenca 2019 Portorož, Slovenia

The long-awaited support for safer handling of null values in reference types is finally coming with C# 8. But that's not the only large new feature. The session covers all of its new features: expanded support for pattern matching, Asynchronous streams, ranges and indexes, static local functions and more.

Architectural Patterns for Applications in Azure

April 27th 2019 Global Azure Bootcamp 2019 Ljubljana, Slovenia

As we have started migrating our applications to the cloud, microservices replaced multi-tiered architecture as the recommended choice. But is choosing the architecture really always that simple? The session covers the advantages and disadvantages of both architectural patterns and attempts to provide some guidance on how to choose the right one. It concludes with an overview of Azure services that can be used to host the applications depending on the architectural pattern they follow.

In 2018

Continuous Testing in .NET Core

May 23rd 2018 NT konferenca 2018 Portorož, Slovenia

How to configure a .NET Core project for continuous testing in Visual Studio 2017 and Visual Studio Code?

How Well Do You Know C#?

May 22nd 2018 NT konferenca 2018 Portorož, Slovenia

An overview of C# gotchas which might surprise even an experienced developer.

ASP.NET Core Development in VS Code

April 21st 2018 Global Azure Bootcamp 2018 Ljubljana, Slovenia

Visual Studio Code extensions and workspace configuration to make .NET Core development easier. It encompasses project creation, debugging, continuous testing, code coverage and Azure deployment.

In 2017

.NET Core - Is It Time?

June 23rd 2017 SLODUG Ljubljana, Slovenia

Overview of .NET Core and .NET Standard (1.x and 2.0), followed by guidance whether it is already time to start developing in them.

.NET Core - Is It Time?

May 15th 2017 NT konferenca 2017 Portorož, Slovenia

Overview of .NET Core and .NET Standard (1.x and 2.0), followed by guidance whether it is already time to start developing in them.

Azure Support in Visual Studio 2017

April 22nd 2017 Global Azure Bootcamp 2017 Ljubljana, Slovenia

An overview of Azure related features in Visual Studio 2017

What's New in Visual Studio 2017

March 7th 2017 Visual Studio 2017 Launch Ljubljana, Slovenia

New features and improvements in Visual Studio 2017.

In 2016

Best Practices for Using async and await

September 15th 2016 Cancel konferenca 2016 Ljubljana, Slovenia

What are the most common mistakes when using async and await, and how to avoid them?

How Will C# 7 Probably Look Like?

September 15th 2016 Cancel konferenca 2016 Ljubljana, Slovenia

New C# language constructs currently in development, which will probably be included in C# 7.

Best Practices for Using async and await

May 18th 2016 NT konferenca 2016 Portorož, Slovenia

What are the most common mistakes when using async and await, and how to avoid them?

How Might C# 7 Look Like?

May 17th 2016 NT konferenca 2016 Portorož, Slovenia

New C# language constructs currently in development, which might be included in C# 7.

Best Practices for Using async and await

May 16th 2016 NT konferenca 2016 Portorož, Slovenia

What are the most common mistakes when using async and await, and how to avoid them?

In 2015

Interactive UWP Applications

November 24th 2015 TechDays 2015 Ljubljana, Slovenia

How to make universal Windows applications more interactive by using tiles, toasts and push notifications?

Communication Between UWP Applications

November 24th 2015 TechDays 2015 Ljubljana, Slovenia

How can universal Windows applications communicate with other universal applications and desktop applications?

Diagnostic Analyzers in Visual Studio 2015

September 30th 2015 Cancel konferenca 2015 Nova Gorica, Slovenia

What are diagnostic analyzers, why would one need them and how to develop them.

Debugging in Visual Studio 2015

September 30th 2015 Cancel konferenca 2015 Nova Gorica, Slovenia

Practical overview of debugging features in Visual Studio 2015

What's New in C# 6

May 20th 2015 NT konferenca 2015 Portorož, Slovenia

Overview of changes in C# 6.

Diagnostic Analyzers in Visual Studio 2015

May 20th 2015 NT konferenca 2015 Portorož, Slovenia

What are diagnostic analyzers, why would one need them and how to develop them.

Visual Studio Community and Visual Studio 2015

January 27th 2015 TechDays 2015 Ljubljana, Slovenia

A short introduction to Visual Studio Community 2013, followed by an overview of new features in Visual Studio 2015: .NET Compiler Platform, C# 6, NuGet 3, Shared Projects and Smart Unit Tests.

In 2014

NuGet: Simplified Management of Libraries

September 18th 2014 SLODUG Ljubljana, Slovenia

An overview of NuGet, focused on package consumer's viewpoint, including a tutorial on publishing the first package in official NuGet gallery. It concludes with a broader view of NuGet ecosystem.

What's New for Developers in Windows 8.1 Update

April 9th 2014 NT konferenca 2014 Bled, Slovenia

Presentation of new features for developers in Windows 8.1 Update: universal project for Windows and Windows Phone, interprocess communication for sideloaded enterprise LOB Windows Store apps.

Effective Architecture of Modern Applications

February 25th 2014 Windows 8.1 Developers Contest Ljubljana, Slovenia

Architectural guidance for development of apps for Windows Store in Windows 8.1.

Make Your Applications Visible

February 25th 2014 Windows 8.1 Developers Contest Ljubljana, Slovenia

How to take advantage of live tiles to make your Windows Store applications more visible.

In 2013

What's new in Windows 8.1 development with samples

October 10th 2013 jesenska NT konferenca 2014 Ljubljana, Slovenia

Slides from my session on changes in Windows Store apps development in Windows 8.1 at NT conference 2014 autumn.

Data Synchronization: Practical guide to building smart Windows 8 applications

October 10th 2013 jesenska NT konferenca 2014 Ljubljana, Slovenia

Slides from my session on data synchronization and occasionally connected apps development for Windows 8 at NT conference 2014 autumn.

Windows Store LOB Apps in Business Environment

April 25th 2013 NT konferenca 2013 Bled, Slovenia

Slides from my session on LOB apps for Windows Store at NT conference 2013.

Building Connected Apps

April 23rd 2013 NT konferenca 2013 Bled, Slovenia

Slides from my session at NT conference 2013 Windows 8 and Windows Phone 8 precon track.

MVVM, MVP and MVC: Similarities and Differences

April 23rd 2013 NT konferenca 2013 Bled, Slovenia

Slides from my session on MVP, MVC and MVVM design patterns at NT conference 2013.

IoC: Useful Pattern or Unnecessary Complication

April 23rd 2013 NT konferenca 2013 Bled, Slovenia

Slides from my session on IoC basics at NT conference 2013.

In 2012

Developing Windows Store Apps

December 11th 2012 re//build/ Ljubljana, Slovenia

Introductory presentation about development of Windows Store apps.

Windows Store Apps Development Workshop

November 9th 2012 Wowzapp Hackathon Ljubljana, Slovenia

An introductory workshop to Windows Store apps development.

C#, XAML and MVVM: Toolset for Developing Windows Store Applications

October 22nd 2012 Bleeding Edge Laško, Slovenia

A presentation about the architecture of Windows Store applications.

What's New in .NET Framework 4.5

October 21st 2012 Bleeding Edge Laško, Slovenia

A presentation about a selection of new features in .NET 4.5: async/await keywords, portable class libraries and Workflow Foundation improvements.

Portable Class Libraries

September 25th 2012 Visual Studio 2012 Community Launch Ljubljana, Slovenia

A short introduction to Portable Class Libraries.

Windows Workflow Foundation (WF) in .NET 4.5

May 23rd 2012 NT konferenca 2012 Portorož, Slovenia

A presentation about what's new in Windows Workflow Foundation in .NET 4.5 from NT conference 2012.

Developing Metro Applications for Windows 8

May 23rd 2012 NT konferenca 2012 Portorož, Slovenia

A presentation on how to get started with development of Metro applications for Windows 8 in C#.

In 2011

Mission Possible: Reusing Existing Code in Metro Applications

September 30th 2011 Bleeding Edge Gozd Martuljek, Slovenia

A presentation about using existing .NET code in Metro applications for Windows 8.

The Windows API Code Pack: Add Windows 7 Features to Your Application

May 24th 2011 NT konferenca 2011 Portorož, Slovenia

A presentation about Windows API Code Pack from NT conference 2011.