The notebook / 2016 to 2026

Things I keep
coming back to.

Cameras, virtual spaces, small tools and the ideas behind them. Notes from the places where software meets the world.

Reconstructed from project notes and saved references. Archive months describe the historical subject period; each article shows its publication date.

138 articles

2026

Aerolith: Giving a Small Arcade Game a Clear Shape

Aerolith is a three-mission arcade-shooter prologue for iPhone. Automatic fire, a short escape route and readable threats keep the game's attention on movement through the screen.

3 min read

Thalassa: A Game Built over a Weekend

I built a Thalassa game prototype with GPT-6 over a weekend and shared it while much of the graphics was still missing. The next useful step is choosing what needs to become coherent before adding more.

2 min read

One Photo, a Gaussian Scene, and an Awkward Face

I tried making a Gaussian scene from one ordinary photograph. The awkward result around a face was a useful reminder that a plausible new view is an inference, not another captured observation.

2 min read

Camera Calibration from a Single Image

GeoCalib estimates camera parameters and gravity direction from one image. It is useful for bringing unfamiliar photographs into graphics workflows, provided calibration estimates are not mistaken for a complete scene reconstruction.

3 min read

A Printer Plugin Grows Up

The v3 rewrite of my Unity printer plugin separates capture, document layout and platform printing. A capability-based API makes differences between desktop, mobile and browser output explicit.

4 min read

Stereo Video from an Ordinary Web Page

My Safari extension prototype reuses a page's video as a texture and presents the correct region to each eye in WebXR. The crop is simple; orientation, controls and browser playback behavior take more care.

3 min read

Keeping an Experimental Practice from Narrowing

J Bostock's essay on mode collapse is a useful prompt to examine how successful habits can narrow a creative practice. I am interested in preserving the ability to try unfamiliar work without treating specialization as a failure.

3 min read

Giving an Attractor a Place in the Room

My early visionOS Hopalong prototype turns a deterministic attractor into a spatial tunnel. The interesting design work is in scale, movement and the viewer's ability to remain comfortable inside the pattern.

3 min read

From Pascal and Assembly to Swift and Metal

I started porting an old assembly and Pascal project to Swift and Metal with Codex. The first problem worth fixing was how the agent explained its work, because I still needed to understand the transformation.

2 min read

Porting AquaDegrees While I Was Away

I asked Claude Code to read AquaDegrees for iOS, leave it untouched and build an Android counterpart. About an hour later, an emulator was running the result, including widget and watch components.

3 min read

2025

Smart Contracts as a Test for Coding Agents

Smart-contract simulators provide a concrete way to test an agent against executable behavior. Anthropic's study is most useful as a lesson in reproducible security evaluation, rather than a headline about stolen funds.

3 min read

From a Panorama to a Graphics-Ready Room

OmniX links panoramic generation with depth and material estimation. The useful question is what survives when an attractive panorama becomes a scene that can be relit and viewed from elsewhere.

3 min read

Putting a Real Camera inside a Unity Workflow

A Canon camera and a Unity scene operate on different schedules. My plugin work connects device control and live-view data while making session lifetime and threading explicit.

3 min read

Building Compliage from the Beach

I used Gemini CLI to build Compliage while on holiday, including data work, payments, tests and deployment. The experience made the role of a precise engineering request more obvious, not less.

4 min read

A Smaller File Can Change a 3D Workflow

SOG packages Gaussian scenes into a more compact form for delivery. Its practical significance is the shorter path from a captured scene to a page someone can actually open.

3 min read

Spatial Video as a Memory Format

I have been taking more spatial photos and videos because I enjoy revisiting ordinary moments in a headset. The value is personal, and it changes what I consider worth capturing.

2 min read

AquaDegrees: One Small Question, One Small App

AquaDegrees keeps its scope close to a single question: how warm is the water nearby? By summer 2025, its phone and Watch surfaces were different ways to reach that same answer.

3 min read

Water Temperature at a Glance

