digitalferrari
Software Engineering Manager

Mike
Ferrari

Twenty years building software, leading teams, and untangling hard systems.

"AI doesn't make coders obsolete. It makes the ones who still know how to code irreplaceable."

My work sits where software engineering, cloud infrastructure, automation, and AI meet.

See the work
Mike Ferrari, software engineering manager

Twenty years building software. A publishing platform that peaked at 22 properties. ~1.5 million emails a year. 100,000+ registered users. Systems built to hold up.

0
Registered users on a first-party data platform I built
0
Annual software cost eliminated through publishing automation
0
Storage & egress cost being cut by migrating images from S3 to Cloudflare R2
What I do

An engineer first. Management came later.

Because of that, I approach leadership the same way I approach a system: understand it, find the bottlenecks, remove what isn't necessary, and help everyone move faster.

The projects I enjoy most need both technical depth and business understanding. Sometimes that's cloud architecture. Sometimes it's modernizing a legacy application, integrating AI into an existing workflow, or helping a team work through years of accumulated technical debt.

These days my focus is less about writing every line myself and more about helping teams build the right systems, make good technical decisions, and ship software that holds up.

The technology changes. The process doesn't. Understand the problem. Build the simplest thing that will still make sense in five years.

Engineering philosophy
Good software is written well enough to ship and stay shipped; that means doing it right the first time. Minimizing tech debt is just as important as shipping.
Mike Ferrari working
Still in the code — from wherever the work happens to be.
How I build now

AI writes the code. I still have to know how to.

For the past year, my default way of building software has been AI-first: I direct an AI coding agent through requirements, architecture, and review, rather than typing out every line myself. SwiftSend is the clearest example — I own the decisions; the agent implements them under my direction.

That's a real shift in how the work gets done, and I think it's where the industry is headed, not a shortcut I'll grow out of.

None of it works without the thing it looks like it replaces. I can only direct an agent well, catch a bad approach, or push back on a wrong abstraction because I know how to write and reason about the code myself. Vibe coding — accepting whatever the model outputs because it runs — fails the moment the system gets complex enough to matter, and it fails silently, which is worse.

So I treat hands-on coding knowledge as a hard requirement, not a legacy skill. The agent is faster than me at typing. Judgment — knowing what to build and when to override it — is still mine to bring.

My Endeavors

Systems built to hold up.

01 / 2026Technical Direction · AI-built

SwiftSend — Serverless Email Platform

With AWS Pinpoint reaching end-of-support, I directed the from-scratch replacement for an 11-site newspaper network sending roughly 1.5 million emails a year — designed, built, and proven as a drop-in Pinpoint replacement, with the cutover scheduled for next month. I owned the requirements and drove the architecture; an AI coding agent implemented under my direction. The decisions were mine:

  • Fire-time assembly over patched timing hacks. I traced chronic stale-newsletter sends to a recurring campaign racing a cron job to overwrite content — a race condition three layers of legacy timing code had been built to paper over. I re-architected around content assembled at fire time with immutable dated sends instead, which makes stale sends structurally impossible and let me delete the workarounds.
  • Per-tenant isolation by construction, not by convention. A per-item multi-tenant authorization model was one forgotten condition away from a cross-paper subscriber leak. I chose resource-level IAM isolation — one DynamoDB store per publication — so that bug class can't happen, and each tenant's data stays cleanly portable.
  • A two-token paywall with no shared secrets. Swift Auth's access model pairs a send-time HMAC click token with a short-lived Ed25519 grant, verified in-process by the WordPress plugin against a public key. Because it's asymmetric, there's no shared secret sitting on any of the 11 sites for an attacker to steal in the first place — and no network call on the reader's hot path either.
  • Cut my own plan when the numbers didn't back it up. I'd planned to cache the suppression store for latency. Once I ran the numbers — seconds and about a cent per send directly, versus forcing every send worker into a VPC — the cache didn't pay for itself, so I dropped it. Owning the tradeoff means reversing it when the data says so.

AWS · SES · Lambda · EventBridge Scheduler · SQS · DynamoDB · Firehose · Athena · TypeScript · AWS CDK

02Platform

Registration & Identity Platform

Designed and built a registration platform spanning multiple digital publications, growing to more than 100,000 registered users and giving the business a real first-party customer data platform. Built the subscription and paywall systems alongside it — checkout, payment handling, fraud prevention, and institutional access across a network of publications.

AWS Cognito · DynamoDB · Stripe · React · WordPress multisite

