This site is built from an simple intermediate language and output by a program called
rno to the source your browser is reading now.
Compared to other websites, it looks pretty dull. However, this language encourages and enforces simplicity in the output pages and how they are transferred and rendered. There are some benefits to doing thing this way:
- Each page is provably guaranteed to pass validation tests because in part it is specified as a value of a Haskell type that has already passed Haskell's type checks.
- The site is more accessible, that is, usable by people with the widest possible range of abilities, including those using assistive technologies like screen readers.
- The user can style the page themselves with user stylesheets if they feel that it's too ugly for them. I could in the future offer a bunch of different stylesheets so the user can pick the one that they like.
- Pages look good in text browsers like w3m, links or the truly old-school lynx, and the user experience is pretty much the same, apart from the odd image or figure here and there. It also works on mobile phones or a ton of other devices that struggle to cope with more complicated layouts.
- The site can also be viewed by users of other information systems such as Gemini or Gopher, even as plain text files.
- Bloat is reduced at each stage in the conversion process via minifiers and optimisers, leading to pages which are astonishingly small. With compression, a long article typically transfers in 10k or less, and the entire site is well under 150k. This helps a lot if you're on a rural connection in the developing world with lots of packet loss.
- Related to the last point, the hosting requirements are modest too. It's feasible to host this site on the router itself or using solar power, etc. Some pages are generated programmatically, for example the dinner club one. These are generated at site compilation time, typically computed via a bunch of Haskell and remain static on the server. The minimal file size and static serving of files means that a page will load in 100ms or less, even though it's hosted on a Raspberry Pi in the London docklands behind a IPv4-to-v6 proxy.
Besides these, I try to stick by the following principles of a utopian web:
- There is no user tracking, besides the web access logs that nginx writes. There are no cookies here, and therefore no pop-ups to request consent to store cookies.
- I outlink compulsively, because I think that one of the best features of the web is just having fun clicking around related sites. This site contains over one thousand distinct outlinks so far. The page building process even inserts automatic links where the source document is a text file. Over time I add to this, and even more outlinks appear. I always appreciate inlinks.
- Information has become very centralised on the web, and people usually rely on external services to store and present their blog or travel tips or whatever. Self-hosting means the priorities of these services can't interfere with the availability or use of the data in the future.
Really, this site is mostly for my use. I see it as a scrappy notebook for my use that anyone in the world can open up and read. It's not meant to be a showcase or 'web presence' for anything or anyone, or even distribute anything. It's just a server where I drop documents and notes from time to time.
Thanks for dropping by! Feel free to get in touch if you want to!