Adding AquaDegrees to Apple Watch exposed the difference between fetching a value and showing a timely value on a watch face. Synchronization and refresh behavior deserve as much attention as the compact layout.

4 min read

Two Nights with a Coding Agent

After two nights with Claude Code, the useful lesson was about task definition and review. Fast implementation is most valuable when I can say precisely what a correct result should do.

2 min read

What a Research Notebook Sounds Like

I tried NotebookLM in Russian and liked the result. Listening can reveal a different structure in research material, but the original documents remain the place to check what the narration claims.

2 min read

Measuring Stereo Compression One Eye at a Time

A stereo compression comparison needs separate left-eye and right-eye measurements, aligned frames and an explicit aggregation method. My script sets up the experiment, but its summary is not a sequence-level benchmark.

4 min read

A Smaller View of a Very Large Stereo Frame

My small C utility extracts one eye from a large stereo HEVC frame, resizes it and encodes a smaller output. It is a useful example of why a preview stream should have an explicit purpose.

3 min read

Exact Volumes, Familiar Splats

EVER changes the rendering calculation behind an ellipsoid-based scene. Exact volumetric integration offers a useful comparison with the screen-space approximation used by Gaussian splatting.

3 min read

A Camera Control Panel in Half an Hour

Claude helped me build a Python camera server and a browser control panel in about half an hour. Preview and settings worked as a prototype; simultaneous dual-4K recording remained the next experiment.

3 min read

2024

Ordering a Tiny Computer for a Big Stereo Idea

I ordered a Jetson Orin Nano Super to explore a compact stereo-camera setup. The immediate engineering question is video throughput, especially on a board without a dedicated hardware encoder.

3 min read

From a Prompt to a Small Application

GitHub Spark proposes personal micro-apps built through a natural-language editor and managed runtime. The difficult boundary is between a convincing demonstration and a tool that stays useful after repeated use.

3 min read

The Browser Is Becoming a Serious Game Target

Unity 6 makes mobile web a more explicit target. A good browser game starts with its loading and input constraints, because the first minute includes the wait before the first move.

3 min read

The Notebook of Ideas Starts to Look Buildable

Trying Replit Agent made a backlog of small ideas feel more approachable. The valuable change is reaching a testable interaction sooner, while keeping the experiment small enough to judge.

3 min read

Preparing AquaDegrees for Its First Store Version

The first store-version milestone for AquaDegrees was a change in expectations. A useful prototype had to become an app that could explain itself without its developer standing nearby.

3 min read

A Gaussian Scene You Can Touch

VR-GS adds simulation and interaction to a Gaussian scene. It exposes the missing link between a representation that looks like an object and one that can respond like an object.

3 min read

One Model, Several Macs

Experimental distributed inference can combine the memory of several machines. The useful distinction is between fitting a larger model and making it respond faster.

3 min read

Stereo Vision Still Matters

Deep stereo matching is easier to understand as a chain of assumptions than as a leaderboard. Calibration, ambiguous surfaces and temporal consistency shape the result before a model reaches an application.

3 min read

A Small App for a Very Local Question

The early water-temperature app starts with a narrow, practical question. Its hardest design requirement is making a small answer understandable without implying more precision than the data provides.

3 min read

Generating Motion from 2D Evidence

MAS builds 3D motion from a model trained on 2D motion evidence. Its interesting step is the repeated negotiation between plausible views and a consistent moving skeleton.

3 min read

WebGPU Reaches Android

Chrome 121 brought WebGPU to a subset of Android devices. Compute access is useful, but a mobile browser still has a frame budget, a battery and a page that must respond to touch.

3 min read

I Let an AI Assemble a Short Video

A two-minute InVideo experiment produced a complete short from a single request. The useful result was a first edit I could react to, rather than a collection of separate assets.

3 min read

2023

Depth from One Picture, with a Diffusion Prior

Marigold uses a diffusion model's visual prior to estimate relative depth from one image. Useful depth structure does not imply a physical distance measurement.

