dan morris :


MegaDetector (GitHub)
...with AI for Earth, especially Siyu

MegaDetector finds animals and people in images from motion-triggered wildlife cameras. It helps conservation scientists spend less time doing boring things.

The Planetary Computer (GitHub)
...with AI for Earth

Microsoft's Planetary Computer makes it easier for sustainability folks to answer conservation questions with gobs and gobs of data.

LILA BC (Labeled Information Library of Alexandria: Biology and Conservation)
...with lots of folks from Zooniverse, UMN, and UWyo

LILA BC is an open repository of labeled data, especially camera trap images, that facilitates AI model training for conservation.

...with ian, sumit, richard, and lots of other folks from MSR

Songsmith lets anyone make music (yes, you!), and provides an “intelligent scratchpad” for songwriters.

Everything I know about ML and camera traps

A living literature review about the use of ML for wildlife cameras.

species classification
...with Marcel, Neel, and AI for Earth

The AI for Earth species classification API recognizes plants animals in images. And the demo has cool pictures of animals.

...with scott, Andrew, and Ilya

Workout finds, recognizes, and counts exercises from an arm-worn sensor. Some of this work shipped with the Microsoft Band.

Dan’s Big Awesome Songbook

lots of songs I like to play. Code was involved in the making of this songbook.

Pulsatile Signal Analysis

I’ve done lots of stuff with pulsatile signals; pieces have transferred to products including Microsoft Band and Xbox One Kinect.

recumbent computing
...with chris

I briefly couldn't go more than a couple hours without lying down (due to getting old orthopedic injuries), but got myself up to full productivity lying down.

patient-friendly displays
...with lauren, laura, and cue

this work explored ways to make medical information more useful to hospital patients.


My Running Log

Lest I should allow any activity in my life to not involve writing code, I crawled my gps running logs to (a) back up my own data and (b) make this nifty-looking table.


my tometometer

I parsed Flixster’s JSON to produce the “tometometer” (get it?!?!?), a measure of my taste in movies compared to everyone else’s.


Interesting Stuff on Microsoft’s Campus

I maintain a page that tracks objects and places I deem to be interesting on Microsoft’s Campus, with contributions from others @ MSFT. MSFT-internal access only.


PlayerBot 2000

Using advanced artificial intelligence techniques, I created a sophisticated simulation of a post-game interview with an NFL player. (source)

Data-Driven Chord Sequence Exploration
...with Eric and Sumit

This project explored intuitive blending of genre-based statistical models of chord sequences.

User-Specific Pitch Transcription
...with Andrew and Sumit

Real-time vocal transcription doesn’t quite work yet; user-specific training might get us one step closer.


muscle-computer interfaces
...with scott, desney, and ravin

Muci’s sense electrical muscle activity to infer finger movement.

SoundWave: Ultrasonic Sensing for Gesture Input
...with Sidhant, Shwetak, and Desney

Soundwave leverages commodity speakers and microphones to sense in-air gestures.

HumAntenna: gestures from RF noise
...with Gabe, Shwetak, and Desney

Your house is filled with electromagnetic noise. HumAntenna uses that noise to sense gestures.

...with chris and desney

Skinput uses a novel sensor to turn your arm into a touch screen.

...with neema, Merrie, & Mary

A shared display of Web search activity for classroom environments.

Dynamic Mapping of Physical Controls
...with Rebecca and Merrie

This project explored the integration of physical controllers into a multi-touch environment.

...with ian and sumit

MySong generated chords to accompany a vocal melody. It became songsmith.

...with a.j. and brian

superbreak adds hands-free interactivity to traditional ergonomic break-reminder software.

...with merrie and gina

searchbar is a browser history view centered around search topics and queries.

surgical simulation

my phd work focused on haptics and physical simulation for virtual surgery.

neural prosthetics
...with Cyberkinetics

In a previous life, I worked on neural prosthetics. This page presents basic concepts and code.

chai 3d
...with the chai team

chai 3d is an open-source scenegraph library for haptics and graphics.

evaluation of haptic rendering
...with stanford biorobotics

...is a data and analysis repository for evaluating the realism of haptic rendering.

haptic mentoring
...with stanford biorobotics

The “haptic mentoring” project explored the use of haptics to teach force-sensitive motor skills.

data structures for haptics

this technical report describes a few haptics-related algorithms, data structures, and optimizations used in my thesis work.

haptic battle pong
...with neel

Haptic Battle Pong is still the world’s only most awesome six-degree-of-freedom haptic sports/combat game.

calibration of deformables

