[email protected] Weekdays 09:00 - 18:00 Based in Türkiye, working remotely
VodiSoft

Blog

Notes from our team on the questions that come up in software projects.

Why AI Agents Get Your Library Wrong — and What Fixes It: FmgLib.MauiMarkup AI Skills

Ask an AI agent to "write this MAUI screen in C# markup" and you get plausible code that doesn't compile — invented method names, XAML habits transcribed literally, state that resets on every hot reload. The problem isn't the model; it's that the rules are simple but not guessable. Here's how ten installable skill bundles fix that, how to install them, and which mistakes actually disappear.

  • #FmgLib.MauiMarkup
  • #.NET MAUI
  • #C# Markup
Mustafa Gönültaş Read article

FmgLib.MauiMarkup or CommunityToolkit.Maui.Markup? An Honest Comparison

There are two ways to build a .NET MAUI UI in C# instead of XAML, and both use fluent methods. Nearly every difference between them follows from a single architectural choice: hand-curated extensions or a source generator? This post walks through the differences, when each library is the better pick, and what actually happens — measured, not guessed — when you put both in one project.

Mustafa Gönültaş Read article

One Language for the Whole App: Third-Party Controls and Your Own Fluent Methods in .NET MAUI

The question every real project asks about C# markup: do you lose the fluent API for Syncfusion, UraniumUI, SkiaSharp and friends? You don't — the same source generator works for them too. We cover the one-line opt-in, automatic scanning, attached properties, the redefined-property rules, and finally how to write your own design-system methods.

Mustafa Gönültaş Read article

Data Binding and MultiBinding in .NET MAUI: A Step-by-Step Shipping Calculator

We build data binding, two-way binding and multibinding from scratch in .NET MAUI through a single shipping calculator screen. Weight, distance and the express option are combined into one price label, and the form is validated without writing a converter class. All code is C# markup — no XAML.

Mustafa Gönültaş Read article

Theming Without XAML: Style<T>, Visual States and Runtime Theme Switching in .NET MAUI

Instead of scattering colours across controls, we build a theming system: design tokens, inheritable styles with Style<T>, interaction states with visual states, automatic dark mode with OnLight/OnDark, and a user-switchable accent colour with DynamicResource. All in C# markup, without a single line of XAML.

Mustafa Gönültaş Read article

Hot Reload Without XAML: An Instant Feedback Loop for C# Markup in .NET MAUI

The answer to "if I drop XAML I lose hot reload": .NET Hot Reload works at the code level, so C# markup is part of that loop too. We cover the three setup steps, what actually happens when you hit save, and — more importantly — how to write code that assumes Build() will run many times: where state belongs and where subscriptions belong.

Mustafa Gönültaş Read article

The .NET MAUI CollectionView Guide: Binding Inside DataTemplates, Commands and Infinite Scroll

The hardest part of CollectionView is binding inside the template: why can't the button in a row find the view model's command? Using a product catalog screen, we build the DataTemplate binding context, ancestor binding with RelativeSource, a template selector, pull-to-refresh and infinite scroll step by step in C# markup.

Mustafa Gönültaş Read article

Build .NET MAUI Apps Without XAML Using FmgLib.MauiMarkup

Discover how FmgLib.MauiMarkup enables you to build modern .NET MAUI applications entirely in C#. Learn about fluent APIs, hot reload, localization, and XAML-free UI development.

Mustafa Gönültaş Read article

What Are C# Union Types? Type-Safe State Management in Modern .NET Applications

In this article, we deeply explore the new Union Types concept in C#. You will learn what Union Types are, which problems they solve, how they differ from class and record structures, how they can be used in API response models, and how they relate to the Result Pattern. We also cover when Union Types should or should not be used, with real-world examples from payment systems, authentication flows, CQRS, validation, domain-driven design, and modern state management scenarios in .NET applications.

Emre Paksoy Read article

.NET MAUI vs Avalonia UI: Which One Should You Choose as of 2026?