3 min read

Small Stereo Baselines Have a Use Case

A small camera baseline produces less stereo disparity, which can be useful for close subjects even though it limits depth separation farther away.

3 min read

Can You Walk around a Live Stream?

4D Gaussian Splatting makes dynamic scenes render quickly after training. Live volumetric streaming needs several additional parts of the pipeline.

2 min read

Small Equations, Long Orbits

Barry Martin's Hopalong recurrence generates intricate orbits from a few parameters. A small implementation makes its rules easy to explore.

3 min read

Gaussian Splatting Comes to Unity

Aras's Unity Gaussian Splatting project brings a new scene representation into a familiar engine, exposing practical questions about blending, memory and interaction.

3 min read

A Local Chatbot for a Folder of Documents

A local document assistant needs reliable retrieval and visible evidence. The language model is only one part of answering questions about a folder.

4 min read

Local Language Models Learn to Use the GPU

The first Metal implementation in llama.cpp moves local generation onto Apple silicon GPUs, while memory and the distinction between prompt processing and decoding remain important.

3 min read

Looking Back at My Leap Motion Projects

The second Leap Motion controller announcement made me revisit why hand tracking appealed to me, and what a useful gesture interface still needs.

2 min read

From a Single Image to a 3D Asset

Make-It-3D combines image evidence with a diffusion prior, showing both the appeal and the ambiguity of generating an object from one view.

3 min read

Building a Small Tool with GPT-4

I used GPT-4 to build a small Python application connecting YouTube Data API and ChatGPT API. The useful surprise was how it explained the surrounding setup.

2 min read

A Model That Knows When to Use a Tool

Toolformer explores how a language model can learn when an external calculation or lookup is useful, rather than relying on text prediction alone.

3 min read

The VR Camera Is Becoming a Sensor System

Lenovo's Project Chronos concept treats the camera as a sensor for an avatar, raising questions about depth, tracking and access to the resulting data.

3 min read

2022

Diffusion on the Machine You Already Own

Apple's Core ML Stable Diffusion work brings local generation closer to ordinary applications, where memory, responsiveness and model packaging become product decisions.

3 min read

Two Images, One Depth Map

Stereo depth turns disparity into distance. HITNet improves the matching stage, while calibration and uncertainty still determine how the result can be used.

3 min read

NeRF Leaves the Research Notebook

Nerfstudio makes radiance-field experiments easier to inspect and repeat, bringing attention to the workflow around the rendering method.

3 min read

From a Prompt to a Place

Generated images suggest a route toward generated places, but a navigable world must preserve relationships that a single picture can leave unresolved.

2 min read

A Digital Head from a Single Picture

MegaPortraits separates a source identity from driving motion, while using learned priors to fill information that a single portrait cannot contain.

3 min read

Mixed Reality Needs More than Passthrough

Presence Platform and The World Beyond suggest how a mixed-reality application can treat a room as an interactive place rather than a video background.

2 min read

Can My GoPro Become a 4K60 Streaming Camera?

My search for 4K60 GoPro streaming led to Open GoPro and GoPro Labs, and to a useful separation between controlling a camera and obtaining its video.

3 min read

Scanning a Room with an Ordinary Camera

NeuralRecon combines local surface predictions over time. A stable room scan depends on that accumulation as well as the quality of each frame.

3 min read

The Server Hiding inside Web3

A decentralized ledger can still reach its users through centralized servers. Web3 applications need to be examined along the whole request path.

3 min read

2021

One Lens, Two Views

Canon's Dual Fisheye design puts two views on one sensor, simplifying synchronization while leaving stereo geometry and projection work intact.

3 min read

When a Neural Scene Changes Shape

HyperNeRF uses an expanded representation to handle changes that a simple deformation of a fixed scene cannot describe cleanly.

3 min read

Painting with Materials instead of Pixels

Canvas turns semantic regions into images, making composition and material choice direct controls while leaving exact detail partly to the model.

