Skip to content

latest as of

Mark.

stack coverage5 of 5 layers

silicon
2 projectswhat the hardware executes
kernel
7 projectsnumerics and the compilers that emit them
runtime
10 projectsmemory, threads, the wire format
service
6 projectswhat stays up and answers
interface
6 projectsthe part a person points at

Counted from each project's declared stack, metal at the top.

// under the hood

Pick a project.
Trace it to the metal.

Different projects. Shared foundations.
Explore where each one lives in the stack.

siliconkernelruntimeserviceinterfaceONE PERSON. THE WHOLE STACK.

Choose a project

Auto tour · every 8 seconds

3 of 5 layers reached

ProjectScone

A self-hosted memory and retrieval framework for agents, with a Python framework, independent Rust engine, and web console. A JudgeHuman project.

  • interfaceThe part you get to touch.
  • runtimeMemory, threads, and execution.
  • kernelThe math, and the compilers behind it.

Python · Rust · TypeScript · React · SQLite · Qdrant · MCP

Explore ProjectScone

Lit layers are inferred from each project's declared tools.

// now

~/portfolio $ cat now.txt

building
JudgeHuman

blinded AI evaluation and evidence-backed human review

developing
ProjectScone

self-hosted agent memory, source evidence, and temporal retrieval

compiler work
ZDeceptron

reactive dataflow, shared route code, and build-time rendering

also shipping
AppMeee

the unified inbox, fourteen platforms and counting

mentoring
ASCEND

Cornell-connected program funded by LinkedIn

reading
inference and context engineering papers

KV cache management, context rot, and what distillation actually transfers

away from the desk
learning to jump a mountain bike

badly, and with great enthusiasm

working at
go find some cat fish foo!
studied
M.Eng in Computer Science, Cornell University

campus located somewhere in dream world

// about

I'm Mark, a generalist who'd rather build the thing than pick a lane.

Lately that has meant ProjectScone: self-hosted memory for agents, where a retrieved claim can lead back to its source and a correction has a history. Alongside it, I am building JudgeHuman's evaluation workflows and ZDeceptron, a language whose compiler derives the boundary between client and server. Evidence, state and the boundaries between systems keep turning out to be the work.

The work moved and I followed it. Products increasingly meant AI products, and doing one of those properly turns out to require knowing what sits underneath, so I went and found out. A transformer written from scratch shows you what the architecture does. The autodifferentiation beneath it shows you why that works. Hand scheduling its kernels in a compiler shows you where the time actually goes, which is a different discipline again. Cornell coursework in ML hardware and systems, natural language processing and deep generative models put theory under what I had been learning by hand.

All of that is an argument for range rather than against it. The Rust servers, the iOS apps and the infrastructure are not a detour from the AI work — knowing a lot of things is the job now, and the people who only know the model layer find that out the hard way. Several projects here are being rebuilt at the moment, deliberately: ship, learn, rebuild better.

// mentoring

ASCEND current mentor
I mentor through ASCEND, a Cornell-connected program funded by LinkedIn.
BobaTalkspreviously · 3 years
Previously, I spent three years as a mentor with BobaTalks, meeting over 300 students, early-career professionals, and people transitioning careers.

~/portfolio $ ls elsewhere: blog

// growth rings · time machine

A body of work
has a grain.

Rewind the rings. See what took root.

Touch a ring, or move through the years below.

One highlighted band per year. Band width uses recorded project commit totals, grouped by start year—not annual activity. The natural wood grain is illustrative.

INTERACTIVE / 01 — KERNEL LAB

Same math.
Less moving.

A matrix multiply, opened up. Change the tile size. Watch the same numbers do more work before they leave memory.

GEMM / 8 × 8 × 8
Tile size

FOLLOW THE COMPUTATION

Inside the machine.

From a grid of threads to one answer. Follow the values as they move through the machine.

1 / 32
EXECUTION VIEWLAUNCH
Block 0, 0 / Thread 0, 0 / k 0–1

LAUNCH / 01

Divide the work.

A launch divides the output matrix into a grid of independent blocks.

gridDim = (4, 4, 1)

16blocks · 4 threads each

An 8 × 8 output. Each block computes 2 × 2 cells. Follow the selected block (0, 0) next.

Launch. Step 1 of 32. A launch divides the output matrix into a grid of independent blocks. Accumulator 0.

See the whole kernel CUDA-style · 2 × 2 tiles

The highlighted line follows this thread’s instruction. N must be divisible by TILE. Every block thread reaches both barriers.

