tl;dr: this is just a fun little design write-up i wanted to do. use the table of contents if there’s a certain small thing you’re interested in. i also have a large backlog of other writing ideas that i believe will provide more value.

I have rebuilt my personal website five times in the twoish weeks. None of these rebuilds were necessary. All of them were necessary. Let me explain.

My site currently lives as a column of lowercase text with a picture of my cat in it. Getting there took a stock photo of a Lay’s chips bag, three spinning record players, a font made out of my own handwriting, and an embarrassing number of commits.

This is the step-by-step, with receipts, because I kept patch notes the whole time like the website was a competitive video game receiving balance updates (it was. the enemy team was me.).

I have never studied design. I just thought it would be cool to share how I made the choices I did, what I paid attention to, and which people gave me ideas along the way. A lot of the inspiration came from friends and/or people whose taste I admired s/o rodney and emmi.

Also, there is a pretty good chance the website you see today no longer matches every choice in this post. I will try to keep this updated.

the full iterations

the og website

the original site: a white page with a photo grid, a lay's chips bag for projects, a deer for about, a clipboard for resume
the original homepage. yes, the projects tile is a bag of chips.

The original site: a white page with a photo grid, originally made without AI tools but eventually tidied up with them. I finally got fed up and decided to redesign it since it was paining my taste buds. The first real version was hosted on Firebase, and had funny jokes relating my name with the chips and the flowers.

the lower half of the original grid: a riot games fist logo for website patch notes, a playground, and a rainbow lei
the riot games fist, but for my website's changelog.

the first iteration

a cream dashboard with spotify top tracks and artists on the left, github heatmap and strava grid on the right
my life as a bento box.

So I started last week with some inspirations from my friends and people whose taste I admired and enjoyed. Originally I had this really good (bad?) idea in trying to make my website entirely dashboards of my life. I was going to include my live heart rate on it (WIP) through the google health api and a fitbit. It would’ve basically been my life as a bento box. I basically restarted the codebase from zero, keeping only my media files and fun projects to be reused.

the second iteration

a dark three-column portfolio with an experience timeline, a select work showcase, and a playground column
please hire me

The site got serious. Dark theme, three columns: an experience timeline with real company logos on the left, a “select work” showcase in the middle, a playground and a ⌘k command palette to search on the right. This was also when I decided that I wanted to have a plan for the whole redesign.

the third iteration

a dark purple homepage with a giant serif hero reading 'ideas are better when they move.' and three spinning records
three spinning records and a thesis statement.

The record spinning idea was whatever, I built it out and it seemed too complex and not intuitive enough for users to navigate. This redesign opened with a giant serif hero that read “ideas are better when they move.” Under it were three spinning records: a red one for work, a yellow one for projects, a white one for me, each loaded with little photo slides. It had theme-aware loading sounds. It had a search bar. It was the most impressive thing I’ve ever built for recruiters who spend 5 seconds on the page.

the same homepage, with the accent text now set in a handwriting font
same site, but the accents are in my actual handwriting.

the final copy

v3.0.0: a single centered column of lowercase text with a handwritten title, yellow links, and tabbed activity widgets
v3.0.0: everything above, replaced by a paragraph.

One day later, I archived the whole thing. I loaded up rodney’s portfolio and really loved the simple leiout.

The 3.0.0 patch notes say it plainly: rebuilt “as a text-first single column, in the spirit of the small personal sites I keep coming back to.” That’s the honest part. The sites I actually revisit aren’t the impressive ones. They’re the ones where a person just talks to you, it’s easy to read, digest, and a bit humourous. So the reels went into the archive, and the homepage became a bio. The widgets survived but got folded into little tabs.

the current site: the single-column bio with figtree type, a handwritten title, and a photo of a smoke-black kitten
today: figtree, cabin, and cc.

The current version, 3.1.0, is mostly typography plus a cat. Her name is cc. She gets a caption.

Oh, and it was also here where I decided that I wanted to switch my hosting from firebase to cloudflare. I realized for a static page there was no reason to be serving it from firebase, which has limits, as opposed to something like cloudflare, which has a pretty friendly free tier.

