
A non-commercial preservation project for computer nostalgia 💫https://teapaw.org/t.co/kguEOBO3TN 🛜https://teapaw.org/t.co/i6ORECXtrx 💿https://teapaw.org/t.co/pBk39VUnPE 🔫https://teapaw.org/t.co/U6XvgOB8u8 by @levelsio
Joined November 2006
- Tweets25
- Following2
- Followers5.1K
- Likes29
Let's try run Windows XP inside this tweet, tap to open pieter.com/xp/x
📻 Made a Nullsoft SHOUTcast server at radio.pieter.com
SHOUTcast was Winamp's own streaming platform and would let you create your own self-hosted radio stations
You'd then submit it to their directory to which would get you listeners
Around 2011 it reached its peak with 900,000 concurrent listeners with about 45,000 active radio stations
Winamp had been acquired by AOL in 1999 for $80M and was essentially fully neglected since so it was kind of a miracle it kept going for so long
But the tech is still there and you can host a server!
I have to stop boring all of you with my game ports but I ported another game to web with multiplayer, after Quake 1 yesterday and Quake 2 today, I thought, what if I ask Fable to port Return to Castle Wolfenstein from 2001?
And of course it just did it with ease and put it at rtcw.pieter.com with multiplayer working!
I'd play this game a lot and always this map mp_beach, it's like the WW2 Omaha Beach landing, you have to breach the wall with dynamite and get "ze sekret dokuments"
I asked it at 15:50 "do you think we can do RTCW?" and 18:18 I joined the game and could play it, so about 3 hours but I also went to gym in that time for an hour, so I'd say an hour total
What it did (in Fable's own words) is some crazy hackery that I could never, or it would have taken me probably a year, not an hour! 🤯🤯🤯
- Started from iortcw, the GPL source port of RTCW (ioquake3-based)
- Borrowed the emscripten patches from Wwasm (a single-player-only WASM port) — but it patches the SP tree, and RTCW's MP codebase diverges heavily (1,400+ lines different in some files), so I diffed Wwasm vs clean SP to extract the patch set, then re-grafted each #ifdef __EMSCRIPTEN__ block into the MP code by hand
- Compiled the MP engine to WebAssembly with emscripten + GL4ES (translates the game's OpenGL 1.x calls → WebGL2)
- Fixed what the graft missed: GL4ES init lived in SP's renderer file, MP uses a different one → "OpenGL 1.1 required" crash until I added initialize_gl4es()
to MP's R_Init
- Re-enabled networking (Wwasm disables it for SP) and patched out the fatal 1.41 point-release check
- Built the native iowolfded dedicated server from the same source (so client/server protocols + paks match exactly), systemd service on mp_beach
- The 2001 CD ISO's data is buried in a Wise installer Setup.exe — Wine wouldn't install (i386 dep hell), so I used offzip to scan the binary for deflate streams and carved out the intact pak0.pk3 (316MB) + mp_pak0.pk3 (all 8 MP maps incl. mp_beach) + UI menu pak
- Client fetches the paks over HTTPS into the emscripten filesystem before engine boot (held with a "run dependency"), mounted as IndexedDB (IDBFS) so the 380MB downloads once ever
I have revived @javilopen's 28 year old custom map he made and made a web-based Quake 2 with Fable on fast mode 🤓
You can now play it here:
👉 q2.pieter.com 👈
It took a bit of hacking because the textures didn't load the first time, so I repacked some PAK files and now it works!
AI is so good at reviving old stuff from your backups, I was always waiting for some backup app to come to finally be able to browse all my old files and figure stuff out from it, and now you can with AI
🤓 Another interesting milestone
I was able to connect the modern WebGL Quake 1 multiplayer at q1.pieter.com
To my MS-DOS Quake 1 (from 1996) running on my virtual PC at pieter.com
Here's the sequence:
You move in Quake 1 -> WATT-32 TCP/IP stack package -> ETHERSL packet driver -> SLIP encode -> COM3 serial port -> Websocket wss://pieter.com -> pieter.com server-side SLIP-decode ->gets raw IP -> IP forward in Linux -> q1.pieter.com Quake server -> fteqw-sv64 receives package and moves other player
📸 Back in the early days of the internet webcams were actually available quite quickly and the first one was invented in 1991 at the University of Cambridge
Their first webcam was a famous "Coffee Camera" where people at the uni could see if the coffee pot was full or not, it ran for 10 years
But quickly after people started using webcams for communication too, doing video calls with each other, as it obviously felt much more personal than just text chat. But the internet was very slow then so it had low frame rates, think 1 frame per second or maybe even 1 frame per multiple seconds
I remember especially with MSN Messenger camming got big when I was in high school, you'd buy one for $30 usually from Logitech and connect it
Now we all have a webcam integrated in our laptops, and it's a normal part of how we work, doing 1-on-1 or Zoom calls
So I wanted to see if I could make modern webcams work on Windows 3.11 in your browser, so I asked Claude to generate its own WEBCAM.EXE while JavaScript pumps the Webcam feed from your computer into the DOS COM4 port
And it works! And you can even print your face 😊
Try it on pieter.com
I have revived @javilopen's 28 year old custom map he made and made a web-based Quake 2 with Fable on fast mode 🤓
You can now play it here:
👉 q2.pieter.com 👈
It took a bit of hacking because the textures didn't load the first time, so I repacked some PAK files and now it works!
AI is so good at reviving old stuff from your backups, I was always waiting for some backup app to come to finally be able to browse all my old files and figure stuff out from it, and now you can with AI
🕹️ THE VIBE JAM IS BACK!
I present you...
🌟 2026 @cursor_ai Vibe Coding Game Jam #vibejam
Sponsored by @boltdotnew + @cursor_ai
Start: Today!
Deadline: 1 May 2026 at 13:37 UTC, so you have a whole month to make your game!
REAL CASH PRIZES:
🏆 Gold: $20,000
🥈 Silver: $10,000
🥉 Bronze: $5,000
RULES:
- anyone can enter with their game
- at least 90% of code has to be written by AI
- it should be started today or after today, don't submit old games
- game has to be accessible on web without any login or signup and free-to-play (preferrably its own domain or subdomain)
- multiplayer games preferred but not required!
- can use any engine but usually @ThreeJS is recommended
- NO loading screens and heavy downloads (!!!) has to be almost instantly in the game (except maybe ask username if you want)
- add the HTML code on the Google form in the reply below to show you're an entrant
- one entry per person (focus on making one really good game!)
WHAT TO USE:
- anythign but we suggest @cursor_ai's Composer 3 and @boltdotnew, they are both fast, affordable and great at ThreeJS and making games
THE JURY:
Me, @s13k_, and I will ask some real game dev and AI people to jury again too
Sponsors and jury suggestions still very welcome, just DM me!
It will be interesting to see the difference in quality with last year, and the Vibe Jam can be kind of like a fun benchmark for AI coding seeing it close in on real commercial games I think
To enter, complete the form in the reply below this tweet!
✨ 7 years after I set up a Quake III server, I have it running again, but now in the web browser, much easier 😊
👉 q3.pieter.com 👈
Back in 2019 we'd play a fork of Quake III called OpenArena in a Bali villa with @daniellockyer @marckohlbrugge @dannypostmaa @lenilsonjr_ @gvrizzo @AndreyAzimov @SeanParkRoss and other ppl
But it broke after a new Mac update and they never really fixed it, it kinda sucked because it was actually the only game we could just load with friends online and play death match a bit and then continue your day
Luckily @lukathedev built Q3JS which successfully compiles ioquake3 to WebAssembly and now it works in the browser
To make it extra simple, I've set up a Q3JS server and frontend for you to use at q3.pieter.com, which loads you straight into the game
A big problem is that most of the times, nobody's playing, so I've also added Web Notifications, which notifies you if enough human players join, so you can join a match. And I've added a daily match at 8 PM GMT every day which everyone also gets notified when it starts
If you want more servers and maps etc, you can check out @lukathedev's own q3js.com
HAPPY FRAGGING
🔫 I set up an OpenArena DM server (free version of Q3), if you wanna join: server is 128.199.152.194, download OpenArena for Win/Mac/Linux @ openarena.ws/
Saw this on Hacker News today:
Someone reverse engineered a game from 1983 called 📈 Wall Street Raiders, it was 115,000 lines of BASIC so indecipherable that even Disney couldn't figure out how to
wallstreetraider.com/story.h…
It's essentially a very deep granular trading simulator where you're a corporate raider, buying and selling companies, and many CEOs and investment managers said they used the strategies they learnt in the game in the real world!
So I installed it for you to play on pieter.com!
✨ Added dark mode to my HTTP proxy at http.pieter.net
That also makes it really nice to read stuff like Hacker News and other things in the evening on a Kindle
The Kindle browser is really slow and a Kindle itself is just a super low specced device so using my HTTP proxy for vintage computers works perfectly on it
It makes most sites just into text, removing the headers etc and only showing the body (like a Reader View) like Hacker News here:
http.pieter.net/news.ycombin…
✨ Okay I went a bit crazy and also spoofed the DNS for altavista(.)com
And then I rebuilt the homepage with Claude Code based on screenshots of it because I couldn't even find an actual HTML source of it anymore (not even on WaybackMachine)
First it wrote it in <div>'s but old browser don't support those, so then I asked it to change it to a <table> layout
I filled it up with the Top 100 Hacker News blogs and some other links, search also works of course!
So now after 27 years AltaVista is active again, at least on pieter.com 😊
✨ Okay I went a bit crazy and also spoofed the DNS for altavista(.)com
And then I rebuilt the homepage with Claude Code based on screenshots of it because I couldn't even find an actual HTML source of it anymore (not even on WaybackMachine)
First it wrote it in <div>'s but old browser don't support those, so then I asked it to change it to a <table> layout
I filled it up with the Top 100 Hacker News blogs and some other links, search also works of course!
So now after 27 years AltaVista is active again, at least on pieter.com 😊
✨ Today I rebuilt 🏔️ AltaVista Search, the main search engine before Google existed
The problem: if you press the 🔍Search button in MSIE4 it'll open a sidebar with AltaVista in it that opens:
http:// home . microsoft . com/search/search.asp
But that URL doesn't resolve anymore of course, so how do I make this work?
I asked Claude Code and built a Dnsmasq DNS server that routes all regular DNS queries to Cloudflare but for home . microsoft . com it hijacks it and sends it to my own server
Then I let Nginx respond to that doamin and show the Altavista Search sidebar, I had to rebuild the design from a video on YouTube because I couldn't find any actual archeological remains of it anymore
Also Altavista Search of course doesn't exist anymore so it can't respond to queries either so I use a SERP API to query search results from Google and display them instead
This is stuff I wouldn't even be close to doing before AI, I'd have no idea how to configure Dnsmasq to spoof queries like this
The search engine results are proxied via my HTTP proxy so MSIE4 can open most sites (because old browsers don't support HTTPS and most JS!)
✨ Today I rebuilt 🏔️ AltaVista Search, the main search engine before Google existed
The problem: if you press the 🔍Search button in MSIE4 it'll open a sidebar with AltaVista in it that opens:
http:// home . microsoft . com/search/search.asp
But that URL doesn't resolve anymore of course, so how do I make this work?
I asked Claude Code and built a Dnsmasq DNS server that routes all regular DNS queries to Cloudflare but for home . microsoft . com it hijacks it and sends it to my own server
Then I let Nginx respond to that doamin and show the Altavista Search sidebar, I had to rebuild the design from a video on YouTube because I couldn't find any actual archeological remains of it anymore
Also Altavista Search of course doesn't exist anymore so it can't respond to queries either so I use a SERP API to query search results from Google and display them instead
This is stuff I wouldn't even be close to doing before AI, I'd have no idea how to configure Dnsmasq to spoof queries like this
The search engine results are proxied via my HTTP proxy so MSIE4 can open most sites (because old browsers don't support HTTPS and most JS!)
✨ Added a CRT curvature distortion to @pieter now
It takes the Em-DOSBox <canvas> and processes it in WebGL and builds a new <canvas> with the distortion of a classic CRT screen which had this convex curvature (like an old TV) even though the screen itself was square
I had this working on DOSBox on MacOS and on Linux with CRT-Pi shader, but on web it doesn't support shaders so I had to build my own with Claude Code in JS, very easy
I remember trying this a year ago and Claude Code fucked it up so bad that I gave up, so I think the models have improved a lot
Tomorrow I'll try add some scanlines, it really helps make the simulation more passable (and nostalgic!) 😊👌
✨ Added a CRT curvature distortion to @pieter now
It takes the Em-DOSBox <canvas> and processes it in WebGL and builds a new <canvas> with the distortion of a classic CRT screen which had this convex curvature (like an old TV) even though the screen itself was square
I had this working on DOSBox on MacOS and on Linux with CRT-Pi shader, but on web it doesn't support shaders so I had to build my own with Claude Code in JS, very easy
I remember trying this a year ago and Claude Code fucked it up so bad that I gave up, so I think the models have improved a lot
Tomorrow I'll try add some scanlines, it really helps make the simulation more passable (and nostalgic!) 😊👌
pieter™ retweeted
🎄 Added Christmas lights to pieter.com 🌌
Remember those cosy days when you had time off school and you just computered 🥹🥹🥹
🗞️ More new email features on pieter.com
You now get the daily news report sent in your email (and updated hourly)
I don't really like to read the news, but this is a fun way, cause it's all in plain text inside Windows 3.11 😊
Written as a Python cron robot by AI (of course) which writes directly into /Home/web/Maildir/cur, which is the location of the emails
And like before you can reply to the email and it will show up in your inbox and everyone else's
pieter™ retweeted
💾 Okay having nobody online to chat on AIM is boring
So I asked AI to write an AOL Instant Messenger bot called @pieterbot, and I made an account for it, and it one-shotted it in Python and IT WORKS!!!
So now you can chat on AIM on pieter.com with an LLM that is fully self-aware it is an AIM bot 🤠👍
💾 I got AOL Instant Messenger working in 2025!!! 🤯
I installed aim.exe on pieter.com and I connected to a reverse engineered retro AIM server
You can login and it works and you can actually message people, in this case I don't know anyone else on this server so I message myself
MSN next??
pieter™ retweeted
One of my dreams came true today:
Apple MacOS 7.1 on dialtone.live is now connected to Windows 3.11 on pieter.com via the internet thanks to @SiliconForested's work
My dream was other people would also start building web-based vintage computers (like MacOS, Atari, Amiga, etc) and we could then all connect them each other via the modern day internet
This is the first working example of that!
You know what this means.....
This means that virtual 90s Mac Users on Dialtone can now talk to virtual 90s Windows users on Pieter.com !
dialtone.live/
pieter™ retweeted
🗞️ More new email features on pieter.com
You now get the daily news report sent in your email (and updated hourly)
I don't really like to read the news, but this is a fun way, cause it's all in plain text inside Windows 3.11 😊
Written as a Python cron robot by AI (of course) which writes directly into /Home/web/Maildir/cur, which is the location of the emails
And like before you can reply to the email and it will show up in your inbox and everyone else's
💌 Sending emails on pieter.com also works again
It's a massive undertaking because Eudora from 1995 only supports port 25 but Hetzner blocks port 25
So me and @bai0 had to IPTABLES forward the port 25 in the ISP to 587 to make it work
But now you can send and receive emails to [email protected] again
pieter™ retweeted
🎶 Every good 1995 PC needs some absolute MIDI bangers to play while you dial up on your 28k8 modem
So I installed Yamaha's MIDI Jukebox on pieter.com
It has a full mixing desk and you can change the pitch and more importantly BPM!!!!!!
Even has 🇧🇷 Bossa Nova 😊😊😊
🤓 You can now read live Hacker News on pieter.com via Gopher
Gopher is the old internet protocol that was kind of a precursor to the web, it ran on port 70 instead of 80, and was pretty similar to the web, also live pages with hyperlinks but more limited
You can open it via the computer or in any Gopher browser at gopher://hn.pieter.com:70 or via Gopher proxy like this: portal.mozz.us/gopher/hn.pie…
It runs on hn-gopher by Michael Lazar
pieter™ retweeted
🤓 You can now read live Hacker News on pieter.com via Gopher
Gopher is the old internet protocol that was kind of a precursor to the web, it ran on port 70 instead of 80, and was pretty similar to the web, also live pages with hyperlinks but more limited
You can open it via the computer or in any Gopher browser at gopher://hn.pieter.com:70 or via Gopher proxy like this: portal.mozz.us/gopher/hn.pie…
It runs on hn-gopher by Michael Lazar
I gave @mrdoob, the creator of ThreeJS, access to Pieter (dot) com repo and asked him to help me fix occlussion of the screen and he fixed it!
Before the screen was weirdly overlapping
Claude Code nor Cursor was able to fix this, the problem is that most of the code about this particular problem (blending 3DCSS into ThreeJS) was written in React and my code is more vanilla JS
THANK YOU!!!
pieter™ retweeted
✨ Asked Cursor to build a Python IRC chat bot that uses gpt4o-mini to talk back on pieter dot com
Because most of the time people open the site, the computer loads and then mIRC chat app opens and because they didn't have chat history back then it looks a bit empty
So now you have @pieterbot to talk to 24/7, it also has the entire knowledge base so can answer you anything about what you can do do inside Windows 3.11 etc.
🖨️ Got printing working on pieter (dot) com
I can now print from Windows 3.11 (in 1994) to my IRL printer (in 2025)
It still prints out a lot of PostScript garbage but it works
Here's Hacker News live today printed via gopher:// via its dial up modem on pieter (dot) com
Next would be cool to have a virtual printer on the site everyone can print to but as always I have no clue how, I guess we need to emulate a LPT1 printer port with WebSockets like we do with the COM1 port for the dial up modem




















