digitalferrari
Software Engineering Manager

Mike
Ferrari

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

My work sits where software engineering, cloud infrastructure, automation, and AI meet. I like taking complicated systems apart, understanding why they became hard to maintain, and rebuilding them into something simpler and faster — for the engineers and the business.

See the work
Mike Ferrari, software engineering manager

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

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.

100,000+
Registered users on a first-party data platform I built
~$220K
Annual software cost eliminated through publishing automation
~$84K/yr
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 isn't measured by clever code. It's measured by how easily the next engineer can understand, maintain, and extend it.
Readable over clever Automation over repetition Observability over guessing Simple over abstract Shipping useful over chasing perfect

I like systems that quietly do their job for years.

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. It isn't yet better judgment than me, and until it is, that judgment is the job.

Selected work

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. Sometimes the highest-leverage engineering call is recognizing the right tool, standing it up cleanly, and keeping it running.

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 was integrating large language models into production software before it became the center of every conference talk. The bar I hold it to is simple: if it doesn't save someone time, reduce costs, or run more efficiently, it doesn't ship.

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

05Independent

My Endeavors

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

06In 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 longer 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 designers 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, on the phone or in an email, 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 for another role and tapped me, personally, to take over. I wasn't the obvious pick — I'd built one tool that worked, not a platform, and I'd never managed anyone. So I made the case myself, directly to our IT Director: "I want to build things that can only be accomplished with the help of a team." He gave me the role on the strength of that tool and that sentence. Everything that follows is what I did with the job once I had it.

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: a self-built registration platform rebuilt on modern cloud infrastructure, a 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. 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 — just aimed at bigger systems now, with a team instead of just myself.

Cloud ArchitectureSoftware Architecture Engineering ManagementAI Integration
Get in touch

Building things that solve real problems.