Bringing Microsoft Comic Chat to the Mac using Fable
I asked Claude Fable to port Microsoft Comic Chat to macOS. Two days later, it had revived a 28-year-old piece of my childhood.
Last week, two things happened:
- I read this awesome article about how Bun ported 500K of code from Zig to Rust in only 11 days thanks to Claude Fable, something that would never have been possible, or worthwhile, before.
- Microsoft open-sourced MS Comic Chat.
Comic What?
Back in 1998, I was a 15-year-old kid, and Microsoft wanted to become the de facto browser company. They did so by shoving their Internet Explorer suite in your face and handing out free CD-ROMs everywhere you went.
As far as I can remember, the CD-ROM contained Internet Explorer 4, NetMeeting (FaceTime avant la lettre), Outlook Express, and Microsoft Comic Chat 2. The latter was a chat client (IRC) that could connect to a Microsoft-hosted server, and that did one thing very special: instead of being boring text logs, it showed conversations as comics (they even wrote a whole scientific paper on the technique).
Oh, and it introduced everyone's favorite font to the world: Comic Sans MS!

Thanks to (or because of) MS Comic Chat, I became addicted to IRC (Internet Relay Chat). First on chat.msn.com, until Microsoft turned it off in the early 2000s, then on irc.dma.be (shoutout to the channels #belgium and #belgium_zuipschuiten).
Nostalgic me likes to think back to those days, and the meme-like appearance of those crude comics. Microsoft Comic Chat wasn't a particularly good chat client. People mocked you for using it, and I eventually moved to the more mature, but much less fun, mIRC. Still, Comic Chat had heart and soul.
Naturally, my heart skipped a beat when Microsoft announced last week that it had put the full code on GitHub.
Enter Claude Fable
Last year, I wrote a little piece about how AI was changing the way I saw my role as a software engineer and product thinker.
In it, I wrote:
But now, with AI as my co-creator and sketchpad, I can explore faster and build more than I ever could alone.
I still think that holds up, but remember the phrase. We’ll revisit it later.
The past few weeks had been a bit of a mess in AI-land. Anthropic released Claude Fable, pulled it about 48 hours later because of US export restrictions, and then brought it back. At the time, subscribers were told that their included access would disappear on July 17.
(Spoiler: it didn't disappear - they've now opened it to everyone.)
Since I had spent most of the week working with GPT-5.6, I reached Friday with 100% of my Fable allowance left and two days to burn through it.
I opened a Claude Code session, pointed it at the original, almost thirty-year-old source code, and asked:
This is the source code of MS Comic Chat. What would it take to run this on macOS?
At first, it wanted nothing to do with a full port. It tried to talk this ridiculous idea out of my head. It said: just use Wine, or if you're really insistent, use an emulator. A native build, it warned, would mean rewriting most of an almost 100,000-line codebase.

But I really insisted and typed:
▎ I want a full port
And it started crunching. It wrote a design document, weighed three approaches, and carved out four phases (the last one later split in two):
- Decode and render Comic Chat's obscure character and background formats.
- Rebuild the comic layout engine: panels, poses, speech balloons, text.
- Salvage the IRC/IRCX networking stack.
- Wrap everything in a native macOS app.
One of the things I pushed hard on during the short brainstorming session was that it had to work on real servers. There is still an (albeit small) community that runs MS Comic Chat servers (IRCX), and I wanted to chat with them.
That killed the obvious approach. You can't rewrite a protocol like this from scratch because rewrite drift is exactly where compatibility breaks down. So Fable chose what it called "shim-and-lift": write a small fake-MFC compatibility layer, and compile the actual 1998 Microsoft source code into the Mac app. Not a translation. The real thing. In the end, about 33,000 lines of original C++ code from 1998 are running inside my Mac app right now, wrapped in 19,000 lines of new Swift code.
That means the Mac app also includes bugs Microsoft never got around to fixing.
Where Fable really surprised me
Every major AI model can generate enormous amounts of plausible code at this point. Given a clear specification, good tests, and enough supervision, all of them can produce surprisingly complete applications.
Fable surprised me with two approaches that went far beyond what I expected from a coding model:
It wrote itself a rulebook
Porting old code sounds fun, but the danger lies in the details: every "improvement" to Microsoft's code risks breaking compatibility with real Windows clients. So Fable wrote itself a numbered rulebook for editing the old files ("change Windows path separators to forward slashes, and nothing else"). Anything the rules didn't cover: stop, propose a new rule, record which file made it necessary, and only then continue. It even found a genuine bug from 1998 and refused to fix it.

It wiretapped the original application
I kind of panicked when I saw that Fable was trying to run Wine. I explicitly told it that I wanted a real Mac app, not an emulation.
Turns out that Fable didn't need Wine to run the program and call it a day. It went out of its way to write a proxy server to inspect how the original program talked to the server. It went online, downloaded the original Windows program from archive.org, put a wiretap between it and a chat server, and recorded what the genuine app sent, byte for byte. Then it replayed that recording against its own port to check its homework.
What I actually did
I couldn't have written this port myself. It sits far outside my comfort zone. But "the AI did everything" isn't the story either.
I set the constraints during the brainstorming phase. I made sure that Fable and I had the same definition of "done". But when I said “go,” it really did just go. It worked in long stretches without intervention, committed its progress phase by phase, and only occasionally needed me to approve something.
And in terms of implementation, I really didn't do much, to be honest.
I wasn't behind my desk for probably 95% of that time. At one point, I was at a trampoline park with my girlfriend and our kids while Fable was somewhere deep inside a thirty-year-old C++ codebase, rebuilding an IRCX client for macOS. I checked in from my phone every once in a while, asked it to send me screenshots of its progress, and then went back to watching the kids go berserk on trampolines.



Some of its early work screenshots it produced while I was watching one of my daughters having the time of her life.
That changed when it confidently announced that it was done.
The first results were impressive but very rough. Before I could ship anything, I had to push it through a lot of polishing and point out plenty of bugs. Once the first build existed, my role started to look much more like that of a product owner and QA tester than an implementation engineer. I compared its behavior with the original, pointed out what was broken, rejected shortcuts, and kept pushing it toward something I could actually ship.
Where it landed
Comic Chat for Mac is now available on my GitHub. You can download the full app from the releases page.
Two days after my first prompt, there was a working native Mac app. It connected to real IRCX servers, rendered the original characters and backdrops, supported the emotion wheel and different balloon types, and could even save, print, and export conversations as PDFs.
It's still rough and buggy.
But it connects, and you can chat. I even threw in a new connection screen that has some of the community-run servers in it:



Fifteen-year-old me would never have believed that I would someday tinker with the source code of the program I used most. Nor would he have believed that I would use a robot to do it.
What's next?
Even though Comic Chat for Mac is a fun little nostalgia trip, I don't think there's anyone waiting for it. But I still like the layout engine and the comic book aspect a lot. As I said before, it has heart and soul. Two things we need more than anything in this world right now. I hope to use it in something more modern one day.
But remember that phrase from last year? "With AI as my co-creator and sketchpad, I can explore faster and build more than I ever could alone."
A year later, it reads almost old-fashioned. A sketchpad doesn't work for two days straight, then comes back with a working 1998 protocol stack and a wiretap.
This weekend, I wasn't the person doing any of the heavy lifting. I described what I wanted, defended the parts that mattered, said “I want a full port,” and then lived my life while something else did most of the engineering. It's a strange thing to feel good and slightly obsolete about at the same time, and I won't pretend I've sorted out which one wins.
But then again, no AI model would have built this port on its own.
Because AI models are still just clankers. They don't know nostalgia. They've never been a 15-year-old kid sitting behind a flickering CRT, looking at cartoon characters. No AI model ever wondered what happened in a chat room while it was away.
But a fifteen-year-old kid from a small town near Antwerp in Belgium once did. And that kid waited 28 years to ask an AI model to bring back that nostalgia.
Other cool projects using the legacy source code:
- Comic Chat Web by Jeremy Braun