cool design things i paid attention to

the social card

I also had to think about what the website looked like when it wasn’t open (it’s kind of like a business card). The first social card copied the website almost exactly: the handwritten name, the 吴磊 chip, the navigation rail, and the start of my bio. Then I removed almost all of it. The final card is just my name and the red name chip on the light purple background. Classic example of less is more as it went from 81kb to 41kb.

the custom font and every font after it

I even built a font. Lont is my own handwriting, digitized and landed on the accent text, so “designer & maker of small things” is written the way I’d write it on a sticky note. I’ve also come to realize my handwriting lowkirkenuinely looks like comic sans.

Choosing the rest of the fonts was t u f f TUFF. I originally wanted to go with söhne (NYC subway font), but that font costs up to $500 for personal use and I didn’t want to pay all that. So I went into the rabbit hole of looking and found that figtree was the next best thing. Then I learned about complementary fonts and had to find the best for figtree. I had originally went with fraunces, but something about it didn’t seem right, so I tested and played around until I found cabin. Figtree now carries the reading and cabin handles the little labels. And as I’m writing this I want to change the font from cabin to bookmania (but it also has the same problem as söhne for needing to be paid (New York or Nowhere font).

a type specimen of every font the site has used: lont, dm sans, jetbrains mono, söhne (absent), figtree, fraunces, and cabin, each set in its own face
every face this site has worn (and one it couldn't afford)

the animated loading screen and name card

Around this time is when I had decided that making an intro/loading animation would be really cool. And really cool it was, since a lot of people on x have since complimented me on it. I got the original idea from emmi on X, who had an intro. I also stole her chinese name flow.

The majority of the process of making the animation was through osmo studio and claude going back and forth until it got it done pretty well. I think it was a lot of back and forth prompting until it became something acceptable. I made slightly different loading animations for the light and dark themes based on the user’s system settings. The page-reload sound effect went through six speed changes before I decided on one that felt right.

the simple design and layout

three versions of spider-man pointing at each other
spider-man pointing at each other :>

i couldn’t just copy rodney’s website entirely; i had to give it my own twist and make it original. the portfolio is supposed to be personal. So I spent a great amount of time thinking about how to write out what I want to present out to the world, what cool things about me to include, all while maintaining the use that the website can be used as a portfolio for my online self. I also wanted to embrace my humour in my writing, with just the way I like to articulate.

The 42rem column is intentionally almost boring. Super straight forward, no cards fighting for attention, and room for the writing to sound like me. With ai, so many things have gotten overly complex and noisy. I found that the simple designs are better (less is more!).

writing, patch notes, and the pleiground

The load-bearing tile on the original website was “website patch notes” behind a Riot Games logo. I started writing changelog entries for my personal website the way Riot writes patch notes for League: version numbers, dated entries, “The Inaugural Patch.” v1.0 shipped July 27, 2025, and the entry admits I’d already missed the first two years of changes. This habit outlived every design in this post.

Eventually some thoughts got too long for a patch note, which is how the writing page got here. The playground also became the pleiground because lei was sitting right there and I could not leave the pun unused. The old links still redirect, which is a very serious amount of engineering for one letter.

the colour choices

Some design decisions from the serious portfolio carried into the final versions: the colours. My favourite colour is purple, but I knew I wanted to have both a light and dark mode, so I used a super faint light purple and a deep dark purple. I also decided that the text would be in the same colours as the Lay’s Classic brand kit, borrowing their yellow, red, and white to acknowledge the chips within my website.

what i’d tell you if you’re doing this

Your personal website doesn’t need to be impressive. Mine was, briefly, and I deleted it. It needs to be yours. For me that turned out to mean lowercase, a chips pun, patch notes like it’s a video game, and a cat.

Redesign it whenever you want. You don’t need a reason. The website is never done, and that’s not a bug in the process. Every version in this post was “the final design” while I was building it. The only thing that actually persisted across all five is the changelog.

Keep the changelog.

ps: v1.0 through 2.0.1 is still faithfully serving the chips bag at laywuweb.web.app