3 min read

Landscapes from a Few Functions

Procedural terrain becomes easier to understand when broad shape, fine variation and safe distance estimates are treated separately.

3 min read

Cloth Is Still a Difficult Simulation

Learned garment deformation can make clothing more practical to animate, but body contact, material behavior and unfamiliar poses remain distinct challenges.

3 min read

A Digital Avatar Starts with a Camera

NVIDIA's AR SDK can provide face and body estimates, but an avatar needs an explicit mapping from those measurements to its own expressive controls.

3 min read

An NFT Is More than the Token

An NFT connects a token record to metadata and media through several systems. Persistence depends on how those connections are maintained.

3 min read

MetaHuman and the Cost of Believability

MetaHuman lowers the cost of assembling a detailed digital person, while leaving performance, lighting and character decisions in the creator's hands.

3 min read

2020

A Fashion Show You Can Walk Through

Balenciaga Afterworld makes fashion presentation spatial. That changes how a viewer moves, where attention lands and how clothing can be inspected.

3 min read

Running a Neural Network inside Unity

Putting style transfer into a game requires attention to image conversion, GPU work and temporal stability as well as the neural network.

3 min read

What Depth Could Add to Web AR

The early WebXR depth proposal could help virtual objects respond to real surfaces, but depth must be aligned, interpreted and trusted selectively.

3 min read

Virtual Production on a Small Setup

A small virtual production setup needs a dependable matte, matched camera geometry and controlled delay before it needs a complicated set.

3 min read

The Messy Internet as a 3D Dataset

NeRF-W separates persistent scene structure from changing appearance and temporary occluders in uncontrolled photo collections.

3 min read

The Last Percent of a Digital Human

Gawain from The Heretic is a useful reference for thinking about how facial geometry, lighting and motion must agree.

3 min read

The Webcam Becomes a Graphics Input

A webcam becomes an input device when tracking data is translated into stable, correctly timed controls for a graphics application.

3 min read

NeRF: A Scene Stored as a Function

The original NeRF represents a scene with density and view-dependent color. Rendering a new view means sampling that function along camera rays.

4 min read

The Meeting Room Is Becoming a Scene

Spatial collaboration becomes useful when people need to point at the same object, rather than simply occupy the same virtual room.

3 min read

2019

What StyleGAN2 Fixed and What It Did Not

StyleGAN2 traces recurring image artifacts back to architecture and training choices. Cleaner outputs improve the tool without making its latent space a complete model of the world.

3 min read

Separating a Song into Its Parts

Spleeter estimates separate musical sources from a finished mix. Its usefulness comes from making an imperfect inverse problem easy to explore.

3 min read

From RenderTexture to a Printed Artifact

The public PrinterPluginPro documentation turns a Unity image into a clear integration contract: readable pixel data, explicit page fitting and a deliberate capture step.

4 min read

Hands as a Mobile Interface

MediaPipe's hand-tracking pipeline separates locating a palm from estimating finger landmarks. A usable gesture interface needs another layer of state and feedback.

3 min read

Rendering a Scene without a Mesh

Neural Point-Based Graphics attaches learned features to a point cloud and trains a renderer to turn projected features into an image.

3 min read

Walking between Photographs

DeepView uses layered images to synthesize nearby viewpoints. Occlusion is the reason a stack of layers can do more than a single depth-warped photograph.

3 min read

AR without an App Install

Browser AR reduces the cost of entering a spatial experience. A good prototype still needs a narrow tracking promise and a useful fallback.

3 min read

Teaching Game Agents to Play Together

A small soccer environment exposes the design decisions behind learned behavior: what agents observe, which actions they can take and what earns a reward.

3 min read

Putting Body Tracking inside Unity

OpenPose's Unity wrapper supplies body keypoints. Turning those estimates into interaction requires coordinate mapping, confidence handling and a clear behavior when tracking fails.

3 min read

Presence from Four Depth Cameras