03Cost & Ops

Publishing Automation & Cost Optimization

Not every win is code you write. I found, evaluated, and deployed the WordPress-to-InDesign automation that took manual production work out of the editorial workflow — a tool that has eliminated roughly $220,000 in annual software costs for four years running. Recognizing the right tool and standing it up cleanly saved the company real money, without writing a line of new code.

WordPress · Adobe InDesign automation · Print production · Vendor & cost optimization

04AI Tooling

Internal AI Tools

Built AI-powered newsroom tools — Ask the Editor — that help editors review articles, generate constructive feedback, suggest follow-up stories, summarize documents, process audio, and automate repetitive editorial work. I've been integrating large language models into production software since before most newsrooms were talking about it.

OpenAI · Google · Mistral · Meta · Retrieval-augmented search · Transcription

05Open Source

addressium — Open-Source Email Platform

A self-hostable, open-source replacement for AWS Pinpoint's email capabilities — multi-tenant newsletter and transactional email for publishers, with double opt-in, magic-link regwalls/paywalls, deliverability controls, and campaign analytics. Public on GitHub, with a live demo at addressium.com. I built it in a directed pair-programming loop with the Claude Code CLI: I owned the architecture, the technical decisions, and the review; the AI produced implementation against my direction. The decisions were mine:

  • Hexagonal architecture, not a framework default. I set the domain core behind ports, with in-memory adapters for tests and AWS adapters for production — so the business logic has no AWS dependency and the AWS topology (DynamoDB single-table, SES, Cognito, KMS, Lambda, API Gateway, EventBridge, Step Functions) can change without touching it.
  • Identity keyed on a stable ID, not the thing that changes. I keyed subscribers on their Cognito sub rather than email, so a subscriber changing their address is a non-breaking attribute update instead of a broken identity — and specified an inbound identity-sync webhook to keep it consistent with the main site's user pool.
  • Stateless auth over stored sessions. I chose KMS-signed, ES256 magic-link tokens for regwall/paywall access so readers don't need an account, with Cognito account creation as an explicit, feature-flagged step after verification — not a prerequisite to reading.
  • Reporting decoupled from the send path. I directed a separate CQRS read model — DynamoDB through Firehose into an S3 data lake, queried by Athena — so cohort analytics load never touches the transactional path, the same separation I'd already proven under load on SwiftSend.
  • Clicks over opens, on principle. I drove the engagement-based sunset/win-back automation and insisted engagement be measured on clicks, not opens — opens are unreliable under Apple Mail Privacy Protection — paired with an RFC 8058 one-click unsubscribe and a suppression / re-opt-in model built to stay compliant.

I ran the work as an issue-driven backlog: writing feature specs, sequencing merges, reviewing every change, and making the scope calls — what to ship, what to park, what to defer. I caught and corrected issues in review, including stripping vendor-specific and real-company references to keep the app genuinely vendor-neutral. My role was architect, technical lead, and reviewer; the AI's role was code generation under my specifications. Every design tradeoff, security decision, and merge was mine.

TypeScript · AWS CDK · DynamoDB · SES · Cognito · KMS · Lambda · EventBridge · Step Functions · Athena

06Independent

identithing.com

An AI-centric analysis tool that inventories assets, built for both B2C and B2B2C (with insurance carriers as the near-term market). Launched and live. I build these end to end, which keeps me honest about cost, tradeoffs, and what actually ships.

AI vision & analysis · Asset inventory · B2C / B2B2C · Serverless

07In progress

A quiet one, still in the workshop

A reading platform built around discovery — because finding your next book shouldn't feel like homework. Not ready to talk about yet. Ask me in an interview.

Recommendation · Discovery · Coming when it's good

Leadership & ownership

I became the technical owner of an entire publishing platform.

I've been Digital Development Manager at Swift Communications since July 2019, and over that time went from writing plugins to owning the whole thing — cloud infrastructure, authentication, subscriptions, payments, messaging, AI tooling, performance, and the engineering operations behind a network of high-traffic news and magazine sites that peaked at 22 properties and now runs 11.

That platform serves roughly 24 million readers a year and on the order of 48 million annual sessions. I inherited a strong foundation from the team before me and have kept it fast, reliable, and evolving ever since. On a property that size, "the site is up" is the whole job, and it stays up.

I led the engineering and digital-operations team — developers, designers, customer service, a videographer — set the standards, managed vendors, and ran incident response. I've mentored developers and delivered technical training to hundreds of employees.

