- I grew up surrounded by books and games, and not much has changed. - Technology pulled me into a career building cloud and mobile - applications, but I never stopped collecting dice, designing - campaigns, or losing weekends to Sanderson rereads. I am currently - expanding into SAP's Business Technology Platform, exploring AI and - machine learning, and trying to convince my group that yes, we - can fit one more board game into game night. + I grew up loving books and games, and not much has changed. Technology + pulled me into a career building cloud and mobile applications, but I + never stopped collecting dice, designing campaigns, or losing weekends + to Sanderson reads. I am currently expanding into SAP's Business + Technology Platform, exploring AI and machine learning, and trying to + convince my group that yes, we + can fit one more board game into game night.
- I believe the best work happens when curiosity isn't compartmentalized. - The same system-thinking that makes a good developer makes a good - gamemaster. The patience that produces a clean resin cast is the same - patience that debugs a stubborn deployment. This site is where I don't - have to pretend those things are separate. + I believe the best work happens when curiosity isn't + compartmentalized. The same system-thinking that makes a good + developer makes a good gamemaster. The patience that produces a clean + resin cast is the same patience that debugs a stubborn deployment. + This site is where I don't have to pretend those things are separate.
Prefer a form? Drop a note and it will land in my inbox.
@@ -134,7 +191,8 @@ const social = [ class="mx-auto max-w-2xl border-l-2 pl-5 text-center font-sans text-lg italic" style="border-color: var(--color-accent); color: var(--color-text-muted);" > - Whether you want to talk cloud architecture, debate the best Gundam series, or need a fourth for game night, reach out. + Whether you want to talk cloud architecture, debate the best Gundam + series, or need a fourth for game night, reach out. diff --git a/src/pages/index.astro b/src/pages/index.astro index 2cf1e8f..1dd90bf 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,84 +1,94 @@ --- /** -* index.astro — Home (Landing) -* --------------------------------------------------------------------------- -* First impression page. Full-width hero with the animated background, the spec -* headline/subheadline/intro paragraph, and the two CTA buttons. Below the fold -* is the 3-column snapshot grid (Professional, Tabletop, Making) plus the wider -* Reading & Media strip. All copy is verbatim from the spec. -* -* Emojis from the spec table are rendered as mdi icons (no emojis per spec). -*/ -import BaseLayout from '@layouts/BaseLayout.astro'; -import Reveal from '@components/motion/Reveal.astro'; -import AnimatedBackground from '@components/hero/AnimatedBackground.tsx'; -import Icon from '@components/Icon.astro'; -import SectionHeader from '@components/layout/SectionHeader.astro'; -import CelestialImage from '@components/mystic/CelestialImage.astro'; -import AlchemicalDivider from '@components/mystic/AlchemicalDivider.astro'; -import SacredGeometry from '@components/mystic/SacredGeometry.astro'; -import ConstellationField from '@components/mystic/ConstellationField.tsx'; + * index.astro — Home (Landing) + * --------------------------------------------------------------------------- + * First impression page. Full-width hero with the animated background, the spec + * headline/subheadline/intro paragraph, and the two CTA buttons. Below the fold + * is the 3-column snapshot grid (Professional, Tabletop, Making) plus the wider + * Reading & Media strip. All copy is verbatim from the spec. + * + * Emojis from the spec table are rendered as mdi icons (no emojis per spec). + */ +import BaseLayout from "@layouts/BaseLayout.astro"; +import Reveal from "@components/motion/Reveal.astro"; +import AnimatedBackground from "@components/hero/AnimatedBackground.tsx"; +import Icon from "@components/Icon.astro"; +import SectionHeader from "@components/layout/SectionHeader.astro"; +import CelestialImage from "@components/mystic/CelestialImage.astro"; +import AlchemicalDivider from "@components/mystic/AlchemicalDivider.astro"; +import SacredGeometry from "@components/mystic/SacredGeometry.astro"; +import ConstellationField from "@components/mystic/ConstellationField.tsx"; // Snapshot grid content from the spec, with spec emojis mapped to mdi icons. // Each card now carries a vibe-matched stock image (swap for real photos later). const cards = [ -{ -icon: 'briefcase', -title: 'Professional', -copy: 'From SAP-adjacent cloud apps to full-stack mobile — a decade of building software that businesses actually use.', -href: '/professional', -image: '/images/pro-workspace.jpg', -alt: 'Developer workspace with code on screen', -}, -{ -icon: 'dice-multiple', -title: 'Tabletop', -copy: "Currently running two campaigns in Foundry VTT and playtesting MCDM's Crows. Always rolling dice.", -href: '/interests/ttrpgs', -image: '/images/ttrpg-dice.jpg', -alt: 'Polyhedral dice on a dark surface', -}, -{ -icon: 'palette', -title: 'Making', -copy: 'Resin dice, 3D prints, and whatever else catches my eye. If it involves layers and precision, I am in.', -href: '/interests/making', -image: '/images/making-resin.jpg', -alt: 'Resin crafting in progress', -}, + { + icon: "briefcase", + title: "Professional", + copy: "From SAP-adjacent cloud apps to full-stack mobile — a decade of building software that businesses actually use.", + href: "/professional", + image: "/images/pro-workspace.jpg", + alt: "Developer workspace with code on screen", + }, + { + icon: "dice-multiple", + title: "Tabletop", + copy: "Currently running two campaigns in Foundry VTT and playtesting MCDM's Crows. Always rolling dice.", + href: "/interests/ttrpgs", + image: "/images/ttrpg-dice.jpg", + alt: "Polyhedral dice on a dark surface", + }, + { + icon: "palette", + title: "Making", + copy: "Resin dice, 3D prints, and whatever else catches my eye. If it involves layers and precision, I am in.", + href: "/interests/making", + image: "/images/making-resin.jpg", + alt: "Resin crafting in progress", + }, ]; ---+
Software Developer · Maker · Tabletop Gamemaster
-+I build things with code during the day and with resin, plastic, and - imagination at night. I lead cloud and mobile development at Implico, - run D&D campaigns that span years, and fill my shelves with Brandon - Sanderson novels, custom dice, and board games. This is the place - where all of those worlds meet. + imagination at night. I lead cloud and mobile development at + Implico, run D&D campaigns that span years, and fill my shelves with + Brandon Sanderson novels, custom dice, and board games. This is the + place where all of those worlds meet.@@ -93,89 +103,145 @@ alt: 'Resin crafting in progress',