Jef Poskanzer's personal site hosts free software such as thttpd and micro_httpd, the PBM image utilities, and assorted web experiments.
HN commenters mention it as one of the oldest personal sites online and credit Jef as author of the PBMplus image conversion tools.
Disclaimer: I’m not your target audience, and I only wanted to leave some minor bits of feedback about your home page. The page does look very neat to me overall, and I like the idea of making it an interactive demo. However, there are some UX/design details that I had trouble to wrap my head around:
- The demo onboarding flow is embedded into a fictional website (acme.com). That sample website only seems “half-functional”, though, and it took me a while to understand how it relates to the enclosing home page: some controls take effect within the embedded acme.com website (e.g. the clicking on the checklist items, which reveal content in the right-hand panel); some controls take effect outside of the embedded sample website, i.e., on the enclosing home page (e.g. clicking on the “See use cases” button, which makes the entire page scroll down); some controls don’t take effect at all (the items of the fake menu on the left hand side, e.g. “Team”, “Settings”, etc. – except for the “Reset demo” button, though). It might well be just me, but for my taste the overall design approach of the demo feels quite “meta”.
- I was able to complete the first checklist item “Welcome to Frigade!” by clicking the “Mark complete” button. But I couldn’t figure out how to complete the second item (“See use cases”) – even though I saw all use cases. Is that right, or did I miss something? The progress indicator in the lower right-hand corner suggests that I’d be able to complete all 6 steps at…
"Magnitude of the Disaster" is the type of hyperbole that doesn't bring clarity to the situation.
I've spent the majority of my working life in the last three years happily accessing the internet, internet services, and I've always been behind a PAT device when in a hotel, serviced apartment, etc...
For example, right now, in my Office in Singapore, my IP address is: 192.168.108.34. And I do all my conferences, whiteboarding, VPNs, etc.. from this office.
Now - back to your scenario - You certainly can share a lot of HTTP Servers on a single IP address - a lot of the customers I've worked with do so using PAT, and, you get very used to the port number being part of the HTTP server address:
I.E. http://www.acme.com:3031
In a ultra-low IP address environment, you have teams with not only IPAM (IP address Management tools), but also Port Address Management - they track who has been allocated to which port.
Now - is this the best case scenario? - No, obviously not - it would be awesome to have a Static IP address, and, there are some scenarios in which I have to have a static IP address - in particular getting IPSec VPNs through PAT can be problematic, so if I want to run a VPN concentrator, I start begging and pleading to get a static IP address. But I know this is going to cost me a lot of money. And that's where I started - once we run out of IPv4 addresses, the market will just start bidding the price of them up. Right now, most ISPs in Singapore will give you a…
I found this during research and thought I'd share. It could be better, but it's a one-person project labor of love, so I'm pretty forgiving.
For new-ish parts, PCPartPicker.com is still the single best resource for this info, but their info isn't always entirely accurate. For a given board I was researching with USB3.0, PCPartPicker listed it as having USB3.1Gen1 support. For compatibility its built-in checking is pretty good for what it does, but if your use case demands specific I/O ports/functionality, especially dicey things like Thunderbolt over USB-C, always discover the ground reality for yourself from first-party sources, such as the OEM/vendor.
https://pcpartpicker.com/products/motherboard/
Here's some other motherboard research links I found:
https://acme.com/build_a_pc/boardfinder/
http://www.motherboards.org/mobot/stats.html
For all I know, Servo will go on to conquer the world.
However -- after surveying the comments here, I am left with a poignant sense that this launchpad project has already contributed way beyond its share of heavy lifting to shape and to popularize the rust programming language. Servo no longer needs to succeed in order for rust to win.
Back before multi-core x86 CPUs or the C10K paper came out, a unique engineer decided to show the world[0] how an event-driven web server could perform way better than the threaded web servers of the day. Nobody really uses thttpd in serious production work anymore, but its influence and example can be traced through Zeus web server, lighttpd, litespeed, and on to haproxy and nginx today.
[0] http://acme.com/software/thttpd/
My favourite is thttpd [1] which is super tiny, battle-tested and actually meant for the job (and only this job). It's available as a package on most Linux distros.
Serving a static folder `/static` on port `3000` as user `static-user` and with cache headers set to 60 seconds would go like this:
thttpd -D -h 0.0.0.0 -p 3000 -d /static -u static-user -l - -M 60
Even if you've got Python lying around on every Ubuntu server, I still don't get why you wouldn't use something leaner to serve your static files, as long as it's easy to install/configure. Same goes for most of the runtimes in that list.
[1] https://www.acme.com/software/thttpd/
> My favourite is thttpd [1] which is super tiny, battle-tested and actually meant for the job (and only this job). It's available as a package on most Linux distros.
Surprising not on Debian or Ubuntu AFAICT:
* https://packages.debian.org/search?keywords=thttpd
Though it does seem to have this from the same author:
* https://packages.debian.org/search?keywords=mini-httpd
* http://www.acme.com/software/mini_httpd/
There are times that I want to run Let's Encrypt that's not a full-time web server (SMTP, IMAP, etc), and it would be handy to spin up something ad hoc on tcp/80 to do the verification step and then stop it right after.