The manager's job is to make engineers more successful: remove blockers, improve process, provide context, and give people room to make decisions. I enjoy helping engineers grow about as much as I enjoy solving the problems myself.

The platform went through three rounds of layoffs, and for the past three years I've been the sole engineer and manager responsible for it. When the team got smaller, the systems still had to hold up.

Still hands-on, still cutting cost: I'm currently migrating our newspaper images from S3 to Cloudflare R2 to eliminate roughly $84,000 a year in storage and egress — a move that's repeatable across the wider network for a further six figures in identified savings.

Mike Ferrari
Before software · around the world

U.S. Navy veteran — trained a division of sailors and built custom tools to track dry-dock and work schedules, back when a spreadsheet was the automation. Eagle Scout, Order of the Arrow.

For the last decade I've worked as a full-time traveler — based mostly in Southeast Asia, with some stretches in Mexico, Croatia, and India. Ten years of shipping production software across time zones has a way of making you good at asynchronous work, clear writing, and systems that don't need you standing over them.

Mike Ferrari traveling

Scout motto Be prepared.

TrustworthyLoyalHelpfulFriendlyCourteousKindObedientCheerfulThriftyBraveCleanReverent
Technical background

Most of my career is web applications and cloud services.

I care less about specific languages than about building systems that are reliable, maintainable, observable, and easy to change. I've designed and maintained automation across AWS, led engineering teams, and delivered technical training to hundreds of employees.

JavaScriptTypeScriptPHP Node.jsPythonBash SQLReactWordPress AWSLambdaLambda@Edge CloudFrontCognitoSES API GatewayEventBridgeDynamoDB AthenaFirehoseAWS CDK MySQLPostgresRedis DockerStripeOAuth 2.0 REST APIsLLMs / AI
Where it started

Before I was an engineer, I was already solving business problems.

Phase 01 · 2017–2019Advertising operations

Advertising Specialist, Swift Communications

I started in advertising operations at Swift Communications, a newspaper company — running campaigns through Google Ad Manager, coordinating launches across editorial, sales, and operations, and becoming the person people asked when something in the ad stack broke. (Swift Communications is also where SwiftSend and Swift Auth get their names — same company, later chapter.) That's where I learned how a publishing business actually makes money, and it still shapes how I think about the systems I build.

Getting a campaign live meant a relay of humans: a sales rep would send a creative, an account specialist would forward it to ad-ops, a designer would check it against spec, and if it failed, that rejection worked its way back through the same three inboxes — sitting in a help desk queue, then an inbox, then finally reaching the customer, sometimes hours later. The customer heard the same "this doesn't meet spec" they would have heard instantly; they just heard it after half a day of email relay. I built a tool that let account specialists check a creative against spec themselves, on the spot, and skip the queue entirely when it passed.

The harder part wasn't the code — it was that our coworkers didn't want it to exist. If a machine could catch spec violations instantly, the human rejection step they owned had less reason to be a person's job, and they said so directly: they wanted the pushback to keep coming from a human, spec-check or not. I built and shipped it anyway, because the current version of "a human checks it" wasn't protecting anyone — it was just adding hours of latency between the same rejection and the same customer. That was the first time I chose to automate a piece of the business over the objection of the people whose job it touched, rather than just making my own part of it faster.

Google Ad ManagerProgrammatic Advertising Campaign AnalysisRevenue Operations Client ConsultingDigital Publishing
Phase 02 · 2019The pivot

Asking for the job I hadn't done yet

In 2019 the Digital Development Manager left Swift for another company and tapped me on the shoulder to give me a heads up, so I applied and told my IT Director: "I want to build things that can only be accomplished with the help of a team." That seemed to be the magic words, because a month later I was promoted and the rest is history.

Team LeadershipPlatform Ownership Stakeholder Communication
Phase 03 · 2019–presentPlatform engineering

Cloud architecture, and eventually, the whole platform

I grew into the job I'd asked for: building a registration platform on modern cloud infrastructure, managing our dev team during our full CMS migration from WordPress to Naviga Writer and back again — the second move when leadership cut the cost — training roughly 200 people through both, and now SwiftSend to replace Pinpoint and keep our 1.5 million newsletter emails flowing. It's the same instinct as that first spec-checker — find where a process is carrying more friction than it needs to, then remove it and automate processes — just aimed at bigger systems now, with a team of agents instead of just myself.

Cloud ArchitectureSoftware Architecture Engineering ManagementAI Integration
Get in touch

Building things that solve real problems.