Block M

The board that refused to die

How a thirty-year-old community lost its home, got a new one in six days, and came back bigger than ever.

The numbers, live

383members285 at the old board's peak
37,609messages postedsince August 3
70,594pageviews yesterdaycounted, not estimated
$7per month, totalthe whole operation
686photos & clips hostedcompressed, EXIF-corrected
114polls & pick 'em gamesmember-created
9Hall of Fame postsenshrined by member vote
304arcade games playedon games built for the board

These figures are queried live from the board's database every time this page loads — this page is served by the same $7 server it describes. 51 days live, zero data lost.

2026-09-09: 53,104 pageviews 2026-09-10: 48,822 pageviews 2026-09-11: 44,591 pageviews 2026-09-12: 76,564 pageviews 2026-09-13: 52,722 pageviews 2026-09-14: 53,828 pageviews 2026-09-15: 47,661 pageviews 2026-09-16: 45,442 pageviews 2026-09-17: 56,009 pageviews 2026-09-18: 48,377 pageviews 2026-09-19: 62,328 pageviews 2026-09-20: 50,890 pageviews 2026-09-21: 47,845 pageviews 2026-09-22: 70,594 pageviews 2026-09-09 2026-09-22 peak 76,564/day

Daily pageviews, most recent 14 days — drawn from the live traffic table at page load.

The crash

Since 1995 — before Google existed — a few hundred Michigan fans have argued about football on a message board that still looks the way the internet did then. Threaded replies, handles, an asterisk in the subject line when the subject is the whole post. Marriages, kids, jobs, and national championships all got announced there. One member found it via Ask Jeeves. Another wrote a book about it.

In the summer of 2026 the free service hosting it crashed and never came back. No warning, no export, no support — the host's own help forum had been dead for years. Thirty years of community suddenly had no address.

Thirty years, five homes

The community predates its every address. It began on a fan-run recruiting board in 1995, moved to the beloved “VV board” in 1996 (famous for showing whole posts without a click), became The Victors around 1999, and rode a free 1998-era host for decades after that — through outages, ads, and neglect — because moving felt impossible.

The 2026 crash forced the question. The answer, this time, was an address the community owns. When the new board ran a roll call, members dated themselves to every era back to 1995 — and the founder of the 1996 board showed up in the thread, to a chorus of “long time no see.”

The rebuild

Nick Coston — not a developer, not the admin, not even an elder; a member since 2017 and one of the board's youngest — rebuilt it in six evenings, directing AI tools (Claude Code) the way an architect directs a construction crew: deciding what to build, reviewing everything against the community's thirty years of instinct, and testing on the toughest QA department in existence — the members themselves, live.

The admin title came afterward, the old-fashioned way: he built the place, so he holds the keys.

The design brief was one sentence: keep everything the community loved, fix everything the old host wouldn't. The 1998 look stayed. The threads, handles, and asterisk culture stayed. Underneath: photo and video posting, polls, score-prediction games with a leaderboard, a live college scoreboard, an ephemeral chat room, a member-voted Hall of Fame, cross-device read tracking, moderation tools, privacy-preserving analytics, and nightly tested backups — so no crash can ever take the community's history again.

Six days, then a season

Game day

A football board is only as good as it is on a Saturday.

The Scores board carries a live scoreboard for all of college football — every game in the top division, not just Michigan's, refreshed from the wire and with rules about when a game is finished enough to leave the page. On game day the whole board changes: a banner, a waving flag, the marching band's pregame one tap away.

The week's pick 'em thread is posted by Skeeps, a reserved account that is not a person. It goes up on Monday so there is a week to think about it, locks itself at kickoff, counts the picks — including the ones left the old-fashioned way, as replies — and posts the standings when the game is over.

The scoring rule was not designed. It was remembered: closest to the final total, win or lose, which is how this board has always done it. A member corrected the first version from memory and the correction shipped that afternoon. The board also tracks Slippery Rock, a Division II school in Pennsylvania, for reasons every Michigan fan understands and nobody else ever will.

The arcade

Six weeks in, the members stopped asking for features and started asking for toys.

