Stable-fluids solver (velocity + dye) stirred by mouse/touch drives a GPU
spring system over all ~65k particles: they swirl with the flow, heat up
and flare while disturbed, then spring home. The sky shader leans and
washes with the flow. WebGL2; falls back to the static orb without float
render targets, and to a CSS orb without WebGL2.
Replaces the Crush landing page with a single-screen hero (no scroll):
gradient sky, particle orb with corona, 'Welcome to dangrubb.net' title,
top-left DG logo and a numbered menu. Raw WebGL (no three.js), self-hosted
Instrument Sans + Geist Mono. ~10 KB of JS.
- New CrushBase.astro layout with teal/silver color palette
- Redesigned index.astro with Camel Crush pack-inspired branding:
- Alfa Slab One font header (dangrubb.net)
- Center circular DG monogram with teal gradient (like Joe Camel)
- Animated splatter background effect
- 'Hint of Menthol • More Menthol' tagline
- Bottom nav links styled like pack text (ai•blog•media•storage•cv•git)
- Migrated main site, blog, CV, and music sections to Astro
- Component-based architecture with layouts
- JSON-based blog posts
- Static site generation
- Preserved original styling and functionality
- Use flexbox on blog-post container to center all children
- Set max-width on post container to constrain width
- Ensure content paragraph takes full width and centers text
- Blog posts now load from blog/posts.json
- Create blog/script.js to dynamically render posts
- Each post displays: title, date, content, image
- Support hash-based navigation to specific posts
- Updated blog/index.html to load posts dynamically
- Added styling for blog posts and containers
- First post is 'Status' matching the original content
- Create blog/posts.json for managing blog post metadata
- Add blog preview box (max 1/3 screen width) to homepage
- Fetch latest post dynamically with image and excerpt
- Updates automatically when new posts added to JSON
- Styled to fit no-scroll homepage layout
- Link to full blog page for each post