/lm.png
Fractional CTO for Hardware-Enabled SaaS & Operations
Helping founders ensure their technology can handle the chaos of real-world operations.
I connect Physical and Digital Assets to deliver Business Outcomes.

Running out of cash because you over-engineered your solution is the real problem.

Introduction Ask an IT architect for a “proper” design, and you’ll get the usual: Multi-AZ, auto-scaling, load balancers, and active-passive failover. It looks clean on a diagram. When you want to validate your business idea, it’s usually the wrong priority. You don’t need “five nines” (99.999%) of availability. You need a runway. And you need an engineering reality that matches your business stage. Your early-stage architecture should feel uncomfortably cheap.

Are you building a technology company or a very expensive systems integration project?

In hardware-enabled startups, No-Code / Low-Code feels like speed. Dashboard + Workflow + Database = “Product.” That is the short-term mindset. But in real-world operations (fleets, sensors, factories), renting your core platform isn’t a strategy. It is a dependency risk. If your software manages physical assets, owning your technical stack is a business decision, not just an engineering one. Here is the business case: 1. Valuation (What investors underwrite) Investors don’t pay for wrappers.

I don't want yet another demo. Show me the money. Not features.

In hardware-enabled SaaS, “looks great on the screen” is not a business outcome, but an expense until proven otherwise. Yes, it is hard to tie a specific feature to revenue in the short term. But it is non-negotiable to make it traceable in the long term. Here is the rule: Every line of code is a liability (cost) until it proves it is an asset (value). If a capability cannot be traced to a New Revenue Stream, it must be traced to a Financial Outcome:

Iteration isn't the problem. Uncontrolled iteration is.

This diagram illustrates a pattern I see in hardware-enabled SaaS initiatives. You start with initial requirements and an (optimistic) roadmap. Then reality shows up: ❌ The field data disagrees. ❌ Ops workflows change. ❌ Customers/stakeholders ask for “just one more adjustment." ❌ The team constantly refactors APIs, reshapes the data model, rewrites logic, etc. Each iteration does improve the product… …but it also creates iterative debt: leftover code paths, half-migrated schemas, compatibility layers, rushed fixes, duplicated logic.

Infrastructure Drift usually indicates an issue.

In a properly managed environment, the delta between your Infrastructure-as-Code (IaC) and your actual cloud environment should be zero. When your monitoring solution triggers a drift alert (you do have automated drift detection, right?), it typically points to one of two scenarios: 🔴 Scenario A (The Rogue Operator): Someone bypassed the governance and manually modified resources in the AWS Console. This is problematic as manual actions are error-prone and hard to track (and even harder to revert).

Building a simple home automation system is very rewarding, but only for a short moment.

Recently, I created a simple solution that automatically turns the hall’s light on and off. Yes, I know, nothing fancy, but please don’t stop reading just yet. I could have bought a lamp with that functionality built in, but that simple solution had several shortcomings: Searching for a lamp that matches the hall design. Fitting the new lamp in the same spot. What about my other lamps? Upgrading a single piece of hardware does not improve the overall user experience, as legacy devices remain non-smart.