dresticHaus Labs

The engineering behind the pictures.

I shoot for a living and I build the software I shoot with. Some of it is open source, some of it is a product with tenants and invoices, and some of it just makes a headshot station run faster than it has any right to. That same work is available to other people.

Open sourceFounded VerticalFrameBuild · automate · audit

Selected work

Six things I have built. Four carry a public write-up; two stay at the level the client is comfortable with.

StarForge

A landscape astrophotography stacker for macOS. It loads a folder of frames, splits the sequence into sky and foreground, aligns the sky on the stars, stacks it, and composites that stack over one untouched foreground frame. No third-party dependencies. Written because the tool I wanted did not exist.

Swift 5.9Core ImagemacOSOpen source
Read the source

VerticalFrame

Tenant-isolated industry workflows on a shared CRM foundation, with a hospitality module (Kitchen Brain) as the current product priority. I am a founding member there, working as a senior AI software engineer: the agent platform, the data model, and the architecture underneath.

ProductMulti-tenantCRMHospitality
verticalframe.ai

Local-first health pipeline

A ring on the wrist, a laptop on the desk, no cloud in between. BLE capture straight into a local database, derived metrics computed on the machine, a dashboard on localhost. Built to prove that personal telemetry does not need a subscription or someone else's server. The capture, the storage and the metrics are mine; the ring, its firmware and its radio are not.

RustBLESQLiteNo vendor cloud

The studio's own tooling

The reason a headshot station can hand back a gallery in 48 hours. Culling, export at every size a client needs, gallery generation, and the paperwork that goes with a corporate job. Written for this business, then used to sell it. Two parts of it run this site: the archive builder that turns a shoot folder into the cards and posters on every page, and the derivative pipeline that ships avif and webp at four widths. The rest stays internal.

AutomationDeliveryInternal

Hunts

Client work, kept private. What is public: it is a build I own end to end, it runs in production for the client, and the write-up waits until they are asked whether they want to be named. The card exists so the work is accounted for instead of invisible.

Client buildEnd to endNot public

Camera rental update tracking

A rental fleet is a firmware problem before it is a logistics problem: bodies and lenses arrive on different versions, updates land mid-season, and one body going out on stale firmware is a reshoot. The tool keeps update state per unit, records what changed and when, and answers the only question that matters before a handover: is this body current.

Internal toolingFirmware stateFleet

What I do for other people

Same work, different client. The studio taught me deadlines and invoices; the day job taught me tenants and SLAs.

Build it

A feature, a tool, or a whole product. macOS and Swift, web and TypeScript, Rust or Python for the parts that need to be fast and boring.

Automate it

The unglamorous work that eats a business: intake, files, exports, reporting, the thing someone re-types every Tuesday. Agents where they earn their keep, cron where they do not.

Audit it

A read-only pass over a codebase that maps real data flow, names what is actually broken, and separates hope from measurement. Findings you can act on, not a score.

Engagement shapes: a fixed-scope project priced before work starts, a monthly retainer, or a few days a month alongside a founding team. Day rate and the smallest engagement I will take on are on request. Scope is written down and agreed before anything is built.

Why a photographer is the one writing your software.

Because I have run the business the software serves. The pipeline that delivers a corporate headshot job in 48 hours is not a side project, it is the operation. Eight years as a strategic business partner to executives before cameras paid the bills taught me to write down the scope and hit the date.

Design and web work

Before the software. Identity, print and sites, held to the same rules as everything else here.

Brand guidelines

Vertical Frame

The identity system and guidelines for the AI company I am a founding member of: the mark in use, the type and color rules, and how the thing holds together across product surfaces instead of only in a PDF.

IdentityGuidelinesProduct

Print identity

Silicon Therapeutics

Stationery and business cards: the pieces that have to survive a printer, a mailroom and a pocket, and still look like the same company three years later.

StationeryBusiness cardsPrint

Website

E.H.R. Boston Communities

A website for a Boston community organization: the structure, the content model, and the build underneath it, made so the client can keep writing after handover.

WebsiteDesignBuild

What a brand system is

Not a logo on a mood board. A set of decisions somebody has to defend.

In October 2026 the studio stopped borrowing an identity from whatever the last project used and wrote one down. Two inks do the structural work, one ground holds everything, three signals get roughly a tenth of any layout between them, and nothing else is a brand color. That is the whole rule, and it is why a page can change its mood without changing its voice.

The reason to write it down is that the work does not happen in one place. There is a site, a set of prints, stationery, a social grid, documents that go to clients, and software with its own interface. All of them had to agree, and none of them could be the place where the identity was invented. A system is what stops the fifth surface from quietly becoming a fifth brand.

It is also why the plumbing matters as much as the artwork. The favicon, the share card and the header mark on this site are generated from the same master files as the print vectors, by a script that runs on build. A brand that only exists as a PDF is decoration. This one fails the build if an icon goes missing.

Stack

A tag cloud says nothing. What matters is which tool gets which job, so this is grouped by what it is for.

Write

The languages that actually ship, in order of how much time they get.

  • SwiftStarForge, the desktop tools, anything that touches Core Image
  • TypeScriptSites, product surfaces, everything with a browser in it
  • PythonPipelines and data, the parts that only have to run once and correctly
  • RustWhere a hot loop has stopped being fast enough

Ship

Build, host, store, deploy. Small surface, on purpose.

  • AstroThis site: static output, no client framework tax
  • ReactWhen a screen needs state and I do not want to invent one
  • CloudflareWorkers, R2 and DNS for drestichaus.com
  • PostgresAnything that has to remember something between requests
  • CI/CDIf a deploy is manual, it is not finished

Machines

What runs local, on the Mac, with no round trip to somebody's server.

  • Core ImageWarping and stacking frames on the GPU
  • MLXLocal models, because a photo should not leave the machine to be sorted
  • macOSThe platform the tools are built for first
  • Postgres, againLocal-first is not local-only; the two ends agree

Not listed: the forty things that only ever run once. Every tool above is in production somewhere on this site or in a repo you can ask me about.