Blog
Practical articles from KomuraSoft LLC about website development, SEO, Google Ads, Windows development, legacy asset reuse, and bug investigation.
-
How to Build Service Pages - An Organizing Procedure for Technical B2B
For technical B2B sites, we lay out how to organize the role, headings, copy, CTAs, and inquiry flow of a service page.
-
The Three Places to Fix First on a Site That Gets No Inquiries
For a site where inquiries have stalled, we organize the issues to fix first on the top page, service pages, and contact page, by the points in the flow wher...
-
Why a Technical Company's Website Fails to Communicate What the Company Does
We examine why technical and B2B websites fail to convey what the company actually does, looking at the division of roles between the top page, service pages...
-
How Windows DLL Name Resolution Works - Search Order and SxS
A practical guide to DLL name resolution on Windows: the DLL search order, Known DLLs, the loaded-module list, API sets, SxS manifests, and how the LoadLibra...
-
Do UUIDs Collide? Implementation and Operational Patterns That Invite Duplicates
UUIDs are hard to collide when used normally, but fixed seeds, snapshots, namespace misuse, truncation, and custom formats can invite duplicates. We organize...
-
SEO and Google Ads for a Technical B2B Site - How to Run Both
How to divide the roles of SEO and Google Ads and turn a technical B2B site into inquiries. We cover page design, measurement, and operations basics, grounde...
-
When Do You Actually Need Administrator Privileges on Windows? - UAC, Protected Areas, and How to Tell by Design
A practical look at when administrator privileges are required on Windows, from the perspectives of UAC, protected areas, services, drivers, and per-user/per...
-
What Is VBA? - Its Constraints, Its Future, When to Replace It, and Realistic Migration Patterns
The basics and constraints of VBA, its future, when it should be replaced, and a realistic way to migrate Excel macros and in-house tools in stages.
-
An Introduction to Windows Text Encodings - The Mojibake That Happens When Integrating with Linux
A practical look at why mojibake happens on Windows, through the differences between CP932, UTF-8, UTF-16, BOMs, code pages, PowerShell, and Linux locales.
-
Best Practices for Checking and Displaying External Device State - Designing Beyond a Single 'Connected'
In device-integration apps, collapsing state into a single 'Connected' invites misleading displays. We work through detection, responsiveness, operational re...
-
A Checklist for Safely Handling Child Processes in Windows Apps
Handling child processes safely in a Windows app depends less on the launch API than on who owns the process tree and how shutdown is designed. This article ...
-
Choosing a Windows App Distribution Method - MSI/MSIX/ClickOnce/xcopy/Custom Updater
MSI vs MSIX vs ClickOnce vs xcopy vs custom updater: pick a Windows deployment method by OS integration and update ownership, with a decision worksheet.
-
Single-File Distribution of Windows Apps - Single Binaries and the Limits of OS Dependencies
When you want to ship a Windows app as a single EXE, the difference between shipping one artifact and eliminating OS dependencies matters. We work through .N...
-
Prompting Rules That Reduce Codex Mojibake on Windows
Codex garbling Japanese text on Windows? Stop mojibake with clear prompting rules: check encoding before reading, preserve CP932/UTF-8, re-read after writes.
-
Serial Communication App Pitfalls - Through Reconnection and Log Design
The serial communication app pitfalls you want to avoid in device integration and instrument control, organized from a practical perspective: framing, timeou...
-
Designing Windows Apps to Leave Logs and Dumps When They Crash
How to combine regular logging, a final crash marker, WER LocalDumps, and a watchdog process so that even when a Windows app dies from an unexpected exceptio...
-
Windows App UX Design - Priorities by Usage Environment
What to prioritize in Windows app UX design, organized as a decision table covering B2C vs. B2B, input methods, usage environments, and the cost of mistakes.
-
Choosing Between WinForms, WPF, and WinUI - A Practical Decision Table
How to decide between WinForms, WPF, and WinUI, organized from the perspectives of new development, existing assets, deployment, UI expressiveness, and team ...
-
Shared Memory Pitfalls and Practical Best Practices
The pitfalls of using shared memory in production, and a design that leaves fewer ways to go wrong across synchronization, visibility, lifetime, ABI, and per...
-
Introduction to Windows User Profiles - AppData and NTUSER.DAT
The basics of Windows user profiles: how to split AppData, local / roaming / mandatory / temporary profiles, Folder Redirection, FSLogix, and where to look w...
-
The Minimum You Need to Know Before Reading COBOL Source Code
For anyone suddenly handed COBOL source code: a minimum set covering DIVISIONs, PIC, COMP-3, COPY, PERFORM, fixed format, and how to spot external boundaries.
-
How to Fairly Compare the Execution Speed of C#, C++, Java, and Go
How to fairly compare the execution speed of C#, C++, Java, and Go, covering measurement design, warm-up, environment pinning, how to read the statistics, an...
-
What Is Reg-Free COM - Using COM Without Registration
An overview of Reg-Free COM basics, the roles of activation contexts and manifests, the benefits, the limitations, and how to decide when to use it in practice.
-
How to Build Excel Report Output - COM / Open XML / Templates
The design of Excel report output changes considerably depending on whether you automate Excel itself, generate xlsx files directly, or keep existing VBA. As...
-
How to Burn Images and Text into MP4 Frames with Media Foundation
How to burn an image and text into every frame of an MP4 with Media Foundation and produce a new MP4, organized around the roles of the Source Reader, drawin...
-
An Introduction to Collecting Windows Crash Dumps - WER/ProcDump/WinDbg
To chase hard-to-reproduce Windows application crashes, we walk through when to use WER LocalDumps, ProcDump, MiniDumpWriteDump, and WinDbg, along with the o...
-
Using a .NET 8 DLL from VBA with Full Typing - COM Exposure and dscom TLB
Call .NET 8 code from VBA with early binding: expose a class library to COM, generate a TLB with dscom, and register the comhost DLL. Sample code on GitHub.
-
Why You Should Prefer Event Waits over Sleep(1) on Windows
On Windows, the accuracy of short timed waits is bounded by the system clock granularity and scheduling. If you are waiting for work to arrive, I/O to comple...
-
A Decision Table for Whether to Exit or Continue After an Unexpected Exception
When an unexpected exception occurs, should the app exit or keep running? We organize the decision from the perspectives of state corruption, external side e...
-
Windows Processor Scheduling Settings - Background Services and P/E Cores
What actually changes with the Windows "Background services" setting, explained through quantum time, foreground favoritism, audio glitches, and QoS in the P...