Ouch's Blog and Documentation
website·Indexed 29 days ago
https://ouch1978.github.io/A technical knowledge base and blog covering a wide range of software engineering topics, including containerization (Ubuntu, Docker, K8s), AI tools like Cursor AI and MCP, Docusaurus customization, Agile activities (ORID, Ubiquitous Language Game), and development guides for Visual Studio, Git, and WPF.
What's inside Ouch's Blog
- .NET MAUI (.NET Multi-platform App UI) is a cross-platform framework released with .NET 6. It allows developers to build applications for multiple platforms using a single codebase, following the 'Write Once, Run Anywhere' philosophy. It is the official successor to Xamarin.Forms.
Overview of Xamarin.UITest for Android and iOS automation
Xamarin.UITest is an automation testing framework based on Calabash that allows developers to write tests for native Android and iOS applications using C# and NUnit. Despite the name, it is not limited to apps developed with Xamarin; it can be used to test native Android and iOS applications as well. A key feature of the framework is the ability to automatically generate test code through recording.Overview of Xamarin.UITest
Xamarin.UITest is an automation framework based on Calabash that allows developers to write automated tests for native Android and iOS applications using C# and NUnit. It is not limited to apps developed with Xamarin; it can test any native Android or iOS app. Note that it natively supports NUnit 2 and does not support NUnit 3.Overview of Docusaurus
Docusaurus is an open-source static site generator developed and maintained by Facebook, built on the React.js framework. It is designed to simplify the creation of websites that combine documentation libraries and blogs, ensuring consistency across multiple projects while allowing for customization.Overview of XAML Standard
XAML Standard is a specification introduced at Build 2017 designed to unify XAML controls and properties across different platforms, specifically WPF, Windows 10 XAML (UWP), and Xamarin.Forms. It aims to eliminate inconsistencies where similar controls have different names or properties across platforms (e.g., UWP'sTextBlockvs Xamarin'sLabel, or UWP'sProgressBar.Valuevs Xamarin'sProgressBar.Progress).Manage AI governance gaps in development teams
Agentic AI can introduce governance vulnerabilities when teams rely on AI without aligning it with existing coding standards and architectural boundaries. Key governance gaps include:
- Context Gaps: Rules are not injected into the AI context, leading to inconsistent implementations or violations of Non-Functional Requirements (NFRs) like performance and capacity.
- Rule Drift: AI may copy outdated legacy code or generic web examples, accumulating technical debt.
- Consistency Risks: Conflicts between human trust in AI and actual governance, leading to skipped reviews or inconsistent prompt results across different environments.
Understand the hidden memory costs of Hangfire background jobs
In high-frequency systems, background jobs are not 'free'. Each job creates a cumulative system cost based on the formula:
Number of Sessions × Retention Time × State History × Failure Retries × Batch Metadata.Adding even a few jobs per session can lead to significant Redis memory spikes because Hangfire stores more than just the execution trigger; it maintains:
- Job metadata and serialized arguments
- State and execution history
- Retry and failure details
- Batch metadata and status indices
- TTL (Time-to-Live) data that persists in Redis until expiration
Troubleshoot missing SQLite.Interop.dll in .NET Framework projects
When installingSystem.Data.SQLite.Corevia NuGet, MSBuild typically uses a.targetsfile (e.g.,Stub.System.Data.SQLite.Core.NetFramework.targets) to automatically copy the correct architecture-specificSQLite.Interop.dll(x86 or x64) to the output bin folder. If this process fails due to environment issues, permissions, or MSBuild bugs, the application will throw a 'file not found' error forSQLite.Interop.dll.Key features of Docusaurus
Docusaurus provides several built-in capabilities for developers and content creators:
- Ease of Setup: Quick deployment using official templates with minimal configuration.
- Plugin System: Modular architecture for documentation and blogs with support for third-party plugins.
- Customization: Component-based design allowing customization from global styles down to individual elements.
- Content Creation: Uses Markdown for consistent formatting and styling.
- Developer Tools: Native support for code highlighting, mathematical formulas, and flowcharts.
- Blogging: Supports multi-author contributions for single posts.
- Versioning: Built-in support for multiple content versions with a version switcher dropdown.
- Internationalization (i18n): Native support for multi-language websites.
- Search: Integrated with Algolia for full-text search functionality.
- SEO & Deployment: Generates static HTML for SEO friendliness and supports deployment to GitHub Pages, GitLab Pages, Netlify, and Vercel.
Resolve conflict between Hyper-V and Intel HAXM for Xamarin Android Emulators
When using the built-in Android emulator in Visual Studio 2017 with Xamarin, a conflict occurs between Microsoft Hyper-V and the Intel® Hardware Accelerated Execution Manager (HAXM). To use the Atom x86 architecture virtual machine for near-native performance, HAXM must be enabled, which typically requires Hyper-V to be disabled. This creates a trade-off for developers who need both Hyper-V for virtual machines and HAXM for high-performance Android emulation.Avoid using a Knowledge Base (KB) as a Cursor AI rule center
Using a Knowledge Base (e.g., Docusaurus) as the primary source for executable Cursor AI rules is an anti-pattern due to fundamental misalignments in purpose, update frequency, and consumption. A KB is designed for human-readable architectural decisions (the 'why'), whereas Cursor rules require executable instructions (the 'how') that the AI can automatically load via.cursor/rules/.Automate Flash UI testing using Sikuli4Net
Sikuli4Net is a .NET wrapper for Sikuli, a tool that uses image recognition (screenshots) to identify and interact with UI elements. This is particularly useful for Flash or Flex applications where standard UI automation tools cannot identify internal component relationships. It can be used in conjunction with Selenium to manage the browser while Sikuli4Net handles the interactions within the Flash content.