My thesis work included a pipeline for making non-physically-based deformable models a little more accurate.


This page hosts my implementation of the deformable mesh model I used for my thesis work.


voxelizer generates voxel arrays and internal distance maps for surface meshes.


winmeshview is a simple (and free) viewer and converter for 3d surface and tetrahedral meshes.

cs148: introductory graphics

I taught intro graphics at Stanford over the summer of 2005. Content archived here. I gave out some free candy, which is not archived.

life-sized candyland
...with Augusto and Jeff

we built a life-sized candyland game. a clapper was involved, as was actual candy. part of the third-floor’s holiday extravaganza.

audio for collaborative environments
...with merrie

This project explored the use of private audio channels in single-display groupware systems.

...with neel and kirk

The tele-drawing robot allowed a user to tele-operate a robotic arm (from like 10 feet away) and draw inspiring two-color pictures.

hybrid rendering
...with neel

This project – which we called “MengkuduGL” for reasons that I can’t remember but probably seemed really funny at the time – combined offline raytracing with real-time graphics and haptics.

haptic images
...with neel

This system explored haptic and audio rendering of visual edges, depth, and flow.

surgical robot visualization
...with intuitive surgical

a real-time opengl visualization of intuitive’s da vinci surgical robot system.

fitness racer

instructions and code for controlling a cheap rc car with a dance dance revolution pad via your pc.

killer death tag
...with neel and soren

robots running about while loud music plays and hopefully convinces the viewer that the robots are doing something useful. don’t miss the exciting video.

virtual winter wonderland

virtual winter wonderland
...with neel

via “advanced computer vision techniques”, viewers are transported into a magical winter world. also there are funny hats.

la bastille
...with techhouse

Tetris on a 15-story building... the greatest moment in the history of the pc’s parallel port.

march of the snowmen
...with the gates third floor

An entry in the Gates holiday decoration contest, including Spinny the spinning snowman and the musical light show.

alternative splicing in arabidopsis

As an intern at Cereon Genomics, I explored alternative splicing in arabidopsis. Results were proprietary, so I made a scientifically useless document describing the work without providing any useful information.

Set List Generator

This project uses constrained optimization to generate set lists for ‘80s cover bands.

HTML Image Sizer

HTML Image Sizer fetches an HTML page and its images and adds missing size tags for all <img> tags.


A shell extension that I wrote to datestamp/timestamp files in Windows explorer (append time and date information to the filename). For example, if I have a file called “hello.zip”, I can right-click on it, select “dsm_datestamp”, and it becomes “hello.”.


This is a simple C++ library that lets you play any supported media type (e.g. mp3, wav) on any subset of available audio devices. There is also a Java wrapper.


I created Stomp-a-Grinch as part of the Stanford CS building’s annual holiday decoration contest (contest video). It’s a simple game that provides the satisfaction of stepping on things and hearing explosions (Stomp-a-Grinch video).

handwriting synthesis

This is a set of Matlab scripts to generate text in my own handwriting (based on scanned examples). Here is a tiny bit of example output.

palm keyboard driver

This is an application that allows you to use a Stowaway fold-up keyboard – intended for use with the Palm Pilot – with a PC. I also wrote a calibration program for this utility.


This is a library that makes it convenient to write strings out to an Optrex-type LCD module via the parallel port.

tutorials on random things I kept forgetting about

linear elastic material properties

linear elastic material properties” is a tutorial i put together to remind myself what the basic elastic moduli mean, since during my PhD they came up just often enough that I needed to remember what they are but just infrequently enough that i could never remember which is the bulk modulus and which is the young’s modulus, etc.

the inertia tensor

what the hell is the inertia tensor?” is a tutorial i put together to remind myself of the intuition i achieved at some point regarding a topic that comes up a lot in graphics, haptics, robotics, and simulation.

transistors as switches

often times i find myself needing a simple transistor circuit for a hobby project, and — being not at cosmic oneness with the n or the p — i typically forget how to connect them, which is the base and which is the emitter, etc. “using transistors as switches” is a little tutorial i put together so i could just download what i usually forget on this topic whenever it comes up.

an intuitive but not-all-that-mathematically-sound explanation of the fourier transform

an intuitive but not-all-that-mathematically-sound explanation of the fourier transform” is a tutorial i put together to walk non-signal-processing folks through the typical formulation of the fourier transform, somewhere between an explanation and a mnemonic device.

...believe it or not, vga signals actually passed over the messes of wire in these pictures, bringing many pretty colors to the tiny displays you see here... this was a typical project at tiqit, where I actually got paid to make messes like this.