![](https://taylor.town/worst-homepage.jpeg)

# My Website Is Ugly Because I Made It

If my mom wanted good art on her fridge, she could've purchased reprints of
works by Vermeer, Lichtenstein, Wyeth, etc. But she didn't want good art -- she
wanted _my_ art.

Somebody with good taste could've made my website, but then it wouldn't be
_mine_.

To bake bread, many feel compelled to grow wheat, mine salt, culture yeast, etc.
Not me. My puerile palate yearns for buckets of Olive Garden breadsticks.

That's okay. Your "mine" is not my "mine".

Some folks
[run self-hosted websites on solar power](https://solar.lowtechmagazine.com).
Others [share wisdom on Substack](https://lcamtuf.substack.com/about). This guy
[posts manufacturing deep-dives to YouTube](https://www.youtube.com/@BreakingTaps).
Gwern [does whatever this is](https://gwern.net).

It's an itch -- a feeling that _something_ is really important, and you need to
do _something_ about it, and nobody else can possibly do it except _you_.

I am not compelled to bake bread, nor provision servers, nor build chips. Yet
that itch pervades, and it pulls me toward humor and systems and life and
software and structure. And when emotion becomes unbearable, it erupts out of
me: fiction, HTML/CSS, crappy robots, sad songs, and so on.

My website is _my website_.

In the past, I just wanted simplicity and friendliness: remove noise, boost
contrast, flatten menu depth, boring HTML, reduce CSS, avoid JS, etc.

My website looked like this:

![taylor.town 2023](https://taylor.town/taylor-town-2023.png)

But things started going sour when I decided to occupy as much horizontal space
as possible.

The plan was simple: slap `flex-wrap` on a `ul`. Unfortunately, text wraps too.
It was unclear where one link ended and the other began. Some folks read
`inline` and others perceive `inline-block`.

More whitespace? Yikes. Borders around each link? No way. Dots between the
links? Yuck.

So let's vary the links! The chaos you see on my homepage comes from a few
simple rules:

    li:nth-child(4n + 0) { transform: rotate(1deg); }
    li:nth-child(4n + 1) { transform: rotate(-0.6deg); }
    li:nth-child(4n + 2) { transform: rotate(0.5deg); }
    li:nth-child(4n + 3) { transform: rotate(-0.75deg); }

    li:nth-child(6n + 0) { font-family: Times; }
    li:nth-child(6n + 1) { font-family: Helvetica; }
    li:nth-child(6n + 2) { font-family: Georgia; }
    li:nth-child(6n + 3) { font-family: Times; }
    li:nth-child(6n + 4) { font-family: Arial; }
    li:nth-child(6n + 5) { font-family: "Trebuchet MS"; }

I originally chose
[coprime integers](https://en.wikipedia.org/wiki/Coprime_integers) for more
variation, but I rather liked the subtle repetition in this pattern.

I love minimalism and hate sterility. I sprinkled three additional surprises to
evoke a "used bookstore" feeling:

    li:nth-child(5n + 2) { font-weight: 100; }
    li:nth-child(7n + 2) { letter-spacing: -1px; }
    li:nth-child(41n + 31) { transform: rotate(181deg); }

The web remains an interactive medium. I wanted my site to react to cursor
movement without JS; this CSS produced a pleasant "touching grass" feeling:

    li:nth-child(2n + 0):hover { transform: rotate(-2deg); }
    li:nth-child(2n + 1):hover { transform: rotate(2deg); }

Okay, now it reacts to cursor movements, but I also wanted to exaggerate _that
scrolling feeling_ without scrolljacking. Simple textured backgrounds make a
webpage feel more like a _page_. So I synthesized texture with
[css-doodle](https://css-doodle.com):

    svg {
      viewBox: .5 .5 10 10;
      fill: #000;
      circle*1000 {
        cx, cy: @r(10), @r(10);
        r: @r(.005, .01);
      }
    }

So many little dots. In light mode, they become dust on paper. In dark mode,
they're stars in the sky.

Today, my site looks like this:

![taylor.town 2024](https://taylor.town/taylor-town-2024.jpeg)

Soon it will become something else entirely. Because it's _my website_ and I'm
perpetually becoming somebody else.

You'll change too. Your passions and values will pollinate; your ugly thing --
whatever it is -- will come alive again and again.
