First Post
It is 2020 and I decided to create my own website. Why? Here are a few reasons.
Reason 1: Speed
I’m unsatisfied by existing web sites which download megabytes of resources, force you to login or make you
close a bunch of popups to see the content. So I decided to build a simple (but not simpler) web site which requires minimum resources and loads as fast as possible. I utilize all the features of
modern browsers: long term caching, inline critical CSS, Brotli compression, modern image formats or just
plain “don’t load anything that doesn’t bring substantial value” to achieve this. I want to make
the site speed a feature. As a result, the web site works and looks “good” even in links:

I want the site to be accessible from anywhere in the world - no matter how old the device is.
Reason 2: Privacy and Security
I serve this web site with strict Content Security Policy which carefully whitelists only the necessary resources. This helps to prevent possible XSS attacks. I plan to introduce Subresource Integrity to ensure the resources aren’t modified.
Currently the website is served with only one cookie (__cfduid)
required by Cloudflare CDN
strictly to perform rate limiting. The reason I’m using this service is to perform DNS changes more reliably,
because the hosting service I use charges an additional fee for a constant IP address. I’m working on a
workaround to self-host DNS and avoid this service completely.
I’m not going to add any kind of analytics service to preserve my visitors’ privacy. I plan to anonymize the access logs of the server to perform basic analysis of visitor patterns.
As of now, all the website content consists of static files — HTML and CSS — and I plan to keep it that way as long as possible. Simple systems are very hard to compromise.
Reason 3: Content
It is simple - I don’t want to be dependent on any external service to store and host any of this content. I want to have version controlled, original source version of the content. The brilliant feature of git is that any full clone of the repository contains all the changes which I can push anywhere - GitHub, GitLab, BitBucket, flash drive, etc.
Reason 4: It is fun!
I tried several static generators (Jekyll, Hugo, Gatsby, react-static) but none of them were as fun as writing my own engine, customized and optimized for my needs.
This website uses React for building blocks of the content (navigation, images, etc.),
Emotion for
styling, TypeScript for peace of mind. A minimal script performs server-side rendering to static HTML and CSS
of MDX content and then a simple
shell script with rsync deploys all modified files to a $5 DigitalOcean droplet.
Admit it - it is fun!