# Jernej Kavka (JK) Author: Jernej Kavka Site: https://jkdev.me Description: Microsoft AI MVP - .NET, AI, and speaking ## About Jernej Kavka (JK) is a Microsoft AI MVP and Solution Architect focused on .NET, AI, and developer community talks. About page: https://jkdev.me/about Speaking page: https://jkdev.me/speaking ## Content policy - Use canonical URLs when citing posts. - Prefer recent posts when answering time-sensitive questions. - Summaries and excerpts are provided for retrieval; verify final claims against the linked article. ## Talks ### EF Core Bench Lab – A Peek into the Black Box Event: .NET Brisbane User Group Date: 2026-03-05T00:00:00.000Z Location: Brisbane, Australia URL: https://www.meetup.com/brisbane-net-user-group/ Tags: .NET, EF Core, Performance Summary: A practical performance deep-dive into EF Core internals, query costs, and benchmarking patterns. ### Speaking at DDD Brisbane 2025 Event: DDD Brisbane 2025 Date: 2025-12-06T00:00:00.000Z Location: Brisbane, Australia URL: https://www.dddbrisbane.com Tags: none Summary: Presented at DDD Brisbane 2025 ### Speaking at AgentCon - Brisbane Event: AgentCon - Brisbane Date: 2025-11-01T00:00:00.000Z Location: Brisbane, Australia URL: https://globalai.community/chapters/brisbane/events/agentcon-brisbane/ Tags: none Summary: Presented at AgentCon - Brisbane ### AI Hack Day Brisbane 2025 Event: AI Hack Day Brisbane Date: 2025-03-28T00:00:00.000Z Location: Brisbane, Queensland, Australia URL: https://aihackday.com/brisbane/ Tags: AI, Machine Learning, Azure Summary: No description provided. ### Speaking at Level Up Your Data 2024 Event: Level Up Your Data 2024 Date: 2024-11-25T00:00:00.000Z Location: Brisbane, Australia URL: https://levelupyourdata.com/conference Tags: none Summary: Presented at Level Up Your Data 2024 ### AI Hack Day Sydney 2024 Event: AI Hack Day Sydney Date: 2024-07-19T00:00:00.000Z Location: Neutral Bay, New South Wales, Australia URL: https://www.eventbrite.com.au/e/ai-hack-day-sydney-tickets-727321386847 Tags: AI, Machine Learning, Azure Summary: No description provided. ### AI Hack Day Melbourne 2024 Event: AI Hack Day Melbourne Date: 2024-07-12T00:00:00.000Z Location: Melbourne, Victoria, Australia URL: https://www.eventbrite.com.au/e/ai-hack-day-melbourne-tickets-727321868287 Tags: AI, Machine Learning, Azure Summary: No description provided. ### Speaking at Data and AI Bootcamp - Brisbane 2024 Event: Data and AI Bootcamp - Brisbane 2024 Date: 2024-05-18T00:00:00.000Z Location: Brisbane, Australia URL: https://brisbanebootcamp.com Tags: none Summary: Presented at Data and AI Bootcamp - Brisbane 2024 ### Speaking at NDC Sydney 2024 Event: NDC Sydney 2024 Date: 2024-02-12T00:00:00.000Z Location: Sydney, Australia URL: https://ndcsydney.com Tags: none Summary: Presented at NDC Sydney 2024 ### Speaking at NDC London 2024 Event: NDC London 2024 Date: 2024-01-29T00:00:00.000Z Location: London, United Kingdom URL: https://jkdev.me/speaking Tags: none Summary: Presented at NDC London 2024 ### Speaking at DDD Brisbane 2023 Event: DDD Brisbane 2023 Date: 2023-12-02T00:00:00.000Z Location: Brisbane, Australia URL: https://www.dddbrisbane.com Tags: none Summary: Presented at DDD Brisbane 2023 ### Speaking at Level Up Your Data 2024 Event: Level Up Your Data Date: 2023-11-20T00:00:00.000Z Location: Brisbane, Australia URL: https://levelupyourdata.com Tags: none Summary: Presented at Level Up Your Data 2024 ### Speaking at NDC Porto 2023 Event: NDC Porto 2023 Date: 2023-10-16T00:00:00.000Z Location: Porto, Portugal URL: https://ndcporto.com/ Tags: none Summary: Presented at NDC Porto 2023 ### AI Hack Day Sydney 2023 Event: AI Hack Day Sydney Date: 2023-09-15T00:00:00.000Z Location: Sydney, New South Wales, Australia URL: https://aihackday.com/sydney/ Tags: AI, Machine Learning, Azure Summary: No description provided. ### AI Hack Days @ Sydney, Brisbane and Melbourne Event: AI Hack Day Date: 2023-06-23T00:00:00.000Z Location: Sydney, New South Wales, Australia URL: https://aihackday.com/ Tags: AI, Machine Learning, Azure Summary: No description provided. ### AI Hack Day Melbourne 2023 Event: AI Hack Day Melbourne Date: 2023-06-23T00:00:00.000Z Location: Melbourne, Victoria, Australia URL: https://aihackday.com/melbourne/ Tags: AI, Machine Learning, Azure Summary: No description provided. ## Posts ### Celebrating 7 years at SSW! URL: https://jkdev.me/blog/celebrating-7-years-at-ssw Markdown: https://jkdev.me/blog-md/celebrating-7-years-at-ssw Published: 2023-01-03T00:00:00.000Z Tags: Anniversary, Gratitude Summary: Personal milestone post on seven years at SSW, career growth in .NET and Azure, and a community speaking journey. TL;DR: Personal update: seven years at SSW, growth into solution architecture, and continued focus on .NET, AI, and community speaking. Excerpt: It's a new year and time to celebrate my 7th anniversary at SSW! 🎉 I've had an amazing journey at SSW so far, and I'm looking forward to working here for many more years. Over the past seven years, I've had the opportunity to work in the Sydney, Melbourne, and Brisbane offices and have grown from a Windows Phone/Tablet XAML developer to a Solution Architect consultant specializing in .NET, EF Core, and Azure. I've even been awarded an Microsoft MVP status for AI! 💪 I want to give a big thank you to SSW's Chief Architect Adam Cogan for giving me a chance to work in Australia and for being a great mentor. I've grown both professionally and personally, and have become a better consultant and presenter because of you. During my time at SSW, I also became a permanent Australian resident (thank you, Penny and Ana!), plus I've had the chance to speak at numerous user groups and conferences.… ### Use Windows Subsystem for Android in Visual Studio URL: https://jkdev.me/blog/windows-subsystem-for-android-in-windows-11-in-vs Markdown: https://jkdev.me/blog-md/windows-subsystem-for-android-in-windows-11-in-vs Published: 2022-08-04T00:00:00.000Z Tags: Windows11, MAUI, Xamarin, Android Summary: Quick setup checklist for connecting Windows Subsystem for Android to Visual Studio with ADB for Xamarin and MAUI debugging. TL;DR: Enable WSA developer mode, run adb connect , and target the connected device from Visual Studio. Excerpt: This blog post is to summarize what you should do to run Windows Subsystem for Android in Visual Studio. If you need instructions on how to enable Windows Subsystem for Android in Windows 11, follow Windows Subsystem for Android in Windows 11. 1. From the Start menu, run Windows Subsystem for Android app 1. Under Developer , Enable Developer Mode (optionally enable automation dev) 2. Keep Developer settings open and open Windows Terminal and run: NOTE: It's if in PowerShell. 3. In Visual Studio switch to TIP: The IP usually is 127.0.0.1:58526 and you can try to run straight away to see if it works. NOTE: If you don't see IP, make sure Android subsystem is running. (if in step 2.1 you selected "As needed", you need to run at least 1 Android app) NOTE: If you get authentication error, you can ignore it. It will still work. ### Use Windows Subsystem for Android in Windows 11 (non-US edition) URL: https://jkdev.me/blog/use-windows-subsystem-for-android-in-windows-11 Markdown: https://jkdev.me/blog-md/use-windows-subsystem-for-android-in-windows-11 Published: 2022-03-30T00:00:00.000Z Tags: Windows11, Xamarin, MAUI, Android Summary: How to enable Windows Subsystem for Android outside the US region and use it effectively for Xamarin and MAUI development. TL;DR: Set region to US, enable WSA, and use it for fast Xamarin/MAUI debugging, then switch region back if needed. Excerpt: UPDATED: 04/08/2022 Updated screenshots and steps to reflect W11 Insider Preview on Release Preview. NOTE: This is for developers and users that I don't mind side loading Android apps. Recently, I managed to get Android working on my Windows 11 for Xamarin and MAUI development. Initially, I thought "Debugging will probably be somewhere between an emulator and an actual device", but I couldn't have been more wrong! The speed of running the application and debugging is incredible, making development on Android fun again. 😊 There is a catch for most people in the world... It's a US only feature... But don't worry! Let an Aussie help you set up without needing to be in the US in less than 10 minutes and no reboots! 😎 Ok, let's get started! 1. Open Windows Settings ( ) 2. Search for Region Settings 3.… ### Using AppSettings in Blazor WebAssembly URL: https://jkdev.me/blog/blazor-appsettings Markdown: https://jkdev.me/blog-md/blazor-appsettings Published: 2020-05-01T00:00:00.000Z Tags: Blazor, .NET Core Summary: How to load environment-specific appsettings.json in Blazor WebAssembly and access configuration values at runtime. TL;DR: Store appsettings in wwwroot and load configuration via WebAssemblyHostBuilder so environment values are available through DI. Excerpt: While client side Blazor technically isn't yet stable, I love working with it more than other web front end technologies. One significant hiccup I found while developing Cognitive Studio is having environment sensitive configurations for the application. I want my application to behave as an application that can live anywhere and is consistent with what we have in traditional .NET Core applications as much as possible. My current solution is going the official route for AppSettings in Blazor introduced in 3.2 Preview 4 and updated to Blazor 3.2 Release Candidate. Setup .NET Core Blazor app 1. Create appsettings.json and add it to wwwroot folder 2. Add any additional environment AppSettings like appsettings.Staging.json Use Configuration Blazor host already comes with configuration builder as part of and gets built as well as registered when the host is built.… ### EF Core Query Tags and Alternatives URL: https://jkdev.me/blog/ef-core-tags Markdown: https://jkdev.me/blog-md/ef-core-tags Published: 2020-03-07T00:00:00.000Z Tags: EF Core, .NET Core, Serilog Summary: How to trace and diagnose EF Core queries using TagWith, log scopes, and structured logging tools like Seq and Application Insights. TL;DR: Add TagWith and logging scope metadata to EF Core queries so slow SQL can be traced back to source code quickly. Excerpt: UPDATE: Upgraded samples to EF Core 5. (you can find old sample code in this branch) When doing a performance review on client applications (and my friend's apps), I often see issues related to EF Core and most devs don't seem to notice them until they spiral out of control. When this happens, they don't know how to find problematic queries and then link them back to the original code. In this blog post, I'll show you a couple of tricks on how to track your queries, so when you need to debug performance issues, you won't have a problem finding the problematic SQL query as well the code that generates it. You can also skip to the end of the recommended approach. I'll assume that you have configured logging in your .NET Core application, but if you need instructions for that, go to ASP.NET Core 3.0 + Serilog.… ### Getting started with Form Recognizer (preview) URL: https://jkdev.me/blog/getting-started-with-form-recognizer Markdown: https://jkdev.me/blog-md/getting-started-with-form-recognizer Published: 2020-02-12T00:00:00.000Z Tags: Cognitive Services, Form Recognizer, AI Summary: Hands-on introduction to Azure Form Recognizer for extracting structured data from scanned forms with custom models. TL;DR: Train a custom Form Recognizer model with sample forms, then extract fields and bounding boxes to turn scanned docs into structured data. Excerpt: When I first heard about Form Recognizer, I thought to myself, "Wow, there are so many forms in the real world that needs to be parsed and digitilized!". Once v2 preview came out, I finally decided to build an app that will parse through all of our user feedback from the last AI Hack Day. Form Recognizer is an Azure Cognitive Services that allow us to parse text on forms in a structured format. Now we can extract the location and size (bounding box) for where information was entered or written along with the OCR'd text values. For feedback forms this means, I can get feedback from users by merely uploading their scanned forms to trained custom Form Recognizer. Prerequisite In this blog post will attempt to recognize user feedback using Form Recognizer and Form Recognizer to do custom form recognition rather than built in one. We'll need: 1. Filled out forms 2. Azure Account 3.… ### Retrospective: 2019 URL: https://jkdev.me/blog/retrospective-2019 Markdown: https://jkdev.me/blog-md/retrospective-2019 Published: 2020-01-05T00:00:00.000Z Tags: retro Summary: Year-in-review of 2019 speaking milestones, AI community work, travel, and lessons learned as a developer. TL;DR: Personal retrospective summarizing 2019 outcomes, speaking momentum, AI community impact, and lessons for future focus. Excerpt: Inspired by my friend's retrospective blog post, I have also decided to make a retrospective. For me, a retro isn't just about looking at the past and fixing old mistakes, but also to figure out what works and celebrate achievements. You can read my friend's blog post for a better description of what a retrospective should be and I'll dive straight into it. 😀 Overall, 2019 felt very short and professionally, I have experienced more growth than in a typical year. What went well I presented in soooo many conferences and user groups... 24 in total! AI Hack Day finally got a green light from my boss and is coming early this (2020) year in Melbourne, Brisbane, and Sydney! My blog is reaching about 3k views and 900 users per month! The feedback on presentations is fantastic!… ### Interview - Machine Learning that's ACTUALLY easy with Richard Campbell URL: https://jkdev.me/blog/machine-learning-that-is-actually-easy Markdown: https://jkdev.me/blog-md/machine-learning-that-is-actually-easy Published: 2019-11-25T00:00:00.000Z Tags: ML.NET, ML, Interview Summary: Interview and demo resources on getting started with ML.NET Model Builder for practical machine learning in .NET. TL;DR: Fast path: start with ML.NET Model Builder for a baseline, then improve with better training data and feature engineering. Excerpt: Do you want to try machine learning, but don't want to invest too much time learning a new programming language or some other complicated API or complicated online tools? Richard Campbell and I are geeking out about why you would want to look at machine learning, how to get started, and what should you know when building your prototype. 🧐 ML.NET Model Builder opens up the world of Machine Learning to all developers. I had a blast doing the interview. I hope you'll enjoy watching it as much as I enjoyed making it! 😁 Updated demo (screenshots) Here are updated screenshots for ML .NET v1.4 Model Builder. Figure: Start ML.NET Model Builder Wizzard. Figure: Select Issue Classification. Figure: Select file, column to predict (label) and input columns used for prediction. Figure: Start training. Figure: See results of training. Figure: You can try out your model before generating the code.… ### Publish client-side Blazor to GitHub pages URL: https://jkdev.me/blog/publish-client-side-blazor-to-github-pages Markdown: https://jkdev.me/blog-md/publish-client-side-blazor-to-github-pages Published: 2019-10-06T00:00:00.000Z Tags: Blazor, .NET Core Summary: Step-by-step fix for deploying Blazor WebAssembly to GitHub Pages, including .nojekyll, 404 routing, and base href configuration. TL;DR: For Blazor on GitHub Pages, add .nojekyll and 404.html, then set the correct base href for your repository path. Excerpt: Lately, I got fascinated by client side Blazor, as I can build and host a .NET Core application with $0 cost! This is because Blazor only needs to be hosted somewhere on the web and does not require server side logic. However, if you try to publish Blazor to GitHub pages, you'll notice it doesn't quite work and the official MS documentation is way out of date. I'll assume you have already created your GitHub Page. 1\. Copy files from official Blazor demo You'll need to copy 404.html and .nojekyll from Official Blazor demo (yes, almost 2 years ago). 2\. Replace content in index.html In index.html replace your tag with the following html. 3\. Update base href Make sure that is configured correctly. For development on your local machine it needs to be but when publishing it needs to include the repository name . For example, repository named CognitiveServices.Explorer would have . 4\.… ### Simplified Machine Learning for Developers with ML.NET URL: https://jkdev.me/blog/simplified-ml-net Markdown: https://jkdev.me/blog-md/simplified-ml-net Published: 2019-08-14T00:00:00.000Z Tags: ML.NET, ML, AI Summary: Beginner-friendly ML.NET talk and resources showing how .NET developers can ship machine learning prototypes quickly. TL;DR: Start with ML.NET Model Builder and AutoML to ship a practical prototype quickly, then iterate with better data. Excerpt: Recently I've been on a tour around Australia presenting about how .NET developers can start with their Machine Learning story in minutes. I presented at the SSW User Groups (Gold Coast, Brisbane, Melbourne, Canberra, and Sydney), Melbourne ALT .NET User Group, DDD Melbourne and soon at DDD Sydney in just 2 short months. The response was amazing and it truly feels this talk made an impact on many people. I'm working on making more demos with ML.NET with combination of Model Builder and AutoML while keeping it simple. I'm also working on an AI event with SSW, so stay tuned! :) In the meantime, if you want to learn machine learning simplified for .NET devs, please watch this YouTube video. :) UPDATE: With help of SSW and William, I'm doing AI HackDay in Melbourne, Brisbane and Sydney next year! (2020) UPDATE 2: Changed the video to be up to date. Original video: ### ASP.NET Core 5 + Serilog URL: https://jkdev.me/blog/asp-net-core-serilog Markdown: https://jkdev.me/blog-md/asp-net-core-serilog Published: 2019-06-06T00:00:00.000Z Tags: .NET Core, Serilog Summary: Practical setup for ASP.NET Core with Serilog and Seq, including startup error capture and appsettings-based configuration. TL;DR: Initialize Serilog at startup, keep configuration in appsettings.json, and capture startup exceptions before host build. Excerpt: UPDATED TO .NET 5 (31/12/2020) I have been a great fan of Serilog and Seq for over 2 years and I delivered great value to many of my clients. After many projects of integrating Serilog and Seq into ASP.NET Core applications, I finally found my favorite way to integrate them. There are few things this integration needs to nail: Integrate with Serilog, so we have Seq and other important integrations Capture errors that might happen on app startup Have all configuration in the except the dynamic ones (application name) PS: If you're looking for .NET Core Console app with Serilog integration, check my Why is Serilog not writing my logs into Seq? post.… ### Simple Machine Learning classification with ML.NET (custom code without Model Builder) URL: https://jkdev.me/blog/simple-machine-learning-classification Markdown: https://jkdev.me/blog-md/simple-machine-learning-classification Published: 2019-04-09T00:00:00.000Z Tags: .NET Core, ML.NET, AI Summary: Build a practical ML.NET multiclass classifier in .NET for bank transaction categorization without Model Builder. TL;DR: Build an ML.NET multiclass pipeline to auto-categorize bank transactions and reduce manual tagging work. Excerpt: TL;DR; check my GitHub project for bank transaction classification. UPDATE: If you are looking to learn Machine Learning with minimum code and effort, check out Simplified Machine Learning for Developers with ML.NET. The post below was created before ML.NET Model Builder was released and I made a video about it. Goal For a long time, I was trying to get into practical machine learning but I found machine learning wasn't very accessible for most of the devs. Recently as a challenge, I tried to make a lightning talk, where I tried to explain how to solve a relatable yet usable everyday problem with machine learning in just 15 20 minutes. For the demo, I have decided to do bank transaction category classification, as this is something I do every week.… ### Real-time face recognition with Microsoft Cognitive Services URL: https://jkdev.me/blog/real-time-face-recognition Markdown: https://jkdev.me/blog-md/real-time-face-recognition Published: 2019-01-26T00:00:00.000Z Tags: Azure, Cognitive Services, AI Summary: Build real-time face recognition with Azure Face API and OpenCV, with tips to reduce cost and improve detection quality. TL;DR: Use local face detection first, call Azure Face API only when needed, and tune camera inputs to lower cost and improve reliability. Excerpt: Recently, I have been touring around Australia to present how to do real time face recognition with Microsoft Cognitive Services. In the presentation I go through how to reduce cost, what are some of the environmental issues and how you can leverage infrared and depth streams to improve user experience. Here is my video from .NET User Group Sydney recorded by SSW TV (thanks Adam and Raj!): Here is the demo project built with C , OpenCV and Cognitive Services: You can use either web cam or video file for facial recognition. Here are some of the frameworks I have played around for offline face detection: C UWP OpenCV JavaScript TensorFlow.js BRFv4 Update : You can now explore Face API with Cognitive Services Exlorer. ### Remote web debugging with Vorlon URL: https://jkdev.me/blog/vorlon Markdown: https://jkdev.me/blog-md/vorlon Published: 2018-09-01T00:00:00.000Z Tags: Debugging Summary: Remote web debugging tutorial with Vorlon.js for inspecting console output and DOM on browsers and devices. TL;DR: Run Vorlon.js server and inject its client script to inspect console and DOM remotely on mobile or locked-down browsers. Excerpt: In this post we'll cover how to debug applications running in browser and/or devices that don't have debugging abilities. We'll manipulate DOM tree, see console output and more. This post works great with remote debugging introduced in Remote debugging on Android and iOS devices blog post. Vorlon.JS In short Vorlon.JS is an open source, extensible, platform agnostic tool for remotely debugging and testing your JavaScript. We can debug multiple browser locally or remotely on devices. All we need to do is run Voltron on a server and a in the web application. Get started First install Voltron with NPM: And add in : Run Vorlon in command line: Then go to to access the dashboard. When accessing the website, we can see console logs, DOM tree and many more things. Similarly as with Chrome/Edge/FireFox F12, we can highlight and modify DOM elements.… ### Handling EF Core migrations in a team URL: https://jkdev.me/blog/handling-ef-core-migrations Markdown: https://jkdev.me/blog-md/handling-ef-core-migrations Published: 2018-06-01T00:00:00.000Z Tags: EF Core Summary: Team workflow for handling conflicting EF Core migrations across branches while keeping DbContext snapshots consistent. TL;DR: If migration branches diverge, merge latest changes first and regenerate migrations from the newest snapshot to avoid broken history. Excerpt: Entity Framework Core has a good migration story for the Database, however it's not perfect, especially in a large team where DB schema changes are frequent. All migrations are increamental based on the last snapshot. When multiple migrations are happening in different branches, a lot of issues arise and we even asked EF team on Twitter on how to solve this problem. Click here for the tweet To better understand the problem, let's build up a scenario in team project. Let's see an example of problematic migration: The migration and are out of sync of migration and when we merge , and back into main branch the migration will likely not work from correct DbContext model snapshot. Traditionally, we would revert migration, merge branch with and migrations and re apply migration with correct DbContext model snapshot.… ### How to get Angular logs to Seq URL: https://jkdev.me/blog/angular-to-seq Markdown: https://jkdev.me/blog-md/angular-to-seq Published: 2018-04-29T00:00:00.000Z Tags: Serilog, Angular Summary: Guide to sending Angular client-side logs to Seq using JSNLog and structured logging for better debugging and diagnostics. TL;DR: Use JSNLog in Angular, forward structured events to a backend Serilog sink, then query and correlate issues in Seq. Excerpt: The Angular applications are starting to become and more complicated with more layers on the client side then ever before. This means we should treat client side applications similarly as back end projects. For non dev environments, I would recommend mature libraries like Raygun or TrackJS to track issues over time and be able to resolve them for specific versions. However in development environment we can use a bit more chatty tool that gives us a lot more information about is happening with client side application. As we all know, sometimes it's more important how the user got to the error than the error itself. For that I use JSNLog with Serilog + Seq. There are several JS to Seq libraries but I like this one the best because I can use exatly the same Serilog configuration with not much effort.… ### Remote debugging on Android and iOS devices URL: https://jkdev.me/blog/remote-debugging-on-devices Markdown: https://jkdev.me/blog-md/remote-debugging-on-devices Published: 2018-04-09T00:00:00.000Z Tags: Debugging Summary: Set up remote debugging for mobile web apps on Android and iOS in restricted networks using hotspot and proxy tooling. TL;DR: Route mobile traffic through your dev machine using hotspot plus proxy tooling so you can debug restricted-network scenarios. Excerpt: Every year the market share of mobile devices is growing, which means that testing on a mobile device is becoming increasingly more important. While in easy cases we can open just open up the server to outside world and connect with your phone. However, in this blog I'll tackle a much harder scenario: WiFi is blocked and not accessible by mobile devices Some of the resources are locked behind VPN, no mobile client for the VPN Dev and staging servers are not available to mobile devices The problem only happens on the mobile devices, specifically iPad The blog post will still be very useful if you only have an issue with WiFi or VPN.… ### .NET Core complex EF Core unit testing URL: https://jkdev.me/blog/ef-core-unit-tests Markdown: https://jkdev.me/blog-md/ef-core-unit-tests Published: 2018-02-01T00:00:00.000Z Tags: .NET Core, EF Core, Unit Test Summary: Use SQLite in-memory with EF Core tests to cover SQL behavior, constraints, and query scenarios the InMemory provider misses. TL;DR: When EF Core InMemory is insufficient, switch tests to SQLite in-memory to validate relational behavior and SQL semantics. Excerpt: When writing unit tests for EF Core we can use InMemoryDatabase so that we don't have to create mock repositories. But sometimes we need to test functionalities that are not supported in in memory database. In memory database does not support: Executing SQL commands Enforcing foreign keys Returning null objects for properties that needed to be included in the query Failing when using features not supported in Linq to sql queries Of course, we can mock the data layer but sometimes we need to test if the database's queries are playing well the application logic. The solution is to use SQLite in memory DB which allows us to use some of the SQL and DB relational features.… ### Why is Serilog not writing my logs into Seq? (Console app) URL: https://jkdev.me/blog/serilog-console Markdown: https://jkdev.me/blog-md/serilog-console Published: 2018-01-21T00:00:00.000Z Tags: .NET Core, Serilog Summary: Fix common Seq logging issues in .NET console apps by configuring Serilog lifecycle, exception handling, and proper flush/disposal. TL;DR: In console apps, wrap execution in try/catch/finally and always call Log.CloseAndFlush so Seq receives final events. Excerpt: When setting up Serilog for .Net Core Console application there a few things to keep in mind on initial setup. The most important one is the lifecycle for Serilog since the lifecycle of Console apps is different than lifecycle of Web apps. Long story short, in Serilog in Console application need to be properly disposed of, application needs to be around statement and application should handle global exceptions despite try/catch statement. Let's build on example, where we have a Serilog with Console output and Seq Sink. NOTE: If you're looking for ASP.NET Core implementation, check ASP.NET Core + Serilog + Seq. The will come in handy a bit later but let's focus on common problems. Naive logging: In console application it will output while Seq will not receive any logs. Why? Because Serilog didn't have the time to flush the logs before the application closed.… ### Comparison between C# 5 and 6 features URL: https://jkdev.me/blog/cs5-vs-cs6 Markdown: https://jkdev.me/blog-md/cs5-vs-cs6 Published: 2015-06-13T00:00:00.000Z Tags: none Summary: Side-by-side examples of C# 5 vs C# 6 features including nameof, null-conditional operators, exception filters, and string interpolation. TL;DR: Key upgrade takeaway: adopt C# 6 features like nameof, null-conditional operators, exception filters, and interpolation to reduce boilerplate. Excerpt: Comparison between C 5 and C 6 features in a console app (applies to all platforms) Find project on GitHub Presented features: Auto property initializes nameof Method lamdba expressions Using static Await in catch and finally statements Null conditional operator (or sometimes called Elvis operator) Exception filtering Dictionary initializer String interpolation Auto property initializer Instead of using a private field which is exposed in a property without a setter you can now initialize auto properties. C 5 C 6 nameof Hard coding names of types, properties, fields, etc. as string is a bad idea for refactoring. This can be solved with LINQ, reflections and other hacks, however they may be expensive and are now unnecessary. With nameof we get compile time string values of variables, types, fields, methods, etc.…