A FEW MIN
EXHUME
A medium for dead code, dead websites and the apps you forgot.
Built by Taseen Tariq · spoken through Gemma 4 · for DEV's Hacktoberfest, week 4
The Camera Tap
On the afternoon of 30 September 2026, a feature was born inside TapOff, a small Android app.
You could tap the phone's camera, and sliders for brightness and volume grew out of it.TapOff's sliders, from its own website
It did not last the afternoon.
TapOff 1.8: back-tap sliders, favourites, NASA originals, update check
- Brightness and volume sliders grow out of the camera; open with a back tap… or, in landscape, a tap on the camera.
Seventeen minutes and seven seconds later…
TapOff 1.8.1: screen off closes in on your tap; simpler back-tap sliders
- Removed the lock-screen double-tap switch and the landscape camera tap, with their code
c491e5b deleted 96 lines from NotchPanel.java. Among them:
static boolean cameraTap(Context c) {static void setCameraTap(Context c, boolean on) {private Spot spot;addSpot();lp.setTitle("TapOff camera tap");// The tap target, with a faint ring around the camera so people know it's there.private final class Spot extends View {canvas.drawCircle(cx, cy, r, paint);open();
git show --numstat c491e5b · NotchPanel.java: 9 added, 96 deleted
The commit says what went. It doesn't say why.
But the dead code left one note behind.
// Tapping the camera, in landscape only: in portrait the status bar sits over the camera and takes every tap there.
private void addSpot() {
Context dc = display();
if (portrait(dc)) return;
RectF hole = hole(dc), frame = new RectF(hole);
frame.inset(-10 * dp, -10 * dp);
spot = new Spot(c, hole, frame);
So we asked it.
The code that was removed included a comment stating that the camera tap was for landscape only because in portrait the status bar sits over the camera and takes every tap there. E5
E5: // Tapping the camera, in landscape only: in portrait the status bar sits over the camera and takes every tap there.
$ python3 exhume.py summon cameraTap "Why only in landscape?"
TapOff went from version 1.0 to 1.9 in 21 hours. Things died along the way.
Every answer points at the evidence it came from.
Exhume dug eight graves in TapOff's history. All of them, 29 and 30 September 2026:
Tchau, Orkut
From January 2004 to September 2014, millions of people came together on Orkut, Google's first social network.
They met in communities, a vast collection of them, one for each shared interest.
It closed. The Wayback Machine kept copies.
On that 2016 page, he wrote that Orkut had grown to over 300 million people.
Exhume reads these pages back, and keeps them on your laptop.
“We will shut down Orkut on September 30, 2014.”
Orkut Blog, “Tchau Orkut”, saved 30 June 2014 · evidence E4
I was bid farewell in June 2014, and the service was set to shut down on September 30, 2014. E4
E4: We will shut down Orkut on September 30, 2014.
$ python3 exhume.py summon orkut "When did you die?"
The Forgotten
Some things don't die. We just stop opening them.
Your Mac remembers the last day you opened each app.
Not opened in 14 days
- NordVPN
- Developer
- Figma
- RustDesk
- Safari
- ScreenKite
- Stats
- Tailscale
- Visual Studio Code
For eight of them, macOS has no record of an opening. NordVPN was last opened on 7 October.
$ python3 exhume.py tombstone NordVPN
NordVPN
last opened 2026-10-07
Cause of death: The record does not say why. E7
“A utility for digital freedom, now resting.”
Last opened on 7 October. Not since.
Exhume won't guess why. When the record is silent, so is the tombstone.
On the Day of the Dead we remember the ones we lost.
Exhume remembers the ones you forgot.
The Spirits Are Silent
Goya drew it in 1799: the sleep of reason produces monsters.
An AI that makes things up is a monster of that kind.
So Exhume is built to stay awake.
The spirits are silent.
$ python3 exhume.py summon EdgeVolume "How many people downloaded you?"
The spirits are silent.
$ python3 exhume.py summon orkut "What was your favourite community?"
Every answer must cite real evidence. Any number must appear in that evidence.
If it can't, the medium says nothing.
The storm passes.
What Exhume dug up stays on your laptop, in graves/.
Dig One Up
No account. No cloud AI.
One Python file and Gemma 4, running on your own laptop.
Watch it dig, in under a minute:
How it works, in four steps:
Dig
Plain code finds the dead: removed code in git history, old pages on the Wayback Machine, apps your Mac stopped seeing you open.
exhume.py find code|site|appsNumber the evidence
Every fact about each grave is written down as E1, E2, E3… and saved on your laptop.
graves/*.jsonSummon
Gemma 4 answers your question from that evidence only, through Ollama, on your own machine.
gemma4:e4b · localhost:11434Check
Plain Python keeps the answer only if it cites real evidence and every number is in it. Otherwise: the spirits are silent.
guard() · numbers_ok()ollama pull gemma4:e4bgit clone https://github.com/taseen-t/exhume && cd exhumepython3 exhume.py find code ~/code/some-repopython3 exhume.py summon NAME "Why were you removed?"
What did you bury?
Exhume dug three graveyards for this page.
TapOff's git history: eight graves, all from 29 and 30 September 2026.
Orkut: open from January 2004 to 30 September 2014. The Wayback Machine's oldest copy of the domain dates from 2 February 2001. On 28 October 2026, orkut.com still answered.
One Mac: nine apps not opened in 14 days. For eight of them, macOS has no record of an opening.
Every answer on this page points to its evidence. Where there was none, the spirits were silent.
Credits
The medium: Gemma 4 E4B, run by Ollama on your own laptop
The digging: plain Python, reading git, the Wayback Machine's index and macOS's own app records
The guard: two Python checks that throw out any answer without its evidence
Lettering: Permanent Marker, Mansalva and Crimson Pro, from Google Fonts
Drawn in code: rain, sea, lightning, sun, flowers, smoke, lanterns, the ring and this film's grain
Archive
Title
J. C. Dahl, Norwegian Seacoast During a Storm
Chapter 1, The Camera Tap
Frank Short, Vessel in Distress of Yarmouth
Utagawa Hiroshige, Night Rain at the Azuma Shrine
Hans Holbein the Younger, Dance of Death: The Sailor, The Miser, The Child
Agostino Veneziano, Skeletons
Giovanni Battista Piranesi, The Skeletons
Max Klinger, On Death, Part I
Chapter 2, Tchau, Orkut
Tani Bunchō, Mountain Market in Clearing Mist
Chapter 3, The Forgotten
José Guadalupe Posada, The Skeleton of the Buses
Charles Meryon, Molière's Tomb in Père Lachaise Cemetery
Max Klinger, On Death, Part I
Chapter 4, The Spirits Are Silent
Francisco de Goya, The Sleep of Reason Produces Monsters
Agostino Veneziano, Skeletons
Chapter 5, Dig One Up
J. M. W. Turner, Queen Mab's Cave
The film
Frank Short, J. C. Dahl and Utagawa Hiroshige, from the chapters above, run again
Every print: Cleveland Museum of Art, open access, CC0, shown in black and white. TapOff's screenshot comes from TapOff's own website. Every quote on this page is evidence Exhume read from TapOff's git history, the Wayback Machine or a Mac's own records.