[HN Gopher] Show HN: My website, hosted on a 386 25 MHz, 4 MiB o...
       ___________________________________________________________________
        
       Show HN: My website, hosted on a 386 25 MHz, 4 MiB of RAM, 38400
       baud internet
        
       Author : serentty
       Score  : 135 points
       Date   : 2022-04-16 19:06 UTC (3 hours ago)
        
 (HTM) web link (serentty.com)
 (TXT) w3m dump (serentty.com)
        
       | the__alchemist wrote:
       | Makes me wonder if you could do it on a Cortex-M!
        
       | tomrod wrote:
       | I guess we could host sites on phones now too. That'd be really
       | cool.
        
         | lucb1e wrote:
         | That was my first thought when I got unlimited mobile data back
         | in ~2006. I could be always on IRC, seed torrents infinitely...
         | and that's when the teenage lucb1e realized that there is no
         | port forwarding on mobile networks and why that is a problem.
         | 
         | 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.
        
       | MrYellowP wrote:
       | Poor 386. 25MHz ... an SX, I'd guess?
       | 
       | 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.
        
         | serentty wrote:
         | It is indeed an SX! I am upgrading it to 16 MiB soon, as well
         | as putting an Ethernet card in it. At that point I think it
         | might end up a much more capable host. I am not sure if I want
         | to find some way to keep this page up long-term yet. If there
         | ends up being a reason to, then I will look around for some
         | suitably retro way to host it, while still allowing me to use
         | the 386 for other things.
        
           | sgt wrote:
           | The SX makes it practically a 286, right?
        
             | smackeyacky wrote:
             | Sort of. 32 bit internally, 16 bit externally. Not as fast
             | as the DX but had all the processor modes so could run
             | protected mode unlike the 286.
             | 
             | 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.
        
               | unfocussed_mike wrote:
               | Amstrad's last great PC series (the 3x86 series made with
               | very standard components, unlike the unusual 2x86 series)
               | used this strategy for the 3386, I think.
        
             | guidedlight wrote:
             | The 286 is a 16-bit CPU, whereas the 386 is 32-bit CPU.
             | 
             | This alone made the 386 far more capable and compatible
             | with modern software (Linux requires 32-bit).
        
       | christophilus wrote:
       | Pets; not cattle. That's the way I like it.
        
       | vmception wrote:
       | Its a good reminder that you can!
       | 
       | 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.
        
         | aaaaaaaaaaab wrote:
         | >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.
        
       | mechanical_bear wrote:
       | Your machine is smoking right about now... might want to open a
       | window.
        
         | Simplicitas wrote:
         | lol .. it's always the same story with these .. lol
        
         | [deleted]
        
       | throw7 wrote:
       | serentty.com has address 104.21.2.145 serentty.com has address
       | 172.67.129.79 serentty.com has IPv6 address
       | 2606:4700:3033::ac43:814f serentty.com has IPv6 address
       | 2606:4700:3031::6815:291
       | 
       | It is not being "served" by 386SX at 25 MHz, running MS-DOS 6.22.
       | And if it is, then my raspberry pi is serving all my clients
       | websites across the world.
        
         | serentty wrote:
         | Please see the comments on this thread. It was directly
         | internet facing when I posted it initially. Hacker News managed
         | to bring it down. I had to add a cached reverse proxy. If you
         | have any ideas about how to more authentically keep the site
         | online, please let me know.
        
       | sydthrowaway wrote:
       | Why aren't there ASICs for hosting web sites
        
         | mhh__ wrote:
         | "Johnson, why can't we push this security update?"
         | 
         | "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"
        
         | IgorPartola wrote:
         | ESP32 can do it.
        
           | idealmedtech wrote:
           | That's a general purpose microcomputer, not application
           | specific!
        
         | cperciva wrote:
         | Because there's no point. A single server can push hundreds of
         | Gbps of traffic already; using an ASIC would just make it less
         | agile.
        
           | ip26 wrote:
           | You might be able to bake some preprocessing of e.g. HTTP
           | into the NIC, doing incrementally more work using well
           | defined standards before delivering packets to the host.
           | Especially with an FPGA.
        
         | cookiengineer wrote:
         | > Why aren't there ASICs for hosting web sites
         | 
         | Isn't this what ESP32 variants are trying to achieve? [1]
         | 
         | [1] https://en.wikipedia.org/wiki/ESP8266
        
           | azinman2 wrote:
           | No, that's just a general purpose computer. ASICs are
           | dedicated chips for a given task, where that task's "program"
           | is built into the chip and it can only do that.
        
       | serentty wrote:
       | It has gotten pretty busy. In case you can't manage to load it
       | live from the machine, here is a snapshot of it:
       | 
       | https://archive.ph/WUdgc
        
         | raverbashing wrote:
         | Yeah, even a local cache in front of the serial link would go a
         | long, long way into making this more feasible
        
       | controlledchaos wrote:
       | Link doesn't work
        
         | notuger wrote:
         | it's loading fine here
        
         | serentty wrote:
         | It could be that it is genuinely not working, but it could also
         | be that it takes a while to start loading. The server can only
         | serve 8 clients at once, over a bandwidth of about 4 KiB/s. So
         | maybe try again and give it some time to load in another tab.
        
       | jotm wrote:
       | Big ooof, of course it's down. I'm hosting a simple static site
       | on a Core 2 Duo + 4GB RAM and it's amazing just how slow the
       | hardware is. It can barely handle 100 concurrent visitors (as
       | tested with JMeter), and if it starts swapping on the spinning
       | rust inside... that's it, forget it, come back the next day. I
       | don't even know how a 386 can even start with modern software.
        
         | LeFantome wrote:
         | Why so slow? As a "this will never work" stop-gap when my
         | laptop died, I put the latest Manjaro Linux on a Core Dou iMac
         | ( early 2008 ) to use for work that day ( 6 GB ). I was blown
         | away how well it worked and I was able to do everything I
         | normally do without problems ( well, except I had to use the
         | Outlook web client for email / calendar -- but that is just
         | Linux and not hardware ). Months later, I still use it almost
         | every day. It is my preferred spot to take Zoom / MS Teams
         | meetings due to the large screen. I run Docker and Distrobox
         | containers on it. I built a toy compiler in .NET on it. I play
         | Diablo and StarCraft on it from time to time. I have it running
         | Plex and it serves movies and TV episodes to my family ( often
         | to more than one device at a time ). I toy around with
         | SerenityOS on it in QEMU ( in a VM ) and it runs great.
         | 
         | 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.
        
           | anthk wrote:
           | > I play Diablo
           | 
           | Try Flare RPG, and, next, Slashem and/or Nethack.
        
           | unilynx wrote:
           | It shouldn't be a problem. Checking the classic C10K article
           | at http://www.kegel.com/c10k.html ...
           | 
           | > 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
        
         | MrYellowP wrote:
         | Your machine should be able to handle way more than that?
         | 
         | What's running on it and what's your connection?
        
         | serentty wrote:
         | It isn't running modern software. It is running MS-DOS 6.22. If
         | it's not loading for you, you can try the snapshot.
        
         | jandrese wrote:
         | I assume you're doing more than just serving up static HTML if
         | your machine can't handle 100 simultaneous connections with a
         | C2D.
        
           | alduin32 wrote:
           | It could also be thermals.On old hardware the thermal paste
           | is often completely fried. I've seen C2Ds barely able to
           | handle anything once they got hot.
        
             | ericd wrote:
             | Yeah, or dust - my C2D Macbook Pro used to peg all its
             | cores with kernel_task at the slightest hint of work, to
             | the point where the UI thread started hitching because it
             | was getting preempted, and the mouse would skip around the
             | screen. Took me a bit of research to figure out that they
             | use kernel_task for thermal throttling (great naming,
             | guys). Opening it up, there were mats of dust that looked
             | like felt pads between the fans and the heatsinks. Took out
             | the felt pads, suddenly everything was smooth as butter.
        
         | digitallyfree wrote:
         | A regular static site shouldn't be a problem on a C2D with 4GB,
         | and it shouldn't be swapping either (unless you're doing more
         | than web hosting on that machine). I'm assuming you're
         | literally serving static pages and not running much server-
         | side.
         | 
         | 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)
        
         | pmlnr wrote:
         | You are certainly doing something wrong - I'm serving multiple
         | wordpress and static pages from a former passively heated thin
         | client with a Celeron N3010. The only diff is AES-NI compared
         | to core2duo.
        
           | lucb1e wrote:
           | Are those wordpress pages cached, or generated for every
           | pageload? Because if you generate it once and then basically
           | just serve static content, yeah that works fine on any potato
           | (and that's how static hosting should be, so that's great)
           | 
           | 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
        
         | AviationAtom wrote:
         | IIRC, there was a post on here about Redbean being able to
         | serve a wild amount of requests, on minimal hardware. But
         | perhaps it was a different piece of software than I recall.
        
       | SystemOut wrote:
       | This is what my first PC was my freshman year of college back in
       | 1990. Felt damn good I got the 65MB hard drive instead of the
       | typical 40MB that most machines had back then.
        
         | serentty wrote:
         | Heh, this has an 80 MB hard drive and it is killing me with how
         | small it is. I'm constantly transferring stuff back and forth.
        
         | philjohn wrote:
         | Luxury!
         | 
         | 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.
        
       | csdreamer7 wrote:
       | What is the power consumption? Curious how it compares against a
       | Raspberry Pi Zero.
        
       | [deleted]
        
       | [deleted]
        
       | Keyframe wrote:
       | Loaded and now I want to know more about Rust->C64 (kickass and
       | acme here)
        
       | butz wrote:
       | I bet someone is trying to access this website using similar
       | hardware.
        
       | fevangelou wrote:
       | Thanks to CloudFlare, it's working now...
        
         | serentty wrote:
         | Yep, I figured it was the only way to get it to keep working.
         | Interesting that it seems to work for you already. It isn't yet
         | going through CloudFlare for me when I try to visit it. Maybe
         | DNS cache?
        
           | fevangelou wrote:
           | It could be your local DNS cache. Testing with a private
           | browser window usually does the trick, otherwise, just flush
           | your DNS cache ;)
        
       | unfocussed_mike wrote:
       | Enjoyably deadpan :-)
        
       | LeoPanthera wrote:
       | It took a second or two to get going but it did load, albeit
       | slowly!
        
       | quenix wrote:
       | This uses CloudFlare and the page is cached (CF-Cache-Status: HIT
       | header). Kinda disappointing that we're not receiving data from
       | your compunet but rather the CloudFlare edge machine.
        
         | serentty wrote:
         | If you had visited a few hours earlier it would have been
         | direct. Then the hug of death hit.
        
       | taf2 wrote:
       | What's amazing to me is my tiny esp32 d4 pico has attached psram
       | of 8mb compared to the x386 powering this with only 4mb... I bet
       | my ram is faster too...
        
       | [deleted]
        
       | xyst wrote:
       | > I have gotten Rust to compile for 386 DOS machines before
       | 
       | I don't know why I laughed so hard at this. Why would any sane
       | person do this?
        
         | cesarb wrote:
         | > Why would any sane person do this?
         | 
         | 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).
        
         | mhh__ wrote:
         | Why not?
         | 
         | 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).
        
         | serentty wrote:
         | It's fun. Lots of people like doing retro game dev and the
         | like, but often you are stuck with ancient C toolchains that
         | suck even if you like C itself. Getting Rust working is a great
         | way to make it more enjoyable from a hobbyist perspective, I
         | think.
        
         | bbarnett wrote:
         | I guess you will laugh harder, at the guy trying to get it to
         | work on Psion 3a.
        
       | cush wrote:
       | Wouldn't load. Title checks out. :)
        
       | freitasm wrote:
       | Cloudflare free plan exists for a good reason.
        
       | AviationAtom wrote:
       | I just like to go to these to see if they actually are working.
       | Sadly, but predictably, they never are.
        
         | serentty wrote:
         | It worked ridiculously well before I posted it to Hacker News.
         | ;)
        
           | AviationAtom wrote:
           | Oh, no doubt, but I hold out hope that somehow, some way,
           | somebody will find a way to handle the hug of death. Perhaps
           | it's simply impractical on such modest hardware.
        
             | serentty wrote:
             | I think it would have fared much better if I had waited
             | until I got my ISA Ethernet card in the mail. But serving
             | this over serial at 38400 baud and watching it try to keep
             | up was tempting. I'll have to see how well it fares with
             | real networking hardware. At that point I might post it
             | again, although I will have to add enough content to it to
             | justify a repost.
        
               | CyberRabbi wrote:
               | Are you able to measure the latency of processing one
               | request when there is no load?
               | 
               | 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.
        
               | admax88qqq wrote:
               | The 38400 baud might be the biggest bottleneck.
               | 
               | 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
        
               | fisherjeff wrote:
               | Don't forget that 38400 baud serial is 3840 bytes/s...
        
               | arcticbull wrote:
               | 38400 baud should be 38.4kbits/sec or 4800 bytes/sec no?
               | 
               | [edit] never mind, you're right, assuming an 8N1
               | configuration - 8 bit bytes, 1 start bit, 1 stop bit, and
               | no parity bits.
        
               | admax88qqq wrote:
               | Yup definitely forgot bits vs bytes lol.
               | 
               | 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.
        
               | djbusby wrote:
               | The content can be performance metrics before and after
               | the Ethernet card.
        
             | tyingq wrote:
             | >Perhaps it's simply impractical on such modest hardware
             | 
             | 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.
        
             | outside1234 wrote:
             | It is probably the modem honestly. The 386 is well capable
             | of saturating a 38.4k modem many times over.
        
           | sbierwagen wrote:
           | Loaded fine a couple seconds ago. Took about a minute to
           | start transferring data, during which it didn't appear to be
           | responding.
        
           | dev912 wrote:
           | It loaded fast just now, but it's just a wall of text with 3
           | links. Just seems less impressive because of that. But it is
           | cool! I enjoy older hardware.
        
             | serentty wrote:
             | The increased speed is probably because of CloudFlare. I
             | know it's kind of cheating, but it was the only way to
             | avoid the hug of death. The good news is that the 386 is
             | still serving lots of incoming requests, just not every
             | single one. If I can think of some more authentic way to
             | keep the site up, I'll try that.
        
               | NaturalPhallacy wrote:
               | Well that and the page is 4KB with no javascript.
        
           | justizin wrote:
           | consider putting it behind a cdn like cloudfront or fastly, i
           | think both have free plans - it's a good way to illustrate
           | that you can serve a _lot_ of traffic with very little
           | backend power.
        
             | capableweb wrote:
             | > it's a good way to illustrate that you can serve a lot of
             | traffic with very little backend power.
             | 
             | 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...
        
               | chetanbhasin wrote:
               | I think the point is that an individual doesn't need a
               | lot of paid resources to take a website live with their
               | own hardware.
        
               | lucb1e wrote:
               | That's also true if you employ a ten year old laptop as I
               | do, quite power-efficient and has a built-in UPS (todo:
               | get one for the router). No CDN or anything and the
               | couple of pageloads per second (at peak), as the HN
               | homepage generates, barely raises the load average into
               | the point-tens.
               | 
               | 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...
        
             | kfichter wrote:
             | Ah yes, the very little backend power that cloudflare runs
        
             | serentty wrote:
             | I think I have CloudFlare on, and I am seeing requests with
             | a CloudFlare header, but I am still getting a huge amount
             | of traffic. I am not sure what the issue is. Maybe the site
             | is so busy that CloudFlare can't even load it to cache it,
             | haha. Anyway, I have to leave for an exam now, so let's
             | hope it manages to work itself out.
        
               | spockz wrote:
               | Changing to cloud flare probably meant updating your dns
               | settings. Based on the TTL of the record and clients
               | respecting it, the change can take a while (up to days
               | even) to spread around the world.
        
               | [deleted]
        
           | ulfw wrote:
           | Then what exactly is the point of posting it? Not calling you
           | out specifically but there's been quite a few similar ones,
           | always unavailable because they don't scale beyond one user.
           | So there's nothing to see and little to discuss.
        
       | MiddleEndian wrote:
       | It loaded for me just now, took a minute or so.
        
       | system2 wrote:
       | I guess it explains why it doesn't load for me, or anyone.
        
       | huhtenberg wrote:
       | Takes 80ms to load. From Europe. That's insane, if not altogether
       | impossible.
       | 
       | 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.
        
         | serentty wrote:
         | When I first posted it a few hours ago, I didn't have
         | CloudFlare. You can see lots of people unable to load the page
         | at all in the earliest comments. Unfortunately it got to a
         | point where pages weren't just slow to load, but the
         | connections were dropped entirely. So I figured that between
         | the options of enabling CloudFlare or just having it be
         | completely inaccessible, the former was preferable even at the
         | cost of authenticity. I would love to find a better idea for
         | how to keep the site online, if you have any.
        
           | zepearl wrote:
           | But but..., going through Cloudflare makes it lose all what's
           | related to the context of being hosted ony a 386SX etc... :(
        
             | serentty wrote:
             | Yeah, maybe posting it on Hacker News was a bad idea. I
             | should have tried somewhere with fewer visitors first.
        
         | [deleted]
        
       ___________________________________________________________________
       (page generated 2022-04-16 23:00 UTC)