Michael Mulek /

[AI] Dev Log #1: Cleanup, a New Logo, and a Synthwave Sky

Three days of work on mulek.cc: fixes, SEO, a new logo and header, and a home page sky with a sun, constellations and nebulas.

#dev-log #design #starfield #seo #security

Summary

  • Dates: October 15–17, 2026
  • Commits: 27, across PR #7, PR #8, PR #9 and the dev branch
  • Files changed: 59 (+2,516 / −1,380 lines)
  • Status: PR #7, PR #8 and PR #9 merged to master and deployed; the rest ships with the PR that publishes this post

The site got a cleanup pass first, then SEO and contact form hardening, a new logo, and a redesigned home page sky.


What changed

Cleanup

  • Blog posts moved to clean URLs (/blog/<name>), with redirects from the old .md URLs
  • Unknown URLs show a 404 page instead of a server error
  • Removed placeholder links, a sample post, missing images and an unused slider
  • Added an RSS feed at /rss.xml
  • Project write-ups moved out of the blog into their own collection at /projects/<name>

Background

  • Replaced the SVG grid and dots with a single canvas
  • Added rare red and blue stars and an occasional comet

Home page

  • The about panel updates itself: years of experience, local time and status, and the current project
  • Added an MIT license for the code; site content and images stay all rights reserved

Contact form

  • Limits each IP to 5 messages per hour
  • Field length limits on both the form and the server
  • Visitors only see generic errors; details go to the server log

SEO

  • Link previews (Open Graph and Twitter tags) with a 1200×630 image
  • Canonical URLs, a sitemap and robots.txt

Brand and layout

  • New logo: the >m_ mark, an m favicon and the mulek✦cc wordmark
  • The header is tall at the top of the page and turns compact on scroll
  • Short pages center vertically; long pages start at the top
  • Even 32px spacing between page headings and the panels below them

Home page sky

  • A large striped sun sits on the horizon behind the two hero panels
  • Constellations draw themselves in one after another, anywhere in the open sky
  • Soft haze around each constellation’s stars
  • Nebula clouds in their own colors: green, cyan, blue and amber
  • The two hero panels are the same width and centered on the sun
  • Their 12px edge follows the sun’s gradient and fades out near the bottom

Colors

  • New highlight color, the sun’s pink, used for hover states, category tags and the logo’s ✦
  • Sub-page panels get an orchid-to-lavender edge to match the home page
  • Better contrast in both themes (at least 4.5:1 for text)

What we learned

  • Environment variables are read at build time. A variable missing during the build is baked in as undefined, and setting it later doesn’t help.
  • Scripts must re-run after page transitions. With Astro’s ClientRouter, page scripts initialize on astro:page-load, not just on first load.
  • Tailwind only sees full class names. Classes built from pieces of strings never get generated.
  • Canvas and CSS blend colors differently. The canvas mixes in sRGB, so CSS gradients that need to match it use in srgb.
  • Fading to transparent turns gray. Fading to the same color at zero opacity keeps it clean.
  • Partly see-through shapes leave seams where they meet. Drawing the sun whole on its own layer, then erasing the gaps, avoids them.
  • Light colors look washed out on a light background. In light mode the nebulas darken the sky like ink instead of being painted over it.
  • Redrawing every glow every frame was too slow. With 8 or more constellations the animation stalled; painting each finished constellation’s glow once and reusing it fixed that.
  • git remote -v only works inside a repository. The home panel now shows git clone, which works anywhere.
  • Headless browser screenshots only run a frame or two of animation. Testing anything animated needs time skipped ahead.

Commits

PR #7 (merged)

CommitMessage
df88a29chore(package): remove duplicate start script
b5ba241fix(blog): serve posts at clean slugs and add 404 page
79cb68dfix(projects): remove placeholder links and unused featured slider
d9d4175chore(blog): remove sample post and missing cover image refs
cc4f1e1feat(blog): add RSS feed
27a93c4docs: correct README and add CLAUDE.md
88f1758refactor(background): replace SVG grid and dot elements with a canvas starfield
b32380edocs(claude): document the Starfield component
47ee4a0feat(projects): move project write-ups into a projects content collection
f63803bdocs: update CLAUDE.md and README for the projects collection
7c8ebc5docs: add ROADMAP.md as a running improvement list

PR #8 (merged)

CommitMessage
4ef60aefeat(starfield): add rare colored stars and occasional comets
b6ff4aafeat(starfield): vary comet size, angle, and glow color
b49f3a0feat(home): make the about panel self-updating and drop the tech tags
2b95e8cchore(license): add MIT license for code, reserve rights to content
068b458style(home): even out spacing around the about panel cards

PR #9 (merged)

CommitMessage
da9cf6ffeat(contact): add rate limiting, input limits, and generic errors
5de25d0feat(seo): add link previews, canonical URLs, sitemap, and robots.txt
0b6ff5cfeat(brand): add the m favicon, prompt mark, and mulek✦cc wordmark
33f231afeat(header): expand at the top of the page and compact on scroll
7a1ff23style(layout): center short pages vertically and unify page spacing

On dev (ships with this post)

CommitMessage
fe71afachore(github): add a pull request template
f64f1bbfeat(home): add a synthwave sun, constellations and nebulas, and carry its colors site-wide
30438a1feat(starfield): place constellations anywhere in the open sky and allow up to 12 of each
9030dd2style(home): enlarge the right panel text and show a working git clone command
cf6f172fix(blog): show post dates in UTC and drop backticks around inline code

Plus the commit that adds this post: docs(blog): add Dev Log #1 and a dev log template.


Next up

  • Rework the phone layout so the sun still shows
  • Pick the final number of constellations and nebulas, then remove the test switcher
  • Make the page headings consistent
  • First write-ups for the homelab projects

🔗 Repository: github.com/copperpocket/mulek.cc