Two giant cross-platform framework options stand out for developers looking to build desktop and mobile applications within the .NET ecosystem: .NET MAUI and Avalonia UI. As VodiSoft, we have prepared an in-depth comparison to help you make the best architectural choice under the light of latest 2026 software trends.

Mustafa Gönültaş Read article

C# Class vs Record: Differences, Use Cases, and Real-World Project Examples

In modern C# and .NET development, class and record serve different architectural purposes. This article explains the core differences between them, including reference vs value equality, mutable vs immutable design, DTO and Entity usage, CQRS patterns, and real-world software architecture examples. You’ll learn when to use class, when to prefer record, and how professional .NET applications structure their models efficiently.

Emre Paksoy Read article

EF Core vs Dapper: Which One Should You Choose? Complete Comparison and Performance Analysis

Entity Framework Core (EF Core) and Dapper are two of the most popular data access technologies in the .NET ecosystem. Developers often debate which one is faster, easier to maintain, and better suited for enterprise applications. In this article, we'll explore the architecture, performance, maintainability, developer experience, and real-world use cases of both technologies to help you make the right choice for your next project.

Mustafa Gönültaş Read article

.NET SignalR: The Bridge for Real-Time Applications

This blog post introduces .NET SignalR, a powerful library designed to add real-time functionality to modern web applications. SignalR simplifies persistent, bidirectional connections between servers and clients, enabling interactive experiences like live chat, notifications, and gaming. The article highlights its integration with Minimal APIs and provides a basic usage example, emphasizing its capability to build fast and lightweight real-time services for developers.

Mustafa Gönültaş Read article

Cache with .NET (Hybrid Cache)

This blog post, the fourth part of the "Caching in .NET" series, explains the Hybrid Cache strategy, which combines the benefits of both in-memory and distributed caching. The goal is to maximize performance while ensuring data consistency in distributed environments. The article provides a simple example of how to implement this approach in an ASP.NET Core Web API by creating a custom HybridCacheService.

Mustafa Gönültaş Read article

.NET 9 Minimal API

This blog post details the significant performance enhancements introduced to Minimal APIs with .NET 9. Thanks to Kestrel optimizations, HTTP/3 support, reduced memory consumption, and Native AOT improvements, Minimal APIs have become incredibly fast without sacrificing simplicity. These innovations offer developers a more efficient and rapid development experience, ideal for cloud-native applications and microservices.

Mustafa Gönültaş Read article

Cache with .NET (Couchbase)

This blog post examines the use of Couchbase Server as both a cache and a flexible NoSQL data store to enhance performance and scalability in .NET applications. Couchbase offers powerful benefits such as reducing database load, ensuring consistency in distributed environments, and providing horizontal scalability. The article demonstrates how to configure and use this hybrid solution with a simple example of Couchbase integration with ASP.NET Core Web API.

Mustafa Gönültaş Read article

Cache (Redis) with .NET

This blog post explores the use of Redis Cache to enhance application performance and scalability in distributed environments. Redis is crucial for high-performance applications like web APIs by reducing database load and enabling rapid data access. The article demonstrates how to configure and use this powerful caching solution with a simple ASP.NET Core Web API integration example.

Emre Paksoy Read article

Cache (In-Memory) with .NET

This blog post, the first in the "Caching in .NET" series, covers the fundamentals of in-memory caching, ideal for small to medium-sized applications. Caching boosts application speed and reduces resource consumption by mitigating performance bottlenecks from expensive operations like database queries and API calls. The article explains IMemoryCache usage and basic caching operations in ASP.NET Core with examples, while emphasizing the need to transition to distributed caching as the application scales.

Mustafa Gönültaş Read article

BackgroundJob (Hangfire) with .NET

This blog post introduces Hangfire, a powerful and reliable library used for managing background tasks in .NET applications. Hangfire allows long-running or periodic operations such as sending emails, generating reports, or synchronizing data to be performed without blocking the main application thread.

Emre Paksoy Read article

Free consultation

Let's plan your project together

In a short call we listen to your needs and work out the scope and a realistic timeline together. It is free and there is no commitment.