Multiple depth cameras can turn a remote person into a spatial capture. The useful freedom depends on coverage, alignment and what the cameras cannot see.

3 min read

Mobile XR Has a Bandwidth Problem

Mobile XR moves camera, tracking and display data through a shared power budget. More compute helps only when the whole pipeline keeps up.

3 min read

2018

VR180 Is Geometry Hidden in a Video File

My VR180 broadcast experiments led into MP4 projection metadata, where a rectangular video frame becomes separate views on a mesh.

3 min read

The Browser as a Door into VR

Firefox Reality brings the web's familiar idea of following a link into a headset, where navigation and text input need different treatment.

2 min read

Why VR180 Trades Coverage for Detail

VR180 spends its image budget on the space in front of the camera. That changes both technical sampling and the way a scene should be staged.

3 min read

Calibration before Reconstruction

A reconstruction pipeline needs agreement about lenses, coordinate systems and time before it can turn images into a trustworthy scene.

3 min read

Livepeer: A Useful Question for Blockchain

Livepeer's alpha connects a concrete computing job to a coordination protocol. The interesting questions concern service quality, verification and payment.

3 min read

From a Short Video to a Digital Human

A monocular video can constrain a digital human from several directions, provided the system accounts for the person's motion between frames.

3 min read

Learning ML from the Graphics Side

I want to learn machine learning through images and graphics problems I can inspect, starting with small experiments and honest comparisons.

3 min read

A Mandelbrot Set on the GPU

The Mandelbrot set is a compact way to understand GPU work: independent pixels, repeated arithmetic and a surprising amount of control-flow variation.

2 min read

What Does a Private Transaction Hide?

Zcash separates proof that a transaction is valid from public disclosure of its contents. Privacy still depends on the surrounding transaction path.

3 min read

2017

Why Bright Renders Turn White

Filmic makes the transformation from scene values to display values explicit. A bright pixel need not lose all of its neighbors to clipping.

2 min read

Mining Profitability Is a Moving Target

MultiPoolMiner is an example of a controller choosing between changing estimates. Switching costs and stale measurements complicate the obvious rule.

2 min read

Discovery without an Infinite Feed

A map and a decade selector offer a different rhythm for music discovery: choose a direction, then let the archive surprise you.

2 min read

Can You See a Blockchain?

Transaction visualizations make a network feel tangible, but their mappings can hide uncertainty about what the activity actually means.

2 min read

Printing a Unity Texture in the Real World

My early PrinterPluginPro work connects a Unity texture to a physical printer. The difficult part is the boundary between rendering and native output.

4 min read

RTMP Can Carry More than Video

A small .NET RTMP client separates three ideas that are often bundled together: media transport, remote calls and video encoding.

3 min read

A Shader Is a Small World

A fragment shader turns coordinates and time into an image. A tiny moving shape is enough to explain the feedback loop.

2 min read

2016

From Edges to Images with pix2pix

pix2pix treats image translation as a learned relationship between paired examples, with a second network judging whether the result fits.

3 min read

Two Fisheye Images, One Difficult Seam

My early theta_stitch work sits inside a deceptively compact problem: reconciling lens geometry, overlap and parallax between two fisheye images.

3 min read

Small Rules, Surprisingly Large Worlds

Wave Function Collapse builds larger patterns by propagating local constraints. Its successes and contradictions are both useful to understand.

3 min read

Making a Voice One Sample at a Time

WaveNet generates an audio waveform through conditional prediction, revealing both the richness and the cost of working at sample scale.

3 min read

What an Immutable Ledger Can and Cannot Decide

Ethereum's hard fork separates two questions that are often bundled together: how a ledger records decisions and how people decide which ledger to follow.

3 min read

The Room Is Part of the Interface

HoloLens development changes interface design by making gaze, gestures, sound and the surrounding room part of the same problem.

3 min read

A Web Page You Can Step Inside

Early A-Frame makes a useful promise: describe a small 3D scene with familiar web tools, then share it through a link.

3 min read