Hello, I’m Dylan.

A pig sitting in an open field, facing away toward the horizon.
Fig. 1

Iam a software engineer at Aina, where I work on infrastructure for large media and compute workloads. My work touches deployment, storage, databases, observability, and distributed systems.

Outside of work, I volunteer at the Morgan Hill Buddhist Community Center. At home, I have a homelab that is mostly a very expensive way to avoid paying for Netflix, especially once you count the hours. I also build practical effects and interactive Halloween props. This involves hobby electronics, PCB design, and regularly discovering that I am not very good at any of it. I keep doing it anyway.

This is where I write down some of what I learn.

What I’ve been up to

Jev World2026-09-17

A model that cannot see draws Earth

A blindfolded pig drawing a tiled map of Earth on a large sheet of paper.
Drawing the Earth from coordinates alone.

Jev has no image input. It cannot look at a globe, inspect a map, or generate a picture. So I asked it a question 131,072 times: is this coordinate on land? Put the answers on a grid, color land green and water blue, and a rough but unmistakable Earth appears.

The idea came from Henry's “How Does a Blind Model See the Earth?”, a really interesting, beautifully written benchmark of the geographical knowledge hidden inside language models. His method asks about points one at a time and turns the probabilities into maps. I wanted to try that idea with Jev, then watch the map arrive at the speed of the API.

I got early access to the Jev API from @Typesafeai. Jev is TypeSafe's System One model: it makes small, structured judgments instead of writing prose. Its Noul question returns a number between 0 and 1 for a yes/no proposition. In this case, that proposition is simply “is this point on land?”

The project samples the center of each cell on a latitude and longitude grid. Each point becomes an independent question. Jev sees the coordinates and a definition of land and water, but no image,…

Sketchpad Live2026-09-14

A whiteboard you can talk to

A pig drawing a system diagram on a large whiteboard.
Office hours are now in session.

I made Sketchpad Live because conversation starts to feel cramped as soon as an idea becomes spatial. Describing which box connects to which other box is work a shared canvas should do for us. I wanted to see whether a voice agent could feel less like a chat window and more like a teacher standing at the board.

Sketchpad Live is the proof of concept. It combines a full-duplex voice conversation with a tldraw canvas the agent can inspect and change. You can ask it to explain a diagram, add to it, rearrange it, or teach the idea step by step. The live model handles the conversation while a reasoning model receives an image and the structured canvas state, then streams concrete edits back as they are produced.

The interesting part is not that a model can draw boxes. It is that the voice, the canvas, and its attention can stay aligned. During a walkthrough, the agent can focus the relevant part of the board, add temporary annotations, and place an interactive lesson card beside the diagram. You can interrupt, change the drawing yourself, and keep going.

This is still a small public…

Drop2026-09-08

Moving TBs in the browser

A pig standing on its hind legs while unplugging a cable from a server rack.
Transfer supervision in progress.

The familiar browser download has a simple shape: one response becomes one file. That shape works until the thing being downloaded is not really a file at all. At Aina, a dataset can be a directory tree containing terabytes of footage. Asking the browser to download it exposes a mismatch between the interface and the thing a person actually wants.

There are a few conventional ways to hide that mismatch. The browser can start a separate download for every object, but thousands of independent downloads are difficult to supervise and do not reliably reconstruct a directory tree. The application can collect the data in memory, but the browser is the wrong place to assemble a multi-terabyte blob. The server can put everything into a zip file, which makes a folder look like the one file the download interface expects.

Zip is appealing because it solves the shape of the problem. It is less appealing when we look at what the bytes have to do.

A server can build the archive on demand and stream it without holding the whole result in memory. Now, however, every download is a new composite response. The individual source objects may already be cached at the edge, but the archive itself has to be assembled as one continuous stream. If the transfer stops near the end, resuming that stream is also more complicated than requesting an ordinary object again.

Prebuilding archives changes the tradeoff rather than removing it. For a long time, Aina kept pre-zipped copies of datasets. Those copies were easy to download and easy to cache, but they duplicated storage, needed their own lifecycle, and became stale whenever the underlying folder changed.

There was not even a compression win to offset those costs. Our large objects are usually camera media, which is already compressed. Wrapping it in…

Fabric2026-09-08

A GPU is not a number

A pig inspecting a boxed graphics card in a computer-parts store.
Capacity planning in progress.

A request for “one GPU” sounds precise. To a researcher, it may be the only unusual resource a job needs. To the system running that job, it is the beginning of a much longer description.

Which GPU models can run the code? How much device memory is required? How many CPU cores are needed to keep it fed? How much system memory and temporary disk will the input, cache, and output consume? Can the selected machine reach the data? Is the runtime image compatible with its architecture and driver? One GPU is not a complete unit of capacity; it is one constraint among several that have to agree at the same time.

Fabric is the interface Aina's researchers use to submit work to shared compute. The…

Redthing2026-09-08

Making S3 look like a file

A pig adjusting a professional cinema camera among several camera rigs.
The read path under inspection.

A file and an object in S3 look similar from a distance. Both have a name and a length, and both contain bytes. The difference appears when a decoder asks for a few thousand bytes from somewhere in the middle.

Video software is built around random access. It reads a header, jumps to an index, finds the location of a frame, and then reads the compressed data for that frame. An object store offers no file descriptor and no seek. The conventional answer is to download the entire object first, but that is a large entrance fee when the useful result might be a single thumbnail.

Redthing works with RED camera footage stored in S3. Its central idea is to avoid teaching the decoder anything about…