Show HN: My website, hosted on a 386 25 MHz, 4 MiB of RAM, 38400 baud internet
serentty.com
serentty.com
If you want to visit the page directly without CloudFlare, go to http://trombone.zapto.org instead.
that will also work in this instance.
you won't however see it slowly send the response as you do on http://trombone.zapto.org/, as cloudflare seems to block until it received the full response from the backend.
No affiliation with cloudflare other than I use them for several sites.
> helps with the default settings of including that in the cache key
I didn't know about response streaming being configurable, it seems to be enabled by default and configurable for enterprise customers: https://support.cloudflare.com/hc/en-us/articles/206049798-S...
I assume due to the (relatively) small response size of this page it buffers regardless.
In the meantime, if you want to visit the page directly without CloudFlare, go to http://trombone.zapto.org instead.
Edit: but also identifying heuristics like lack of JS execution, or potentially client specific http client behaviour
I hope you don’t regularly make such selfish requests to potential DoS victims due to your own arrogance / ignorance.
HTTP/1.1 200 OK
Server: mTCP HTTPServ Mar 7 2020
Date: Sun, 17 Apr 2022 00:30:00 GMT
Content-Type: text/html
Content-Length: 5355
Expires: Fri, 14 Oct 2022 00:30:00 GMT
Last-Modified: Sun, 17 Apr 2022 00:02:00 GMT
Connection: keep-alive
The page loads very interestingly. Each paragraph loads separately, one at a time down the page. I'm guessing because of the bandwidth limitation.Really neat, especially the slow loading. When I saw cloudflare on the page, I thought it was faked with javascript, but it was real!
Interesting how chromium will start rendering no matter how little information does it have (:
Disclaimer: I work on R2
Just back of the envelope, if it takes 200,000 instructions to handle a request and we assume 6 cycles per instruction, then that’s about 25 requests per second.
HN is roughly 50K requests over 6 hours, so that’s roughly 2 requests per second on average. I would imagine it peaks to about 25. So in theory you should be able to handle the traffic.
http://bettermotherfuckingwebsite.com/ is 20k, ignoring http overhead.
Maybe strip that to 15k after compression, and cut some content.
Still 15000/38400 <= 3 responses per second.
Add in serial parity overhead, http overhead. Might be able to sustain 2 rps with enough cleverness.
Leaves no room for bursts
[edit] never mind, you're right, assuming an 8N1 configuration - 8 bit bytes, 1 start bit, 1 stop bit, and no parity bits.
So 3kB/s, if your site is 15kB you're looking at 5 seconds per request, or 0.2 rps.
Plus overhead. I thought my original math sounded too fast.
[0] https://www.linuxjournal.com/files/linuxjournal.com/linuxjou...
I imagine it's not just the hardware limitations, but the available software. This one, for example being MS/DOS, where there were never really any serious server-side http/tcp implementations.
On the other hand, there were very busy BBS systems running on DOS where there had been time for years of various optimizations to happen.
What? It demonstrates that Cloudfront or Fastly can handle a lot of traffic, since they'll cache just about everything if you put it in front of a static website...
The software/service you run makes most of the difference between whether it can run on standard at-home hardware or if it needs some distributed autoscaling system (when speaking of HN homepage types of traffic). Of course, if you're serving video or large images/audio, you're going to need more than a few megabytes per second of uplink. Or if your site trains neural networks custom for every visitor, that's a special case. But for regular websites...
I wrote it back in 2014 and I've hosted brutman.com on it at times. My usual machine to run it on for torture testing is a PCjr with a hard drive and Ethernet. This 386 would be so much happier with an Ethernet card; the serial port connection is really hurting the performance.
A new version of mTCP is in the works; look for it in the next two months.
I don't know why I laughed so hard at this. Why would any sane person do this?
If you talk to the spooky GCC people with beards they'll point out that they support much much weirder chips than that (albeit with little to no library support).
Perhaps the same kind of people who got GCC to compile for 386 DOS machines (also using DPMI). Which might sound useless, since it's an underpowered operating system running on underpowered hardware, but it was used to build some very popular software, like the original Quake game (source: http://www.delorie.com/djgpp/history.html).
The original Quake was barely playable on a 486 DX4 100 MHz, and was fine on a Pentium.
About the 386, you could run SICP as a GNU Info file blazingly fast and a Scheme compiler on another TTY, or under GNU Screen. You could typeset with Groff and Mom, too.
Now try running LaTeX on that. Yes, Donald Knuth is the Ur-creator on CS and typesetting, but hey, sometimes you don't need a full 3GB Texlive suite to typeset some book or math equation notebook.
Is it sane? No. But you're a cat.
Edit: If you want to visit the page directly without CloudFlare, go to http://trombone.zapto.org instead.
Man, you should get that upgrade to 8 megs of RAM.
Windows 3.1 benefitted greatly and even OS/2 Warp,
which already worked fine with 4 megs, saw some improvements in performance.
One place I worked we sold a 286 upgrade board that had a 386sx and a few support chips. Undearneath was a 286 style socket. You removed your 286 and put this thing in its place. They worked OK and provided a decent speed boost.
This alone made the 386 far more capable and compatible with modern software (Linux requires 32-bit).
My issue with these projects is how much energy they use for whatever task they can do.
I have a 10 year old machine that was a high end machine in its day, being lapped by a high end laptop on all tasks, except for gpu tasks I slammed into the PCIe slot. The power consumption is honestly sad. Its not like its an energy cost thing, as it would take decades to break even in lower electricity bills after buying a high end machine specifically for lower energy use, its more of a self conscious thing.
OPs machine should just be a compute instance virtualized in some gigantic memory cluster somewhere that was already running.
Then it would no longer be OP's.
Isn't this what ESP32 variants are trying to achieve? [1]
"Well boss, we thought it would be more webscale to use our own chip design, so we're kinda stuck, but the good news is that we've negotiated the cost of new masks down to 3 million dollars"
I had a 40MB hard drive on my Cyrix 386, and double-spaced it to "80"MB
It's crazy to think how little 40MB is now, I've edited PowerPoint decks larger than that.
If you look at the headers, you'll see "CF-Cache-Status: MISS".
And you'll see the site load, just as you remember from the BBS days.
You are welcome.
Many people host static sites on 1GB SBCs and 1GB/1T VMs with no issues, and you can make do with even less.
Update: I tried some tests on my secondary server, which is likely slower than your C2D (AMD G-T48E). I simply ran ApacheBench on the Proxmox Backup Server web interface login page since that's the only web service I have running on it. The two machines were connected over Gigabit LAN and HTTPS was used.
This is 1000 requests at a time for a total of 5000 requests. While it was running I was able to make a connection to the login page in my browser as well (it took six seconds to load, but it loaded). I think I did the test properly but let me know if I should try something else; it's been a while since I've done this kind of stuff.
~$ ab -n 5000 -c 1000 https://<PBS server>:8007/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
...
Benchmarking <PBS server> (be patient)
...
Finished 5000 requests
...
Server Software:
...
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Server Temp Key: X25519 253 bits
...
Document Path: /
Document Length: 1940 bytes
Concurrency Level: 1000
Time taken for tests: 34.274 seconds
Complete requests: 5000
Failed requests: 0
Total transferred: 10215000 bytes
HTML transferred: 9700000 bytes
Requests per second: 145.88 [#/sec] (mean)
Time per request: 6854.761 [ms] (mean)
Time per request: 6.855 [ms] (mean, across all concurrent requests)
Transfer rate: 291.06 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 21 2863 2225.0 2535 10907
Processing: 98 3275 1836.3 3142 10434
Waiting: 1 3275 1836.4 3142 10434
Total: 118 6138 3078.9 5655 12545
Percentage of the requests served within a certain time (ms)
50% 5655
66% 6733
75% 6965
80% 7569
90% 12324
95% 12469
98% 12504
99% 12517
100% 12545 (longest request)I have not tried to host a static website but it surprises me that 100 visitors would give that hardware trouble. I will have to try that now.
> In 1999 one of the busiest ftp sites, cdrom.com, actually handled 10000 clients simultaneously through a Gigabit Ethernet pipe
HTTP isn't that heavier (if at all) than FTP, so 100 visitors for static content shouldn't be a challenge for 2008 hardware
Try Flare RPG, and, next, Slashem and/or Nethack.
What's running on it and what's your connection?
I tried running Wordpress with some plugins that required fresh page generation for every pageload for a friend on an Intel Atom... D525 I think it was. A single pageload was more than twenty seconds if I'm not mistaken. Without looking up that model number I'd guess this Celeron probably has similar performance, so your being able to host 'multiple' of those sounds like there's more in play
I'm running an AlphaServer DS25, and I can host the heck out of static sites. It even runs php sites like Wordpress decently. Then again, I'm running NetBSD.
But the IP resolves to 188.114.96.3, which is Cloudflare.
So regrettably it doesn't look like I was actually fetching anything off 386 per se.
What does the extra lowercase letter indicate? I'm not used to that, and I've been dealing with bytes from the kilo-size to the peta-size for 40 years.
MB is canonically base 10 (10^6 bytes).
Specifically, MiB is 1024^2 bytes. MB is either that or 1000^2 bytes, depending on who you ask and if they're trying to sell you something.
To this day I wonder why nobody seems to care at all about that. It's like being on the real internet except you can't reach each other, you have to always go through some third party that is on the internet proper.
At least we got "net neutrality" now, which doesn't apply to SYN packets for some reason but at least it applies in the other direction, so no more 'blocked site' page on buienradar.mobi because KPN wanted to sell its expensive SMS weather service instead of this newly popular weather radar site.
For what it's worth, I did compile and run a bitcoin miner on my phone ten years ago. Running services on it isn't exactly a new idea, but now that they're so powerful, it also means we can't supply enough power from the battery or dissipate enough heat while in a pocket.
When T-Mobile rolled out IPv6 you could get to your phone from anywhere else with IPv6.