Loading post.
Loading post.
12 June 2026
The stack, the setup, and the first working version of this site.
My background is in HRIS and data analytics. This site started as a side project with two goals: learn about modern tech stacks, and figure out what kind of technical work I actually enjoy. Building something real seemed like the only way to do either. The blog will mostly act as notes to myself along the way.
Previously I had a static HTML site on GitHub Pages, last updated around 2018. It was mostly a photo portfolio at the time. By 2026 it was really getting outdated, so I decided to take it on as my first project and rebuild it from scratch.
The direction for the new site came from an acquaintance's portfolio in Osaka. Minimal, nothing on the page that wasn't needed, with a cool shader running in the background. I liked the feel and built a darker version of the idea.
I had some coding experience, but that was years ago, so I'd consider myself relatively new (again) to most of this. These days that's less of a wall than it used to be: I build with Claude Code, and it writes most of the actual code. My part is deciding what to build and how it should behave, then working out why things break when they inevitably do. That's what this blog is really about - the decisions and the debugging, not the typing. When I don't fully understand something, that goes in too.
I wanted something flexible enough for interactive galleries, shaders, and 3D environments later on. Next.js felt like the modern upgrade that could support these ideas.
The domain carried over from the old GitHub Pages site. It's registered at Namecheap, so I kept the DNS there and pointed it at Vercel with an A record and a CNAME.
The first version is just a static page: name, a short role line, bio. Minimal greyscale, Inter font, content sitting in the bottom-left corner. Fixed sidebar nav on desktop, hamburger on mobile, smooth page transitions.
The navigation took a bit of thinking. The active link goes bold, bold text is slightly wider, and without any fix that causes a small layout shift every time you navigate. I ended up rendering a hidden bold copy of each label underneath, so the space is always reserved whether the link is active or not.
The static site was working, but it was just text on a dark background. The next steps were adding a live shader background, a CMS, and eventually a full photo gallery with multiple viewing modes including 3D environments. Those are covered in the articles below.