hassanrasheed, home

I rebuilt my site, and my name is now a few thousand particles

25 October 2026

My old site was a Google Sites page I put together during my master’s. It did its job: one bio, a list of jobs, a link to a paper. It was also frozen in 2022, which is a long time in a career that has since moved from Munich to Boston to Cologne.

So I rebuilt it. A few goals:

  • Mine. Plain files in a Git repo that I can change in a minute, not a page builder I have to log into.
  • Fast and free. Static HTML on Cloudflare. No server, no database, no bill.
  • No tracking. No cookies, no analytics, no fonts from someone else’s CDN. You get the page and that’s it.
  • A bit of fun. A personal site is the one place nobody can tell you to make it more boring.

The stack

The site is built with Astro. Every page is rendered to static HTML at build time, and JavaScript only ships where something moves. Blog posts like this one are MDX files in the repo:

---
title: My next post
description: One line for the list and for search results.
date: 2026-11-01
---

Write here.

Push, build, and Wrangler uploads the dist/ folder to Cloudflare. That’s the whole pipeline.

Why the header is made of keypoints

For my thesis I worked on matching pre-operative MRI with ultrasound taken during brain surgery. The core of it is keypoints: distinctive spots in an image, each with a position, a scale and an orientation, that you try to find again in a second, very different-looking image. Get enough good matches and you can line the two up.

The name at the top of the home page is a small tribute to that. The real heading is still there for screen readers and search engines, but on top of it a canvas samples the rendered letters into a few thousand points. A handful become “detected” keypoints (the circles with a little orientation tick), and faint lines keep matching keypoints in Hassan to keypoints in Rasheed, the way a matcher links two images.

Move your cursor over it and the points scatter, then spring back home. If your system asks for reduced motion, you get a still frame instead.

What’s next

More writing, mostly about the things I work on: data pipelines, agents that do real work, and the odd computer-vision detour. If something here is useful or wrong, tell me.


← All writing