UC San Diego · Human Biology

Sean Wirkus

I build software and hardware for medicine and science.

Radiology interfaces, molecular viewers, and ESP32 dashboards. I design them, write the code, and build the boards they run on.

See the work
MEDICAL IMAGING MOLECULAR VIEWERS EMBEDDED SYSTEMS SWIFT · C++ · WEBGL ESP32 · LVGL · FREERTOS MEDICAL IMAGING MOLECULAR VIEWERS EMBEDDED SYSTEMS SWIFT · C++ · WEBGL ESP32 · LVGL · FREERTOS
About

What I work on

I study human biology at UC San Diego and build the tools I wanted while studying it — a molecule viewer that renders real geometry, a radiology site people can actually navigate, a car dashboard running on a board I soldered. Most of it starts as something I needed and couldn't find.

Interfaces for medical data
3D chemistry and biology
Embedded hardware, ESP32
Native macOS and iOS
Four builds, one rail

On the bench

Each of these started as a module on a board — a screen, a sensor, and just enough firmware to prove one idea. The screens below are live, running the same readout the real project does. Pick a board to open it.

Projects

Grouped by what they're for. Every one of these is live — click through to the real thing.

iOS · SwiftUI
Chemigo app icon

Chemigo

General and organic chemistry

Atoms are drawn as characters, and the expression is computed from the valence shell rather than picked from a set of animations: unpaired electrons read as anxious, a filled octet reads as calm. Bonding two atoms changes both faces because it changes both shells. One model owns elements, bonds, lone pairs and mood; every screen reads from it.

  • 4Course tracks
  • 16Units
  • 51Lessons
  • 18Recall cards
See how it works Swift 6 · SwiftUI · SwiftData + CloudKit
The Concepts screen: a General Chemistry 1 unit banner, an intro from Dr. Carbon, and lesson nodes winding down the screen with later ones locked.
Units open into a winding path, taught by element professors.
The Bonding Lab in build mode: ammonia assembled from a blue nitrogen and three hydrogens, labelled The Pyramid of Giza, with a Blueprint panel showing Lewis dots.
Ammonia completes as 🔺 The Pyramid of Giza: 107°, lone pair on top.
The valence-shell explorer: a carbon atom with a worried face, four unpaired electrons around its shell, and the note that carbon wants four bonds.
Carbon, four electrons short of calm.
  • Character rig

    The face is the data

    Expression is a function of one integer: how many electrons are still unpaired. Fill the octet and the face resolves. Nothing about it is decorative.

  • Guided builder

    Only the legal move is lit

    Molecules are assembled a step at a time. Double and triple bonds form by tapping the rail, so O₂, N₂ and CO₂ each take an extra step, and everything lands at textbook VSEPR projections.

  • Blueprint panel

    Four notations, one molecule

    Anything built reads back as molecular formula, Lewis dots, structural lines and skeletal shorthand — the four ways a chemistry course asks for the same structure.

  • Curriculum

    Gen Chem 1/2 and OChem 1/2

    51 lessons across 16 units, from a first covalent bond to aromaticity, enolates, curved arrows and radical chains, written in the vocabulary the course actually uses.

  • Lab tools

    Calculators and recall

    Parenthesis-aware molar mass, dilution and percent-yield calculators alongside persistent notes, plus 18 organic cards scheduled by Leitner box.

  • Data handling

    No analytics, no ads, no SDKs

    Progress lives on device and in the user's own private CloudKit database, which I can't read, with an automatic local-only fallback. The App Store privacy answer is "we don't collect data."

iPadOS · Apple Pencil
Lattice app icon

Lattice

Study notes, vector ink

An iPad notebook with no PencilKit anywhere — strokes come from raw touches, live as versioned JSON paths, and redraw as vectors at every zoom. Scanning does not keep a filtered photo: the page becomes editable ink, with printed ruling stripped and text recognized for search.

  • 0PencilKit
  • Sharp zoom
  • 4Paper templates
  • SVGExport
See how it works SwiftUI · custom ink · VisionKit scan
Lattice library on iPad: Continue and New Notebook cards, a Recent Pages row, filter tabs for Favorites, Recent Activity and Scans & OCR, subject chips, and a grid of notebook covers.
Library with recent pages and full-text search over scans.
Lattice editor on iPad: a full-bleed graph-paper page of cursive biochemistry notes traced as vector ink, with a narrow top bar holding the back button, tool row, colors and widths.
The page owns the screen. Pencil draws; fingers pan and zoom.
Lattice scan review on iPad: the traced vector result of a photographed page, a color mode picker, a vector-ink versus original toggle, and a readout of 190 vector strokes and 7 text blocks recognised.
190 vector strokes, 7 text blocks read — no bitmap left behind.
  • Ink engine

    Vectors at every zoom

    Committed strokes re-rasterize through a tiled layer, so writing stays sharp at 6× instead of blowing up as a bitmap. Nothing about how ink looks or stores comes from PencilKit.

  • Input split

    Pencil draws, fingers pan

    The scroll view only accepts finger pans, so a Pencil physically cannot scroll and a finger cannot draw unless finger drawing is switched on. Two-finger tap undoes.

  • Shapes

    Hold to snap, lift to keep

    Strokes score against line, arrow, rectangle, ellipse, triangle, diamond. Hold about a second and the best fit wins; lift normally and the ink stays exactly as drawn.

  • Scanning

    Photo in, editable ink out

    Orientation, threshold, and ruling removal are derived from the page — not preference knobs. Thin marks get centrelines; filled marks get outlines, then both erase like ink.

  • Paper

    Blank, ruled, graph, Cornell

    Templates plus draggable shapes, stickers, text boxes, and graph cards — with a persistent sticker library for the diagrams you reuse.

  • Persistence

    SwiftData, CloudKit-ready

    Ink and overlays live as versioned JSON in SwiftData, with a tolerant decoder so adding a field never silently wipes old notes. Bundle ready for private CloudKit sync.

Browser-based making tools

Build it at the Workbench.

A dedicated space for turning measurements into useful things. Configure printable parts, route a breadboard and export OpenSCAD, inspect models in 3D, run bench calculations, then download a file ready to make.

  • 8 generators
  • Board designer
  • STL · 3MF · SCAD
Workbench / 3D tools Solid ready
Generators
Live parametric preview
bbox material triangles
Drag the bench Click a part Real exported mesh Open full tool ↗
0
Domains
0
Years building
0
Shipped projects
UCSD
Human Biology