So the board grew two games of its own. Victard Bowl is a pixel football game — Michigan's real schedule, twelve weeks, you call the plays and you can take the field on defense too. Stadium Guesser drops you in front of a college football stadium and asks you to find it on a map of the lower 48; 135 of them, scored on how many miles you were off.

Neither one phones anywhere. The football game is a canvas and a few hundred lines of JavaScript. The map is not a mapping service — it is public-domain census outlines projected once at build time, so there is no key to buy, no bill to run up, and nothing to break when somebody else's service changes. Both keep leaderboards on the board itself, and the house robot posts the standings to the Scores page once a month.

304 games played so far. On a message board.

Incident log

Real communities generate real production incidents. A selection, each diagnosed and fixed in hours — usually before most members noticed:

Photos posting sideways

Phone cameras store orientation as metadata; the upload compressor was stripping it without applying it.

Fix: apply orientation before resizing. Every phone photo since lands right-side up.

A password reset that didn't stop anyone

Year-long login sessions meant a reset password couldn't kick a problem user's existing logins.

Fix: per-account session tokens, rotated on reset — every live session dies instantly, on every device.

3,900 daily "visitors" on a 350-member board

The traffic counter was counting the CDN's relay addresses as people.

Fix: read the real client address from the CDN header. Honest numbers overnight; the analytics stayed anonymous throughout.

Chat messages appearing twice

Two overlapping refresh requests could each draw the same new messages — a classic race, surfacing only when the room got busy.

Fix: client-side dedupe by message id, one refresh in flight at a time.

The backup that would have hung the board at midnight

The first nightly-snapshot implementation ran inside an open database transaction — a deadlock that would fire on the first pageview of every new day.

Fix: caught before it ever shipped, by an actual restore drill. Untested backups are hope; these are tested.

A 48-megapixel phone photo against a 512MB server

Modern phone cameras produce files that decode to roughly 150MB of raw pixels. Two members uploading at once on game day was enough to walk the instance into its memory ceiling and restart it.

Fix: decode at reduced scale rather than full size, rotate after shrinking instead of before, and allow only two decodes at a time. The ceiling stopped being reachable.

Four Memorial Stadiums

Illinois and Indiana were both handed a photograph of Nebraska's stadium. Four schools call their ground Memorial Stadium, and the lookup was keyed by the stadium's name — so all four shared one slot and overwrote each other.

Fix: key by the school, and stop trusting names altogether. Every photograph is now checked against the stadium's real coordinates and rejected if it sits more than 25 miles away. Champaign to Lincoln is 450.

What the members say

“Here, I realized at that moment, are my people. And, nearly a quarter of a century later, I'm still there.”
— from a member's published book about this community
“Thank you for everything you've done. I know I speak for many in saying we'd like to help pay for this.”
— a member, unprompted, offering money to a free board
“This redesign has generally been fantastic.”
— a member of 20 years
“You're going to need Jira.”
— a member, on the speed of shipped feature requests
“I would like my ampersand back.”
— a member whose handle lost its & in the migration, filing history's most 1998 bug report. Restored within the hour, retroactively, across every post they ever made.

The stack

One Python file — 3,534 lines as of this page load — plus SQLite, plain HTML templates, and one small CSS file. No framework churn, no build step, no JavaScript beyond what the chat and scoreboard genuinely need. It runs on a single $7/month server with a persistent disk, behind a CDN, deploying automatically on every push.

The code was written by AI (Claude Code) under direction; every feature was specified, reviewed, and accepted by a human who knows the community — then tested by 350 people who don't file bug reports so much as post them publicly with jokes attached. Feature requests routinely shipped the same afternoon they were posted, which the members found funnier than the features.

The lesson

The engineering turned out to be the easy half. The hard half was twenty-five years in the making: knowing what a community needs, what it will reject, and when to say no — then saying yes fast to everything else.

AI didn't replace a developer here. It let a community person become the architect — social and engineering, both halves.

The Victors · est. 1995, rebuilt August 2026 · Flask + SQLite on a $7 server · built with Claude Code
Community architecture by Nick Coston
P.S. — the board hid two easter eggs. The members found both. Of course they did.