I'm building a fake "alternative cable TV" network that transforms the Internet Archive's ephemeral VHS media into 24/7 live-synced television stations.
▲ 22 r/VHS

I'm building a fake "alternative cable TV" network that transforms the Internet Archive's ephemeral VHS media into 24/7 live-synced television stations.

I've been slowly cracking away at this website for the past 8 months, and would love to share and get any feedback from my fellow tapeheads about the site. I'm really proud of what its turned into, and have a lot more I want to add.

I'm particularly excited about the "Rewind" stations, which host direct-from-TV VHS rips that have been uploaded to the Internet Archive. They're chronological and include all the commercials of the era. I'm a huge fan of those "sold as blanks" tapes and how they're a time capsule for the moment they were recorded.

The goal with this site is to try and make some organizational sense of the 13+ million video files living on the IA, and transform them into something entertaining, usable, and fun for anyone who loves ephemeral art, analog media, nostalgia, and just weird TV. It's totally free to use and always will be, and there is a Discord community laid out, mainly to help me moderate inline comments on the tapes lol.

spelunkr.tv
u/thetalkinghawk — 3 days ago
▲ 276 r/ClaudeAI

I built a fake live cable TV network out of the Internet Archive's ephemeral media

It’s called spelunkr.

24 channels (so far) of forgotten videos organized into themed "cable tv channels" that play on a synced schedule 'round the clock.

The entire collection so far is about 2,700 hours of video, running around the clock. You tune in and land in the middle of whatever is on, at the same moment as everyone else watching, the way TV used to work.

Codebase is about 87,000 lines, made up of 24,000 of app code, 13,000 of CSS, 28,000 of tooling scripts, 16,000 of tests and 5,000 of SQL. 670 commits over 8 months, and we run over 850 unit tests and 160 browser tests. It's been a real passion project for me, really my first idea of what to build with Claude and has just been growing slowly as I've had time to work on it.

I've been plugging away at this off and on for the past 8 months, about 30 days of "total" work across that time, nearly all of it done with Claude Code. Here's how it works under the hood:

All videos on the website are streamed directly from the Internet Archive. The player is a plain HTML <video> element pointed at the Archive’s own file. No iframe, no proxy, no re-encoding, no copy. Spelunkr itself serves the page (about 110 KB of JavaScript, gzipped), small JSON schedules, and about 200 public domain or CC BY or BY-SA music tracks for the breaks. Every title links to the tape’s own page at the Archive.

There are station "bump" breaks between videos as an homage to the classic Adult Swim bumps.

Channels are built from Archive search audits to see if the IA has enough content to support a full length channel. Some channels are classed as "REWIND" and usually are 2 to 6 hour long VHS rips of actual live cable TV from someone's VCR in 1993. There's also classic movie channels dedicated to horror, monster flicks, detective noir capers, and western flicks. I even found every episode of The Joy of Painting and gave it CH 12: HAPPY TREES.

Claude checks all the tapes to make sure they're legit, then formulates the descriptions, facts, and schedule for me to approve. Each channel has its own branding, a 32×32 pixel logo drawn from eight color tokens, its own station-break voice and its own music pool.

A channel orders its tapes one of three ways: by year (8 channels), shuffled (12), or block rotation (4). Block rotation is a few episodes of one show, then the next show, round and round.

A channel is a published list of tapes with a start time.

“What is on now” is arithmetic: walk the schedule from its start to the present. The same code runs in the browser, the publishing tool and the tests, in whole milliseconds, so every machine gets the identical spot on every channel's schedule across the globe.

The math also accounts for the bump breaks, which get re-picked on every pass through the lineup. The browser measures its clock against the server’s once (the HTTP Date header) and corrects it only when it is more than 2 seconds off. A new lineup is published at least two minutes ahead and takes over at the end of a break. Open tabs hear of it over a websocket and switch without a reload.

Some key features built in:

  • Limited DVR: Pause, skip back 15 seconds, or scrub within the tape that is on. The player shows how far behind live you are, and LIVE snaps back. (While paused you fall further behind each second)
  • In-line timestamped comments and reactions: A comment is stored against the tape (its Archive identifier) and a second within it, not against a channel or an air date. It comes back at that second every time the tape airs, on any channel that carries it. I've linked up a discord to help moderate potential comments (there are none yet lol). Signing in to comment also joins you to the Discord. Reactions work the same way and require no account or Discord. Its a free for all. A reaction from someone within 10 seconds of your playhead floats up over your picture as it happens.
  • Comments are permanent pins on the timeline and pop up over the picture as the playhead crosses them. I like to think of it as pop-up video cable graffiti.

Future plans:

  • Marathon blocks
  • GeoCities-accurate homepages for every channel with guest books and webrings.
  • 90's chatroom skinned live chats from the discord server for every station.
  • Machine-generated live synced English subtitles for foreign stations (big interest in vintage Japanese Game Show channels)
  • Clipping for users and a leaderboard to browse and share clipped moments from live TV.
  • More channels: I'm currently building a "horror hosts" B-movie channel for Halloween. Think Elvira and many other public access hosts from bygone eras showing terrible creature features.
    • I've also got infomercials, game shows, paranormal TV, and probably another 50 channels worth of stockpiled ideas ready to build!