constexpr int TILE = 2;
__global__ void gemm(const float* A, const float* B, float* C, int N) {
  int tx = threadIdx.x, ty = threadIdx.y;
  int row = blockIdx.y * TILE + ty;
  int col = blockIdx.x * TILE + tx;
  __shared__ float As[TILE][TILE], Bs[TILE][TILE];
  float acc = 0.0f;
  for (int kBase = 0; kBase < N; kBase += TILE) {
    As[ty][tx] = A[row * N + kBase + tx];
    Bs[ty][tx] = B[(kBase + ty) * N + col];
    __syncthreads();
    for (int k = 0; k < TILE; ++k)
      acc = fmaf(As[ty][k], Bs[k][tx], acc);
    __syncthreads();
  }
  C[row * N + col] = acc;
}

dim3 block(TILE, TILE);
dim3 grid(N / TILE, N / TILE);
gemm<<<grid, block>>>(A, B, C, N);

Browser simulation of CUDA-style execution. The journey is a teaching sequence; GPU blocks may execute in any order. Addresses model float32 offsets, and counts exclude cache effects. Thread hierarchy ↗

Open the full matrix & memory traffic 8 × 8 · A × B = C
A: INPUT / ROWS. Eight by eight input matrix. Active tile starts at row 0, column 0, size 2.Row 0: 2, 4, 1, 3, 5, 2, 4, 1. Row 1: 5, 2, 4, 1, 3, 5, 2, 4. Row 2: 3, 5, 2, 4, 1, 3, 5, 2. Row 3: 1, 3, 5, 2, 4, 1, 3, 5. Row 4: 4, 1, 3, 5, 2, 4, 1, 3. Row 5: 2, 4, 1, 3, 5, 2, 4, 1. Row 6: 5, 2, 4, 1, 3, 5, 2, 4. Row 7: 3, 5, 2, 4, 1, 3, 5, 2.AINPUT / ROWS2413524152413524352413521352413541352413241352415241352435241352B: INPUT / COLUMNS. Eight by eight input matrix. Active tile starts at row 0, column 0, size 2.Row 0: 3, 1, 4, 2, 5, 3, 1, 4. Row 1: 5, 3, 1, 4, 2, 5, 3, 1. Row 2: 2, 5, 3, 1, 4, 2, 5, 3. Row 3: 4, 2, 5, 3, 1, 4, 2, 5. Row 4: 1, 4, 2, 5, 3, 1, 4, 2. Row 5: 3, 1, 4, 2, 5, 3, 1, 4. Row 6: 5, 3, 1, 4, 2, 5, 3, 1. Row 7: 2, 5, 3, 1, 4, 2, 5, 3.BINPUT / COLUMNS3142531453142531253142534253142514253142314253145314253125314253
C: PRODUCT / ACCUMULATING. Partial product. Active tile starts at row 0, column 0, size 2.Row 0: 0, 0, 0, 0, 0, 0, 0, 0. Row 1: 0, 0, 0, 0, 0, 0, 0, 0. Row 2: 0, 0, 0, 0, 0, 0, 0, 0. Row 3: 0, 0, 0, 0, 0, 0, 0, 0. Row 4: 0, 0, 0, 0, 0, 0, 0, 0. Row 5: 0, 0, 0, 0, 0, 0, 0, 0. Row 6: 0, 0, 0, 0, 0, 0, 0, 0. Row 7: 0, 0, 0, 0, 0, 0, 0, 0.CPRODUCT / ACCUMULATING································································

Copper: input tile Mint: output tile Indices start at 0.

Ready to multiply. 0 input reads, 0 multiply-adds.

// range13 domains

Machine Learning
transformers built from scratch, continual learning, generative modelsPython · PyTorch
ML Systems & Compilers
reactive language tooling, placement analysis, TVM schedules and GPU kernelsRust · TVM · CUDA · TensorIR
Natural Language Processing
classifiers without a library, feature design, error analysisPython · NumPy
AI Agents
self-hosted memory, evidence retrieval, blinded evaluation and autonomous workersPython · Rust · TypeScript · MCP
Systems
E2EE messaging servers, protocol tooling, game loopsRust · Swift
Mobile
voice social apps, native iMessage integrationSwift · SwiftUI
Web & Backend
microservices and monorepos, simulation pipelines, unified inboxes, Python servicesTypeScript · Bun · Node · Flask
Cloud & Orchestration
services on AWS and Google Cloud, Kubernetes clusters, object storage and CDN, infrastructure as codeAWS · GCP · Kubernetes · Terraform
Self-Hosting
homeserver fleets, reproducible deploys, bridge networksAnsible · Docker · Matrix
Security & Crypto
end to end encryption by default, bridged E2EE, key handlingRust · Matrix
Simulation & Games
MCTS decision engines, market models, space economiesRust · Python
The Day Job
large scale services at a place that shall not be namedJava · C++ · Go
Off Hours
browser games, childhood MMO nostalgia, terminal easter eggsTypeScript · Canvas

// on repeat

Connect your Spotify to see your top tracks render right here. It reads your listening only; nothing is stored on any server.

app in development mode: up to 5 approved Spotify accounts.