Writing
Blog
Technical insights on software architecture, AI integration, cloud engineering, and the craft of building products people rely on.
Offline-First Is a Data-Modeling Decision, Not a Sync Library
Teams pick a sync engine before deciding what a conflict means in their domain. Model operations instead of states and most conflicts stop existing — here's how to make that call.
Code Signing and Notarization: The Part of Desktop Nobody Budgets For
Gatekeeper, SmartScreen reputation, hardware-token certificate requirements, and why timestamping is the detail that saves you. A field guide to shipping desktop software users can actually open.
Electron, Tauri, or Wails: Choosing a Desktop Shell in 2026
Bundle size is the argument everyone has. Webview fragmentation is the one that actually costs you weeks. An honest comparison from someone who ships all three.
Accessibility Is an Engineering Constraint, Not a Checklist
What happened when we made axe-core fail our builds: the classes of bug automation catches, the ones it never will, and why colour tokens beat per-component vigilance.
AI in Software Engineering: What Actually Changed by 2026
Code got more verbose, review became the bottleneck, and machines now read most pull requests first. An honest account of how AI reshaped day-to-day engineering — and what it didn't touch.
React Native in 2026: What Changed My Mind After Years of Shipping Swift
I went into React Native sceptical — performance, native feel, being stuck behind a framework. Here's what actually held up, what didn't, and why Expo's OTA updates mattered more than I expected.
ServiceNow CSM Best Practices: Getting Account Hierarchy and Foundation Data Right
Account hierarchies, contacts, consumers, products, and entitlements decide what your CSM implementation can ever do. Here's how to model them so they don't box you in.
ServiceNow CSM Best Practices: Case Tasks, Incidents, and Downstream Records
When work leaves the case — case tasks, incidents, problems, and changes. How to pick the right downstream record and keep state synchronisation from becoming a second job.
ServiceNow CSM Best Practices: Case Types, Escalation, and Closure
How to design a case taxonomy agents will actually use, an escalation path that means something, and a closure process that survives contact with SLA reporting.
ServiceNow CSM: How Advanced Work Assignment Actually Routes Interactions to Cases
A practical walkthrough of service channels, queues, skills, and capacity in ServiceNow Advanced Work Assignment — and how routed interactions become well-formed cases.
ServiceNow: Where Should the Logic Actually Live?
Business rules, script includes, Flow Designer, UI policies — the decision framework that keeps an instance debuggable, plus the cascade anti-pattern that makes long-lived instances impossible to reason about.
What Actually Makes a ServiceNow Instance Slow
It's almost never the infrastructure. Queries in loops, unindexed conditions, ACL evaluation per row, and journal tables nobody archives — a diagnostic order of operations.
Website Builder or Custom Code? An Honest Guide for Growing Businesses
Squarespace, Webflow, and WordPress are the right answer for a lot of businesses — and the wrong answer for others. Here's how to tell the difference, with real client examples.
The Cost of Monolithic JavaScript: When to Switch from React to Astro for Marketing Sites
Analyze the trade-offs between heavy client-side hydration for internal apps versus Astro's zero-JS approach for external-facing web development agency deliverables.
Decoupling ServiceNow Logic: When to Build Custom React Portals vs. Native Widgets
Avoid the AngularJS trap; architect a modern hybrid stack where complex logic runs in custom React components while leveraging ServiceNow's native widget ecosystem.
Remix/React-Router vs. Next.js: Choosing the Right Rendering Strategy for Full-Stack Apps
Stop forcing JavaScript into every page load; select a framework based on whether your site is data-driven or marketing-focused to optimize cloud costs.
Database Abstraction Layers: Protecting Your TypeScript Stack from Vendor Lock-In in Cloud Services
How to design data access layers that allow you to swap SQL providers or vector stores without rewriting your core business logic.
A Beginner's Guide to ServiceNow's Service Portal Widgets
A practical intro to building ServiceNow Service Portal widgets using HTML, CSS, and AngularJS — covering directives, filters, and client-server communication.