← milansalvi.com·Y2K Lab: my student project from 2000, preserved for 26+ years
Y2K Lab: this page is 26 years old I wrote these eight programs in the year 2000, as a student teaching myself how machines learn. Everything here (the design, the code, the words) is preserved exactly as it was back then. Only the dark bar at the very top is from the present day.

What I built eight small experiments in artificial intelligence

These are eight little programs I wrote to teach myself how artificial intelligence really works. Each one is a different kind of learning machine, written from scratch in plain JavaScript: no shortcuts, no libraries. Give one of them a few examples and it learns: it builds up its own idea of what a digit looks like, or what makes a star a star, or which words tend to show up in junk mail. The maths is simple; it is only the patience of the machine that makes it look clever.

live Digit recognition

digit recognizer

Draw a digit by hand. The network watches as you write and tries to read what you wrote.

html · css · js »
live Pair-matching

Whose handwriting is this?

Register a few writers. The network learns each one's style fingerprint, then identifies any new sample by comparison.

html · css · js »
live Image classifier

tiny CNN

A small image classifier built from scratch. Define your own categories, draw a few examples, and watch the network learn.

html · css · js »
live Sketch guesser

quick draw clone

Doodle something on the canvas. The network races you to guess what it is before you have finished drawing.

html · css · js »
live Sketch matcher

doodle to emoji

Draw any of 24 things (a star, a tree, a cloud, a fish) and the network picks the closest match.

html · css · js »
live Game-playing AI

RPS mind reader

Rock, paper, scissors against a computer that quietly learns your habits and starts winning.

html · css · js »
live Text classifier

spam filter

Show it a few examples of spam and a few normal mails. The classic Bayesian filter from the early days of the internet.

html · css · js »
live OCR

plate reader

Upload a photo of a number plate. The program walks through grayscale, threshold, segmentation and template matching, and reads the plate.

html · css · js »