starting a dev/research blog

blog personal

there’s no better time to start a blog than now, right? i haven’t had much of a presence online*(zero social media) nice and peaceful without it for a while, and i’ve been collecting thoughts and ideas for a while now. also building a blog from scratch is a fun project in itself.

it’ll take a moment to get the tone and style right and while it’s very easy to just generate something in 2026, i refuse to let the statistics machine write posts for me, so bear with me as i figure things out. the plan is not overly serious, not a joke either, something technical, personal reflections, and maybe some rants.

as the topics are complicated enough as is, i’m intentionally trying to avoid big words / buzzwords and instead (hopefully) explain things as they are in practice. one thing phd’s are very good at is making simple things sound complicated, and i want to avoid that on this blog. fundamentally having some touch with the real world is important to me, so i will do my best to keep things grounded and give you something other than a word salad. in my heart i am more of a hacker, and i’d much rather be building something cool than writing about it, but writing is also essential to share ideas and get feedback, so here we are.

the recent thing i’ve gotten into is trying to turn 10000 lines into 100 lines. i’ve been doing a lot of decluttering and minimalism recently. separating signal from noise. the same goes for digital clutter, so expect some posts about that. the first post is about this blog itself. it loads instantly, uses zero* javascriptexcept for the theme toggle button. it’s possible to apply prefers-dark for the initial load without js, but not in a toggleable way and not much css, and has 100 on all lighthouse scores. of course a true minimalist blog would be (and in my field often is) a plain html text file served over HTTP(S), but i digress. anyway the static site generator i used is astro, which does almost everything right out of the box.i know the reputation of the js ecosystem. i was positively surprised too.

image: lighthouse scores screenshot

on the server side all content has been pre-compressed into br, so the server is doing basically nothing except serving static files. and if you want the nginx config it’s right here:

server {
  listen 80;
  brotli on;
  brotli_static on;
  gzip on;
  gzip_static on;
  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ =404;
  }
  location ~* \.(woff2|webm|webp|css)$ {
    root   /usr/share/nginx/html;
    expires 1y;
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri =404;
  }
}

the key parts being the brotli_static and basic Cache-Control headers for static assets, so browsers can cache them forever. i suppose it could be simpler than nginx, but this is the best you can do with an off-the-shelf web server. anyway. actually - if i have more time i will see about making a purpose built socket server for this kind of thing.

i’ll try to post occasionally, but no promises. see you around!