Subway

Throughout college, my friends and I lived on IRC. It was our group chat before group chat existed—always-on conversations that picked up wherever you left off. The problem was the clients. Desktop apps felt clunky, and switching machines meant losing your scroll position, your unread counts, everything.

This was 2012, and I'd just discovered . The idea of real-time web applications felt revolutionary. Around the same time, Paul Irish posted a challenge to improve web-based IRC clients. That was all the excuse I needed.

Over two years of sporadic hacking, Subway grew into something real: persistent message history across browser sessions, a plugin system for extending functionality, desktop notifications, and smart rendering that could handle high-traffic channels without choking the browser.

Looking back, many of these patterns became standard in modern chat applications. At the time, they felt like experiments at the edge of what web apps could do.

Details

Time
2012-2014
Source
Status
Archived

Session Replay

Watch Subway's socket negotiation, topic updates, and plugin actions in real time.

Subway — web IRC, 2012 style

Tap through the reconstructed client to see how Subway handled socket negotiation, plugin actions, notifications, and connection drops—exactly as the original Node.js + Socket.io stack behaved.

Booting
dj@irc.thedjpetersen.com
Topic
Building a modern IRC client in the browser
connected to irc.thedjpetersen.com
synced 42 lines of history from the server
morning! subway UI refactor is finally live in staging.
nice! the plugin manager loads twice as fast now.
Pulling history and plugin manifests from storage…