<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ivan Kahl&apos;s Blog</title><description>Practical guides and deep dives on .NET, C#, PostgreSQL, software architecture and AI.</description><link>https://ivankahl.com/</link><language>en</language><item><title>Beyond CRUD: A Practical Guide to Modeling Business Processes in REST APIs</title><link>https://ivankahl.com/blog/practical-guide-to-modeling-business-processes-in-rest-apis/</link><guid isPermaLink="true">https://ivankahl.com/blog/practical-guide-to-modeling-business-processes-in-rest-apis/</guid><description>Five patterns for modeling complex business processes in REST APIs, from nesting sub-resources to accepting RPC-style verbs when CRUD falls short.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><category>REST</category><category>API Design</category><category>Architecture</category></item><item><title>8 NDepend Rules to Enforce Domain-Driven Design in .NET</title><link>https://ivankahl.com/blog/8-ndepend-rules-to-enforce-domain-driven-design-in-dotnet/</link><guid isPermaLink="true">https://ivankahl.com/blog/8-ndepend-rules-to-enforce-domain-driven-design-in-dotnet/</guid><description>Eight NDepend CQLinq rules automate Domain-Driven Design enforcement in .NET, protecting architectural boundaries, entities, and aggregate roots.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><category>.NET</category><category>Domain-Driven Design</category><category>Static Analysis</category><category>NDepend</category><category>C#</category></item><item><title>Decompiling the New C# 14 field Keyword</title><link>https://ivankahl.com/blog/decompiling-the-new-csharp-14-field-keyword/</link><guid isPermaLink="true">https://ivankahl.com/blog/decompiling-the-new-csharp-14-field-keyword/</guid><description>The IL code behind the C# 14 field keyword reveals how it removes property boilerplate, and which caveats matter before refactoring an existing codebase.</description><pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate><category>C#</category><category>.NET 10</category><category>Guides</category></item><item><title>Mastering the C# Dispose Pattern</title><link>https://ivankahl.com/blog/csharp-dispose-pattern/</link><guid isPermaLink="true">https://ivankahl.com/blog/csharp-dispose-pattern/</guid><description>Reliable resource management in C# depends on IDisposable. Implementing it correctly cleans up unmanaged resources like file handles and connections, and prevents leaks.</description><pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate><category>Guides</category><category>C#</category><category>.NET</category><category>.NET Core</category></item><item><title>Stop Spaghetti SQL: Simplify Complex Queries with Postgres CTEs in Supabase</title><link>https://ivankahl.com/blog/stop-spaghetti-sql-simplify-complex-queries-with-postgres-ctes-in-supabase/</link><guid isPermaLink="true">https://ivankahl.com/blog/stop-spaghetti-sql-simplify-complex-queries-with-postgres-ctes-in-supabase/</guid><description>Postgres common table expressions break tangled queries into clear, named steps. A music streaming app on Supabase demonstrates how much more readable they become.</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate></item><item><title>What&apos;s New in C# 14: Null-Conditional Assignments</title><link>https://ivankahl.com/blog/csharp-14-null-conditional-assignments/</link><guid isPermaLink="true">https://ivankahl.com/blog/csharp-14-null-conditional-assignments/</guid><description>C# 14 adds null-conditional assignment, a feature that safely assigns values to properties or indexers without long chains of if statements.</description><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate><category>Guides</category><category>C#</category><category>.NET 10</category><category>.NET</category></item><item><title>What&apos;s New in C# 14: User-Defined Compound Assignments</title><link>https://ivankahl.com/blog/csharp-14-user-defined-compound-assignments/</link><guid isPermaLink="true">https://ivankahl.com/blog/csharp-14-user-defined-compound-assignments/</guid><description>C# 14 lets types define their own compound assignment operators, avoiding unnecessary object creation. The feature is explained along with the pitfalls to avoid.</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate><category>.NET</category><category>.NET 10</category><category>Guides</category><category>C#</category></item><item><title>Google Gemini Receipt Parser for YNAB</title><link>https://ivankahl.com/blog/google-gemini-receipt-parser-for-ynab/</link><guid isPermaLink="true">https://ivankahl.com/blog/google-gemini-receipt-parser-for-ynab/</guid><description>Logging expenses in YNAB by hand is tedious. A Docker-based service now uses Google Gemini to read receipt images and import and categorise transactions automatically.</description><pubDate>Thu, 16 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Beyond the Random Class: Cryptographic Randomness in .NET 6+</title><link>https://ivankahl.com/blog/beyond-the-random-class-cryptographic-randomness-in-net-6/</link><guid isPermaLink="true">https://ivankahl.com/blog/beyond-the-random-class-cryptographic-randomness-in-net-6/</guid><description>Security-sensitive code needs true randomness. Here, .NET&apos;s RandomNumberGenerator class is used to produce cryptographically secure random values instead of Random.</description><pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate><category>Guides</category><category>C#</category><category>.NET</category><category>.NET 6</category><category>Security</category></item><item><title>C# Null-Conditional (?.) &amp; Null-Coalescing (??) Operators Explained</title><link>https://ivankahl.com/blog/csharp-null-conditional-and-null-coalescing-operators-explained/</link><guid isPermaLink="true">https://ivankahl.com/blog/csharp-null-conditional-and-null-coalescing-operators-explained/</guid><description>C#&apos;s null-conditional and null-coalescing operators handle null values gracefully, resulting in cleaner and more robust code. Each is explained with examples.</description><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate><category>C#</category><category>Programming</category><category>Quick Tip</category><category>Guides</category></item><item><title>Introduction to Mapster in C#: Benefits and Quick Start Guide</title><link>https://ivankahl.com/blog/introduction-to-mapster-in-csharp/</link><guid isPermaLink="true">https://ivankahl.com/blog/introduction-to-mapster-in-csharp/</guid><description>Mapster is a high-performance object mapping library for .NET. A beginner-friendly introduction highlights the key features behind efficient data mapping in C#.</description><pubDate>Mon, 03 Jun 2024 00:00:00 GMT</pubDate><category>Guides</category><category>.NET</category><category>Tutorials</category></item><item><title>Extension Methods in C#</title><link>https://ivankahl.com/blog/extension-methods-in-csharp/</link><guid isPermaLink="true">https://ivankahl.com/blog/extension-methods-in-csharp/</guid><description>Extension methods let C# developers add functionality to existing classes, even sealed third-party ones, without resorting to inheritance or wrapper classes.</description><pubDate>Mon, 21 Mar 2022 00:00:00 GMT</pubDate><category>C#</category><category>.NET</category><category>.NET 6</category><category>.NET Core</category><category>Guides</category></item><item><title>Case-sensitive and Case-insensitive String Comparisons in PowerShell</title><link>https://ivankahl.com/blog/case-sensitive-and-insensitive-string-comparisons-in-powershell/</link><guid isPermaLink="true">https://ivankahl.com/blog/case-sensitive-and-insensitive-string-comparisons-in-powershell/</guid><description>PowerShell offers separate operators for case-sensitive and case-insensitive string comparisons, such as -eq, -ceq, -like, and -clike. Each is explained with examples.</description><pubDate>Sat, 18 Dec 2021 00:00:00 GMT</pubDate><category>Powershell</category><category>Quick Tip</category><category>Guides</category></item><item><title>Logging .NET to AWS CloudWatch: Using NLog</title><link>https://ivankahl.com/blog/logging-dotnet-to-aws-cloudwatch-using-nlog/</link><guid isPermaLink="true">https://ivankahl.com/blog/logging-dotnet-to-aws-cloudwatch-using-nlog/</guid><description>NLog can ship .NET application logs straight to AWS CloudWatch. This guide covers installation, CloudWatch configuration, and settings for better performance.</description><pubDate>Tue, 14 Dec 2021 00:00:00 GMT</pubDate><category>.NET</category><category>.NET 6</category><category>.NET Core</category><category>AWS</category><category>AWS CloudWatch</category><category>NLog</category><category>Tutorials</category></item><item><title>Logging .NET to AWS CloudWatch: Using Serilog</title><link>https://ivankahl.com/blog/logging-dotnet-to-aws-cloudwatch-using-serilog/</link><guid isPermaLink="true">https://ivankahl.com/blog/logging-dotnet-to-aws-cloudwatch-using-serilog/</guid><description>Serilog can write .NET application logs to AWS CloudWatch. Setup, CloudWatch integration, and log settings for better performance are covered in detail.</description><pubDate>Sat, 11 Dec 2021 00:00:00 GMT</pubDate><category>.NET</category><category>.NET Core</category><category>.NET 6</category><category>AWS</category><category>AWS CloudWatch</category><category>Serilog</category><category>Tutorials</category></item><item><title>Logging .NET to AWS CloudWatch: Understanding the basics using AWS SDK</title><link>https://ivankahl.com/blog/logging-dotnet-to-aws-cloudwatch-using-awssdk/</link><guid isPermaLink="true">https://ivankahl.com/blog/logging-dotnet-to-aws-cloudwatch-using-awssdk/</guid><description>The AWS SDK can send .NET application logs directly to CloudWatch. Log groups and streams are created, and log messages are sent programmatically, step by step.</description><pubDate>Fri, 10 Dec 2021 00:00:00 GMT</pubDate><category>.NET</category><category>.NET Core</category><category>.NET 6</category><category>AWS</category><category>AWS CloudWatch</category><category>Tutorials</category></item><item><title>Introduction to Aspect-Oriented Programming (AOP) in .NET with Autofac Interceptors</title><link>https://ivankahl.com/blog/introduction-to-aspect-oriented-programming-in-dotnet-with-autofac-interceptors/</link><guid isPermaLink="true">https://ivankahl.com/blog/introduction-to-aspect-oriented-programming-in-dotnet-with-autofac-interceptors/</guid><description>Aspect-Oriented Programming improves modularity and readability in .NET. Autofac interceptors are set up and used to apply AOP principles in practice.</description><pubDate>Sat, 17 Jul 2021 00:00:00 GMT</pubDate><category>Dependency Injection</category><category>.NET Core</category><category>.NET</category><category>Aspect-oriented Programming (AOP)</category><category>Tutorials</category><category>Guides</category></item><item><title>Three Methods to Convert Strings into Enums in C#</title><link>https://ivankahl.com/blog/three-methods-to-convert-strings-into-enums-in-csharp/</link><guid isPermaLink="true">https://ivankahl.com/blog/three-methods-to-convert-strings-into-enums-in-csharp/</guid><description>Three methods for converting strings into enums in C# are compared, with guidance on which approach best suits different performance and safety requirements.</description><pubDate>Sun, 06 Dec 2020 00:00:00 GMT</pubDate><category>.NET Core</category><category>.NET</category><category>C#</category><category>Guides</category></item><item><title>Using Config.Net for .NET Application Configurations</title><link>https://ivankahl.com/blog/use-config-net-for-net-application-configurations/</link><guid isPermaLink="true">https://ivankahl.com/blog/use-config-net-for-net-application-configurations/</guid><description>Config.Net offers an interface-based way to manage settings in .NET and .NET Core applications with minimal boilerplate. A follow-up to the App.config article.</description><pubDate>Thu, 22 Oct 2020 00:00:00 GMT</pubDate><category>.NET</category><category>.NET Core</category><category>Programming</category><category>Visual Studio</category><category>C#</category><category>Tech Tips</category><category>Tutorials</category></item><item><title>The Comprehensive Guide to Custom DateTime String Formats in C#</title><link>https://ivankahl.com/blog/the-comprehensive-guide-to-custom-datetime-string-formats-in-csharp/</link><guid isPermaLink="true">https://ivankahl.com/blog/the-comprehensive-guide-to-custom-datetime-string-formats-in-csharp/</guid><description>C# offers several ways to turn a DateTime into a string. Custom format specifiers give full control over the output, and each one is explained with examples.</description><pubDate>Sat, 13 Jun 2020 00:00:00 GMT</pubDate><category>C#</category><category>.NET</category><category>.NET Core</category><category>Guides</category></item><item><title>Backing Up and Restoring Native SQL Server Backups in AWS RDS</title><link>https://ivankahl.com/blog/backing-up-and-restoring-native-sql-server-backups-in-aws-rds/</link><guid isPermaLink="true">https://ivankahl.com/blog/backing-up-and-restoring-native-sql-server-backups-in-aws-rds/</guid><description>Native SQL Server backups can be created and restored in AWS RDS once an S3 bucket and the right access are in place, as this walkthrough shows step by step.</description><pubDate>Thu, 20 Feb 2020 00:00:00 GMT</pubDate><category>SQL Server</category><category>AWS</category><category>Tutorials</category></item><item><title>Getting AWS Lambda Environment Variables in all supported languages</title><link>https://ivankahl.com/blog/getting-aws-lambda-environment-variables-in-all-supported-languages/</link><guid isPermaLink="true">https://ivankahl.com/blog/getting-aws-lambda-environment-variables-in-all-supported-languages/</guid><description>Every language supported by AWS Lambda reads environment variables through its own native API. Code snippets for each are collected in one place, with no extra dependencies.</description><pubDate>Tue, 29 Oct 2019 00:00:00 GMT</pubDate><category>AWS</category><category>Lambda</category><category>Serverless</category><category>Guides</category></item><item><title>Send Slack messages from anywhere using Webhook Integration</title><link>https://ivankahl.com/blog/send-slack-messages-from-anywhere-using-webhook-integration/</link><guid isPermaLink="true">https://ivankahl.com/blog/send-slack-messages-from-anywhere-using-webhook-integration/</guid><description>A Slack bot with an incoming webhook can notify a team channel when a process fails. Setup is shown step by step, with Postman used to send a test message.</description><pubDate>Mon, 23 Sep 2019 00:00:00 GMT</pubDate><category>Slack</category><category>Integration</category><category>Postman</category><category>REST</category><category>Tutorials</category></item><item><title>Enabling and Disabling Hyper-V in Powershell</title><link>https://ivankahl.com/blog/enabling-and-disabling-hyper-v-in-powershell/</link><guid isPermaLink="true">https://ivankahl.com/blog/enabling-and-disabling-hyper-v-in-powershell/</guid><description>Running VirtualBox or other virtualization software on Windows 10 often means turning Hyper-V off. Two PowerShell commands make enabling and disabling it quick.</description><pubDate>Wed, 27 Mar 2019 00:00:00 GMT</pubDate><category>Windows</category><category>Powershell</category></item><item><title>Using SData 2.0 in Sage CRM: Part 5 - A word on authentication</title><link>https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-5-a-word-on-authentication/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-5-a-word-on-authentication/</guid><description>The final part of the SData 2.0 series for Sage CRM, comparing the available authentication methods and when each one is the best choice.</description><pubDate>Thu, 21 Feb 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>SData</category><category>SData 2.0</category><category>Integration</category><category>Security</category></item><item><title>Using SData 2.0 in Sage CRM: Part 4 - Deleting records</title><link>https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-4-deleting-records/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-4-deleting-records/</guid><description>Part four of the SData 2.0 series for Sage CRM, showing how to delete records with the DELETE verb, using examples such as removing a company.</description><pubDate>Tue, 19 Feb 2019 00:00:00 GMT</pubDate><category>SData</category><category>SData 2.0</category><category>Sage CRM</category><category>Integration</category></item><item><title>Using SData 2.0 in Sage CRM: Part 2 - Updating records</title><link>https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-2-updating-records/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-2-updating-records/</guid><description>Part two of the SData 2.0 series for Sage CRM, showing how to update existing records with the PATCH verb and a JSON request body, using examples.</description><pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>SData</category><category>SData 2.0</category><category>Integration</category></item><item><title>Using SData 2.0 in Sage CRM: Part 3 - Inserting records</title><link>https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-3-inserting-records/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-3-inserting-records/</guid><description>Part three of the SData 2.0 series for Sage CRM, showing how to insert new records with the POST verb, using examples such as creating a company.</description><pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>SData</category><category>SData 2.0</category><category>Integration</category></item><item><title>Using SData 2.0 in Sage CRM: Part 1 - Introduction and Querying</title><link>https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-1-introduction-and-querying/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-sdata-2-0-in-sage-crm-part-1-introduction-and-querying/</guid><description>The first in a series on SData 2.0 in Sage CRM, introducing the RESTful API, how it differs from SData 1.1, and how to query records with Postman.</description><pubDate>Sat, 16 Feb 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>SData 2.0</category><category>SData</category><category>REST</category><category>Integration</category></item><item><title>SMTP, IMAP and POP Settings for Popular Email Providers</title><link>https://ivankahl.com/blog/smtp-imap-and-pop-settings-for-popular-email-providers/</link><guid isPermaLink="true">https://ivankahl.com/blog/smtp-imap-and-pop-settings-for-popular-email-providers/</guid><description>A quick reference of the SMTP, IMAP, and POP server addresses, ports, and security settings for popular email providers, handy for email integrations.</description><pubDate>Fri, 15 Feb 2019 00:00:00 GMT</pubDate><category>Email</category></item><item><title>Relicensing Sage CRM</title><link>https://ivankahl.com/blog/relicensing-sage-crm/</link><guid isPermaLink="true">https://ivankahl.com/blog/relicensing-sage-crm/</guid><description>Renewing or upgrading a client&apos;s Sage CRM license means relicensing the system. The short process is laid out step by step, along with its prerequisites.</description><pubDate>Tue, 08 Jan 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>License</category></item><item><title>Sage CRM Exchange Integration: Sage CRM Setup</title><link>https://ivankahl.com/blog/sage-crm-exchange-integration-sage-crm-setup/</link><guid isPermaLink="true">https://ivankahl.com/blog/sage-crm-exchange-integration-sage-crm-setup/</guid><description>Synchronizing contacts, appointments, and tasks between Sage CRM and Exchange/Office 365 starts with configuring the integration in Sage CRM, as shown here.</description><pubDate>Tue, 08 Jan 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>Integration</category><category>Office 365</category><category>Exchange</category></item><item><title>Sage CRM Exchange Integration: Office 365 Setup</title><link>https://ivankahl.com/blog/sage-crm-exchange-integration-office-365-setup/</link><guid isPermaLink="true">https://ivankahl.com/blog/sage-crm-exchange-integration-office-365-setup/</guid><description>Before Sage CRM can sync with Exchange, Office 365 needs a dedicated user and an impersonation role. The setup is covered step by step.</description><pubDate>Mon, 07 Jan 2019 00:00:00 GMT</pubDate><category>Sage CRM</category><category>Integration</category><category>Office 365</category><category>Exchange</category></item><item><title>Cannot process file because of mark of the web error in Visual C# project</title><link>https://ivankahl.com/blog/cannot-process-file-because-of-mark-of-the-web-error-in-visual-c-project/</link><guid isPermaLink="true">https://ivankahl.com/blog/cannot-process-file-because-of-mark-of-the-web-error-in-visual-c-project/</guid><description>A build error caused by the Mark of the Web can block Visual Studio projects. Several fixes are covered, from unblocking files to more obscure solutions.</description><pubDate>Sun, 06 Jan 2019 00:00:00 GMT</pubDate><category>.NET</category><category>Programming</category><category>C#</category><category>Visual Studio</category></item><item><title>Fixing &quot;Authentication required, Browser session mismatch&quot; error in Sage CRM</title><link>https://ivankahl.com/blog/fixing-authentication-required-browser-session-mismatch-error-in-sage-crm/</link><guid isPermaLink="true">https://ivankahl.com/blog/fixing-authentication-required-browser-session-mismatch-error-in-sage-crm/</guid><description>Logging into Sage CRM over HTTPS with Internet Explorer can trigger a &quot;Browser session mismatch&quot; error. The cause and the fix are explained.</description><pubDate>Mon, 12 Nov 2018 00:00:00 GMT</pubDate><category>Sage CRM</category><category>Security</category></item><item><title>Fixing &quot;Cannot create file&quot; error when viewing Sage CRM report on screen</title><link>https://ivankahl.com/blog/fixing-cannot-create-file-error-when-viewing-sage-crm-report-on-screen/</link><guid isPermaLink="true">https://ivankahl.com/blog/fixing-cannot-create-file-error-when-viewing-sage-crm-report-on-screen/</guid><description>A domain change can leave the Sage CRM application pool without file permissions, causing a &quot;Cannot create file&quot; error in reports. Granting access fixes it.</description><pubDate>Tue, 23 Oct 2018 00:00:00 GMT</pubDate><category>Sage CRM</category><category>Reports</category></item><item><title>The &apos;humbs.db&apos; attachment in Sage CRM emails</title><link>https://ivankahl.com/blog/the-humbs-db-attachment-in-sage-crm-emails/</link><guid isPermaLink="true">https://ivankahl.com/blog/the-humbs-db-attachment-in-sage-crm-emails/</guid><description>A mysterious humbs.db attachment can get Sage CRM emails flagged as spam. Disabling thumbnail caching and removing existing attachments resolves it.</description><pubDate>Tue, 14 Aug 2018 00:00:00 GMT</pubDate><category>Sage CRM</category><category>Email</category><category>Windows</category></item><item><title>Enabling CORS in Nancy</title><link>https://ivankahl.com/blog/enabling-cors-in-nancy/</link><guid isPermaLink="true">https://ivankahl.com/blog/enabling-cors-in-nancy/</guid><description>A single line of code in a Nancy module enables CORS, allowing a REST API built with Nancy to be called from JavaScript hosted on other domains.</description><pubDate>Wed, 08 Aug 2018 00:00:00 GMT</pubDate><category>Nancy</category><category>CORS</category><category>.NET</category><category>C#</category><category>Visual Studio</category></item><item><title>Disabling checkpoints in Hyper-V</title><link>https://ivankahl.com/blog/disabling-checkpoints-in-hyper-v/</link><guid isPermaLink="true">https://ivankahl.com/blog/disabling-checkpoints-in-hyper-v/</guid><description>Hyper-V&apos;s automatic checkpoints can slow down shutdowns and corrupt virtual drives when merging fails. Disabling them per virtual machine avoids the problem.</description><pubDate>Fri, 03 Aug 2018 00:00:00 GMT</pubDate><category>Hyper-V</category><category>Windows</category><category>Virtualization</category><category>Virtual Machines</category></item><item><title>Fixing &quot;Class not registered&quot; error in Sage CRM .NET pages</title><link>https://ivankahl.com/blog/fixing-class-not-registered-error-in-sage-crm-net-pages/</link><guid isPermaLink="true">https://ivankahl.com/blog/fixing-class-not-registered-error-in-sage-crm-net-pages/</guid><description>A July 2018 Windows update can break Sage CRM .NET pages with a &quot;Class not registered&quot; error. A small IIS authentication change resolves it.</description><pubDate>Wed, 01 Aug 2018 00:00:00 GMT</pubDate><category>Sage CRM</category><category>.NET</category><category>IIS</category><category>Windows Update</category><category>Windows</category></item><item><title>Fixing &quot;UnexpectedEvent&quot; when uploading documents in Sage CRM</title><link>https://ivankahl.com/blog/fixing-unexpectedevent-when-uploading-documents-in-sage-crm/</link><guid isPermaLink="true">https://ivankahl.com/blog/fixing-unexpectedevent-when-uploading-documents-in-sage-crm/</guid><description>Sage CRM document uploads can fail with an &quot;UnexpectedEvent&quot; error when document type codes are too long. The cause and the fix are explained here.</description><pubDate>Wed, 01 Aug 2018 00:00:00 GMT</pubDate><category>Sage CRM</category><category>Document Library</category><category>UnexpectedEvent</category></item><item><title>Fixing CredSSP encryption oracle remediation in RDP</title><link>https://ivankahl.com/blog/fixing-credssp-encryption-oracle-remediation-in-rdp/</link><guid isPermaLink="true">https://ivankahl.com/blog/fixing-credssp-encryption-oracle-remediation-in-rdp/</guid><description>After the CredSSP security patch, RDP connections to unpatched servers fail with an encryption oracle error. A temporary registry change gets connections working again.</description><pubDate>Sun, 13 May 2018 00:00:00 GMT</pubDate><category>Tech Tips</category><category>Windows</category></item><item><title>Sage CRM .NET Templates Visual Studio Extension</title><link>https://ivankahl.com/blog/sage-crm-net-templates-visual-studio-extension/</link><guid isPermaLink="true">https://ivankahl.com/blog/sage-crm-net-templates-visual-studio-extension/</guid><description>A Visual Studio extension speeds up .NET development for Sage CRM, bundling project templates, item templates, and snippets for commonly used components.</description><pubDate>Sun, 01 Apr 2018 00:00:00 GMT</pubDate><category>Programming</category><category>Sage CRM</category><category>C#</category><category>Visual Studio</category><category>Extension</category><category>Templates</category><category>VSIX</category></item><item><title>Using SQL Server Cursors</title><link>https://ivankahl.com/blog/using-sql-server-cursors/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-sql-server-cursors/</guid><description>SQL Server cursors process data one record at a time, much like a loop in code. A worked example imports companies and their people from a staging table.</description><pubDate>Sun, 01 Apr 2018 00:00:00 GMT</pubDate><category>SQL Server</category><category>SQL</category><category>Programming</category></item><item><title>Converting between different virtual drive formats</title><link>https://ivankahl.com/blog/converting-between-different-virtual-drive-formats/</link><guid isPermaLink="true">https://ivankahl.com/blog/converting-between-different-virtual-drive-formats/</guid><description>Moving a virtual machine between Hyper-V and VirtualBox often means converting its drive. StarWind V2V Converter handles VHDX to VHD conversion for free.</description><pubDate>Fri, 02 Mar 2018 00:00:00 GMT</pubDate><category>Tech Tips</category><category>Virtualization</category><category>Virtual Machines</category></item><item><title>Using Reflection to execute assemblies at runtime in C#</title><link>https://ivankahl.com/blog/using-reflection-to-execute-assemblies-at-runtime-in-c/</link><guid isPermaLink="true">https://ivankahl.com/blog/using-reflection-to-execute-assemblies-at-runtime-in-c/</guid><description>Reflection lets a C# application load DLL assemblies at runtime, extract methods from them, and execute those methods without compile-time references.</description><pubDate>Mon, 29 Jan 2018 00:00:00 GMT</pubDate><category>.NET</category><category>Programming</category><category>C#</category><category>Visual Studio</category></item><item><title>Creating Custom Configuration Sections in App.config</title><link>https://ivankahl.com/blog/creating-custom-configuration-sections-in-app-config/</link><guid isPermaLink="true">https://ivankahl.com/blog/creating-custom-configuration-sections-in-app-config/</guid><description>Custom configuration sections let a .NET app read structured settings from its App.config file. The classes needed to define and read them are demonstrated.</description><pubDate>Wed, 24 Jan 2018 00:00:00 GMT</pubDate><category>.NET</category><category>Programming</category><category>C#</category><category>Visual Studio</category></item><item><title>Python Virtual Environments in Visual Studio</title><link>https://ivankahl.com/blog/python-virtual-environments-in-visual-studio/</link><guid isPermaLink="true">https://ivankahl.com/blog/python-virtual-environments-in-visual-studio/</guid><description>Python virtual environments keep project dependencies isolated, and Visual Studio makes them easy to manage. Creating and using them is covered step by step.</description><pubDate>Fri, 22 Dec 2017 00:00:00 GMT</pubDate><category>Programming</category><category>Python</category><category>Visual Studio</category></item><item><title>Python List and Dictionary Comprehensions</title><link>https://ivankahl.com/blog/python-list-and-dictionary-comprehensions/</link><guid isPermaLink="true">https://ivankahl.com/blog/python-list-and-dictionary-comprehensions/</guid><description>Python comprehensions build lists and dictionaries from existing data or generated sequences in a single readable expression, as these examples show.</description><pubDate>Sat, 02 Dec 2017 00:00:00 GMT</pubDate><category>Python</category><category>Programming</category></item><item><title>App Review: Pythonista</title><link>https://ivankahl.com/blog/app-review-pythonista/</link><guid isPermaLink="true">https://ivankahl.com/blog/app-review-pythonista/</guid><description>Pythonista brings a full Python editor and runtime to iPad and iPhone. A hands-on review of its code editor, custom keyboard, and other features for coding on the go.</description><pubDate>Fri, 22 May 2015 00:00:00 GMT</pubDate><category>App Reviews</category><category>Programming</category><category>Python</category></item><item><title>Blog&apos;s up and running</title><link>https://ivankahl.com/blog/blogs-up-and-running/</link><guid isPermaLink="true">https://ivankahl.com/blog/blogs-up-and-running/</guid><description>A short welcome to the blog, which was started to share thoughts, tutorials, and lessons learned on programming and other hobby-related topics.</description><pubDate>Thu, 21 May 2015 00:00:00 GMT</pubDate><category>General</category></item></channel></rss>