u/thetalkinghawk — 4 days ago
▲ 43 r/Thunder

You think the Spurs fan that wore a bubble wrap costume took it off and threw it in the garbage before they walked out during garbage time, or kept it on during the walk of shame to their car?

I always wonder about these things when fans wear costumes to the arena...

u/thetalkinghawk — 5 months ago
▲ 122 r/nba

Only 2 coaches in NBA history have a better record than Mark Daigneault through their first 40 playoff games

Daigneault hit exactly 40 career playoff games tonight at the end of Game 3 vs. the Lakers, finishing at 29-11. This ties him with Tyronn Lue and Pat Riley.

The Thunder lead that series 3-0, so a Game 4 win Monday pushes him to 30-11. He would own the #3 record solo if that happens. As it stands he's already part of the rarest air in NBA coaching history.

  • Phil Jackson — 30-10 (.750)
  • Steve Kerr — 30-10 (.750)
  • Pat Riley — 29-11 (.725)
  • Tyronn Lue — 29-11 (.725)
  • Mark Daigneault — 29-11 (.725, active)
  • Gregg Popovich — 27-13 (.675)
  • Erik Spoelstra — 23-17 (.575)

All seven won a championship within their first 40 playoff games. Full series-by-series breakdown:

1. Phil Jackson — 30-10 (.750) [1990–92, Bulls]

  • 1990 R1 vs MIL: 3-1
  • 1990 R2 vs PHI: 4-1
  • 1990 ECF vs DET: 3-4
  • 1991 R1 vs NYK: 3-0
  • 1991 R2 vs PHI: 4-1
  • 1991 ECF vs DET: 4-0
  • 1991 Finals vs LAL: 4-1 (title)
  • 1992 R1 vs MIA: 3-0
  • 1992 R2 vs NYK (G1–4): 2-2

2. Steve Kerr — 30-10 (.750) [2015–16, Warriors]

  • 2015 R1 vs NOP: 4-0
  • 2015 R2 vs MEM: 4-2
  • 2015 WCF vs HOU: 4-1
  • 2015 Finals vs CLE: 4-2 (title)
  • 2016 R1 vs HOU: 4-1
  • 2016 R2 vs POR: 4-1
  • 2016 WCF vs OKC: 4-3
  • 2016 Finals vs CLE (G1–2): 2-0

3. Mark Daigneault — 29-11 (.725) [2024–26, Thunder, active]

  • 2024 R1 vs NOP: 4-0
  • 2024 R2 vs DAL: 2-4
  • 2025 R1 vs MEM: 4-0
  • 2025 R2 vs DEN: 4-3
  • 2025 WCF vs MIN: 4-1
  • 2025 Finals vs IND: 4-3 (title)
  • 2026 R1 vs PHX: 4-0
  • 2026 R2 vs LAL (G1–3): 3-0 (series ongoing, OKC up 3-0)

4. Pat Riley — 29-11 (.725) [1982–84, Lakers]

  • 1982 WCSF vs PHX: 4-0 (Lakers had R1 bye)
  • 1982 WCF vs SAS: 4-0
  • 1982 Finals vs PHI: 4-2 (title)
  • 1983 WCSF vs POR: 4-1 (Lakers had R1 bye)
  • 1983 WCF vs SAS: 4-2
  • 1983 Finals vs PHI: 0-4
  • 1984 R1 vs KC: 3-0
  • 1984 R2 vs DAL: 4-1
  • 1984 WCF vs PHX (G1–3): 2-1

5. Tyronn Lue — 29-11 (.725) [2016–18, Cavaliers]

  • 2016 R1 vs DET: 4-0
  • 2016 R2 vs ATL: 4-0
  • 2016 ECF vs TOR: 4-2
  • 2016 Finals vs GSW: 4-3 (title)
  • 2017 R1 vs IND: 4-0
  • 2017 R2 vs TOR: 4-0
  • 2017 ECF vs BOS: 4-1
  • 2017 Finals vs GSW: 1-4
  • 2018 R1 vs IND (G1): 0-1

6. Gregg Popovich — 27-13 (.675) [1998–2001, Spurs]

  • 1998 R1 vs PHX: 3-1
  • 1998 R2 vs UTA: 1-4
  • 1999 R1 vs MIN: 3-1
  • 1999 R2 vs LAL: 4-0
  • 1999 WCF vs POR: 4-0
  • 1999 Finals vs NYK: 4-1 (title)
  • 2000 R1 vs PHX: 1-3
  • 2001 R1 vs MIN: 3-1
  • 2001 R2 vs DAL: 4-1
  • 2001 WCF vs LAL (G1): 0-1

7. Erik Spoelstra — 23-17 (.575) [2009–12, Heat]

  • 2009 R1 vs ATL: 3-4
  • 2010 R1 vs BOS: 1-4
  • 2011 R1 vs PHI: 4-1
  • 2011 R2 vs BOS: 4-1
  • 2011 ECF vs CHI: 4-1
  • 2011 Finals vs DAL: 2-4
  • 2012 R1 vs NYK: 4-1
  • 2012 R2 vs IND (G1–2): 1-1
reddit.com
u/thetalkinghawk — 5 months ago