/** * Content that lived inside the legacy site's page code rather than in data * files, extracted by hand once. Every entry names where it came from: * a legacy file, or Greg's own answers during the 2026-10-11 redesign. Nothing * here is invented; anything not known yet is left out or kept unpublished. */ export const MIGRATED_ON = "2026-10-11"; // ---------------------------------------------------------------- Site /** legacy/src/lib/site.ts, legacy/src/pages/about.astro, legacy/src/lib/archidekt.ts */ export const site = { title: "Site settings", name: "Greg Kilmer", tagline: "Developer. Maker. Storyteller.", lockup: "Web Development · a Patiun LLC company", location: "Philadelphia, PA", /** legacy contact pages; Greg confirmed it for the resume PDF (Resume Interview, 2026-10-11). */ email: "greg@gregkilmer.com", /** Resume Interview: open to offers but not looking, so the page says this. */ availability: "Open to freelance web work", /** Greg, 2026-10-11. */ replyTime: "2 days", socials: [ { label: "GitHub", handle: "Patiun", url: "https://github.com/patiun" }, { label: "LinkedIn", handle: "Gregory Kilmer", url: "https://www.linkedin.com/in/gregory-kilmer-36646bb5/" }, { label: "Archidekt", handle: "Patiun", url: "https://archidekt.com/search/decks?ownerUsername=Patiun" }, ], footer: "Built with intention. Powered by caffeine.", }; /** The status log's kinds. Icons are mdi names until the brand icon set lands. */ export const statusKinds = [ { label: "Reading", icon: "book-open-variant", page: "/library" }, { label: "Listening", icon: "headphones", page: "/library" }, { label: "Watching", icon: "television-classic", page: "/library" }, { label: "Playing", icon: "gamepad-variant", page: "/library" }, { label: "Running", icon: "dice-multiple", page: "/tabletop" }, { label: "Making", icon: "hammer-wrench", page: "/workshop" }, { label: "Learning", icon: "school", page: "/workshop" }, ]; // ---------------------------------------------------------------- Pages /** Written introductions, verbatim from the legacy pages. */ export const pages = [ { title: "Landing", page: "/", publish: true, portrait: "/images/hero-portrait.jpg", body: "I build things with code during the day and with resin, plastic, and imagination at night. I lead cloud and mobile development at Implico Inc., 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.", source: "legacy/src/pages/index.astro", }, { title: "About me", page: "/about", publish: true, portrait: "/images/about-portrait.jpg", photos: [ { file: "/images/kashi_at_work.jpg", alt: "Kashi, a mini dachshund, at work with his dog dad", caption: "Kashi, on the job" }, { file: "/images/tea-gaiwan.jpg", alt: "A tea gaiwan set on a mushroom towel", caption: "Loose-leaf tea, the other fuel" }, ], quickFacts: [ { icon: "map-marker", text: "Philadelphia, PA" }, { icon: "briefcase", text: "BTP, Cloud, and Mobile App Lead at Implico Inc." }, { icon: "dog", text: "Dog dad to Kashi the mini dachshund" }, { icon: "dice-multiple", text: "Running D&D & Daggerheart campaigns" }, { icon: "book-open-variant", text: "Currently tandem reading: Heir of Fire and Tower of Dawn by Sarah J. Maas" }, { icon: "tea", text: "Fueled by loose-leaf Chinese tea and Mountain Dew" }, ], body: `I am Greg: a software developer and technical team lead based in Philadelphia who spends his free time running tabletop RPGs, making resin dice and custom cards, 3D printing anything I can, and reading his way through fantasy series at an alarming rate. I live with my partner Krystina, our mini dachshund Kashi, and more board games than any reasonable apartment should hold. ## The longer arc 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.`, source: "legacy/src/pages/about.astro", }, { title: "Workshop", page: "/workshop", publish: true, lede: "A magnet for super glue and nice cardboard.", body: `Making is part of me. Ever since I can remember, I had been dreaming of making inventions and things from cardboard and clay. I took things apart to see how they worked, and rarely got them back together. But now I have the tools and the skills to take ideas from my imagination and physically produce them. I cast resin dice using pressure pots and custom molds, print miniatures and props on my Elegoo Mars 4 (resin) and Bambu Labs P1S (FDM), and generally fill my workspace with projects-in-progress. I make beautiful cards as gifts and even make proxy mockups of trading cards to enjoy games casually. There's something deeply satisfying about taking raw material through a process and holding the finished piece, whether that's a perfect polyhedral set or a hook that fits just right in that weird spot in the bathroom. The ability to blend my technical skills and my creative impulses into tangible objects is a fantasy come true my child self only dreamed of.`, source: "legacy/src/pages/interests/making.astro", }, { title: "Tabletop", page: "/tabletop", publish: true, lede: "Long-running D&D and Daggerheart campaigns on Foundry VTT, the MCDM Crows playtest, and a growing board game collection.", body: `I love playing tabletop games from trading card games to role-playing games. I run Dungeons & Dragons and Daggerheart campaigns that span years of real-time play, maintaining worlds, NPCs, and narrative threads that my players remember years later. I host everything on Foundry VTT, which lets me build the kind of dynamic, visually rich experiences that keep players invested session after session and lets me flex my technical skills. I also love board games, from strategy to social deduction. My collection is growing, and I enjoy hosting game nights with friends. I have a particular fondness for games that challenge players to think critically and creatively, and I appreciate the social aspect of gaming as much as the gameplay itself. Although, I do love the ability to play some of the engine building and deck-building games solo. Spirit Island and Wyrmspan have been my favorites lately, and I am always on the lookout for new games to add to my collection. Trading card games are where my collecting, deckbuilding, and making instincts all collide. I primarily play Magic: The Gathering, mostly Commander (Elder Dragon Highlander), where a hundred cards becomes a personal expression and the brewing never really ends. But I keep a hand in the Pokémon TCG, and I'm watching Riftbound and the new Gundam card game closely. If it has nice cardboard, pretty art, and a decision tree, I'm interested. The hobby overlaps the rest of the fun wing: the same workshop that produces resin dice and 3D prints also turns out proxies, tokens, and deckboxes and more. And the deckbuilding itch is a close relation of the RPG character-builder in me. Optimizing a list tells a story about how I want to play and the theme I build the deck around.`, source: "legacy/src/pages/interests/ttrpgs.astro, legacy/src/pages/interests/tcgs.astro", }, { title: "Video games", page: "/library", publish: false, tags: ["legacy text"], body: `Gaming has always been a passion in my life. I span console generations from the Sega Genesis to the modern era. I play mainly with a PlayStation 5, Nintendo Switch 2, and a Steam library that has gotten politely out of hand. I'm particularly drawn to RPGs, strategy games, and anything with a creature to tame or a deeply layered world to explore. But a good game loop will get me sucked in harder than the sunk cost fallacy of a League of Legends streak. I love to play with friends, but have found myself leaning more towards single-player experiences. Someone should have told younger me that scheduling would be the final boss! ## Platforms - **PlayStation 5.** Mainly for single player and exclusives. - **Nintendo Switch / Switch 2.** Handheld and docked. Pokemon, Mario, and many other Nintendo and indie gems. - **Steam.** The primary game library. Strategy, RPGs, Adventure, oh my! And an ever-growing backlog. ## Favorite genres - **RPGs (Western & JRPG).** Character progression and stories I can live in for 100+ hours and then turn around and do it again. - **Creature Collecting.** If I can catch, train, or befriend a roster, I'm sold. - **Strategy & Tactics.** Turn-based puzzles and tactical challenges where the right plan is oh so rewarding. - **Building & Crafting.** Give me a grid, resources, and a goal, and watch the evening vanish. - **Automation.** Optimizing a production line until its perfect is my zen. - **Open-world Exploration.** The map IS the point. I will try to climb every mountain and I will check every waterfall for treasure. - **Indie Darlings.** The small, weird, passionate projects that punch far above their size.`, source: "legacy/src/pages/interests/gaming.astro", }, { title: "Pokémon", page: "/library", publish: false, tags: ["legacy text"], body: `Pokémon has been a lifelong obsession. From Red and Blue on the original Game Boy to modern competitive formats, I've followed the franchise through every generation. My favorite? Metagross, the iron leg Pokémon. Steel/Psychic, beautiful design, absolutely devastating in battle. No further questions.`, source: "legacy/src/pages/interests/pokemon.astro", }, ]; // ---------------------------------------------------------------- Workshop /** Greg's workspace description, 2026-10-11 redesign interview. */ export const stations = [ { title: "Print station", where: "Work counter and filament wall", goodFor: "Deck boxes, terrain, props", order: 1 }, { title: "Print and cut desk", where: "The smaller desk", goodFor: "Proxy cards, stickers, decals", order: 2 }, { title: "Main desk", where: "Monitors plus a large cutting mat", goodFor: "Card finishing, leatherwork soon", order: 3 }, { title: "Fume hood", where: "Custom built for resin", goodFor: "Minis, dice, rings", order: 4 }, ]; /** Blurbs from legacy/src/pages/interests/making.astro; placement from the interview. */ export const tools = [ { title: "Bambu Labs P1S", kind: "printer", station: "Print station", blurb: "FDM 3D printer. Functional prints, terrain pieces, and larger prototypes." }, { title: "Filament wall", kind: "material", station: "Print station" }, { title: "Epson 8500", kind: "printer", station: "Print and cut desk" }, { title: "Silhouette Cameo 5a", kind: "cutter", station: "Print and cut desk", blurb: "Multi material cutting machine. Silly stickers, custom vinyl decals, and custom/proxy TCG cards." }, { title: "Cutting mat", kind: "finishing", station: "Main desk" }, { title: "Elegoo Mars 4", kind: "printer", station: "Fume hood", blurb: "Resin 3D printer. Miniatures, terrain, and high-detail props." }, { title: "Pressure pot", kind: "casting", station: "Fume hood" }, { title: "Dice molds", kind: "casting", station: "Fume hood" }, ] as const; /** Crafts and statuses from the interview; the resin blurb from making.astro. */ export const crafts = [ { title: "Resin", status: "Practicing", station: "Fume hood", tools: ["Pressure pot", "Dice molds"], blurb: "Custom molds, pressure pot curing, pigment experimentation. Producing dice sets for personal use and gifts." }, { title: "3D printing", status: "Practicing", station: "Print station", tools: ["Bambu Labs P1S", "Elegoo Mars 4", "Filament wall"] }, { title: "Cards and decals", status: "Practicing", station: "Print and cut desk", tools: ["Silhouette Cameo 5a", "Epson 8500"] }, { title: "Paper and bookbinding", status: "Learning" }, { title: "Leather", status: "Getting into", station: "Main desk", tools: ["Cutting mat"] }, { title: "Props and gifts", status: "Practicing" }, ] as const; /** The legacy gallery (making.astro) with its captions, plus the sword rack from the interview. */ export const makes = [ { title: "Teal and gold leaf dice", craft: "Resin", photo: "/images/making-resin.jpg", blurb: "Resin dice set, teal with gold leaf inclusions." }, { title: "Golden moss dice", craft: "Resin", photo: "/images/dice_golden_moss.jpg", blurb: "Resin dice set, a moss-like pattern with gold lettering." }, { title: "Scarlet dice", craft: "Resin", photo: "/images/dice_scarlet.jpg", blurb: "Resin dice set, scarlet with gold lettering." }, { title: "Galaxy dice", craft: "Resin", photo: "/images/dice_galaxy.jpg", blurb: "Resin dice set, a dark galaxy pattern with gold powder swirls." }, { title: "Seastone dice", craft: "Resin", photo: "/images/dice_seastone.jpg", publish: false }, { title: "Resin and painted rings", craft: "Resin", photo: "/images/resin_rings.jpg" }, { title: "Miniature", craft: "3D printing", photo: "/images/minis.jpg", blurb: "3D printed miniature." }, { title: "Deck boxes", craft: "3D printing", photo: "/images/deckboxes.jpg", blurb: "Design by @Iceenchanted on MakerWorld." }, { title: "Kynaios and Tiro proxies", craft: "Cards and decals", photo: "/images/proxies.jpg", blurb: "Proxy cards for my Kynaios and Tiro deck.", links: ["Kynaios and Tiro"] }, { title: "Foil proxies", craft: "Cards and decals", photo: "/images/proxies2.jpg", blurb: "Successful foil proxies for Magic." }, { title: "Christmas gifts for family", craft: "Props and gifts", photo: "/images/xmasgifts.jpg", blurb: "CS:GO cases, Nightblood, a Runescape helmet and ACOTAR drawers." }, // The sword rack, 3D printed (interview, round 1) { title: "Nightblood", craft: "3D printing", blurb: "From the Cosmere.", tags: ["sword rack"] }, { title: "Ronin lightsaber", craft: "3D printing", blurb: "From Star Wars Visions.", tags: ["sword rack"] }, { title: "Wado Ichimonji", craft: "3D printing", blurb: "Zoro's blade, One Piece.", tags: ["sword rack"] }, { title: "Enma", craft: "3D printing", blurb: "Zoro's blade, One Piece.", tags: ["sword rack"] }, { title: "Sandai Kitetsu", craft: "3D printing", blurb: "Zoro's blade, One Piece.", tags: ["sword rack"] }, { title: "Shusui", craft: "3D printing", blurb: "Zoro's blade, One Piece.", tags: ["sword rack"] }, { title: "Tensa Zangetsu", craft: "3D printing", blurb: "Ichigo's blade, Bleach.", tags: ["sword rack"] }, { title: "Tanjiro's Nichirin blade", craft: "3D printing", blurb: "Tanjiro's final blade, Demon Slayer.", tags: ["sword rack"] }, ]; // ---------------------------------------------------------------- Tabletop /** Blurbs from legacy/src/pages/interests/ttrpgs.astro; states from the interview. */ export const systems = [ { title: "Dungeons & Dragons", state: "running", blurb: "Lately 5th Edition. Long-running campaigns on and off Foundry VTT. Focus on rich worldbuilding, meaningful NPC relationships, and player-driven narrative." }, { title: "Daggerheart", state: "running", blurb: "Darrington Press's dice-building RPG. Currently running a campaign and exploring how its mechanics create different story rhythms than D&D." }, { title: "Cypher System", state: "played", blurb: "Monte Cook's narrative-focused system. Played a few one-shots and short form campaigns." }, { title: "Draw Steel", state: "want to run", blurb: "MCDM's fantasy tactical cinematic combat game. Interested in running it when I get a chance." }, { title: "Blades in the Dark", state: "want to play", blurb: "A gritty, cinematic system for heists and criminal enterprises. Interested in playing short campaigns in it one day." }, { title: "Avatar Legends", state: "want to try", blurb: "A narrative-focused system set in the world of Avatar. Interested in exploring bending mechanics and character-driven stories." }, ] as const; /** * The campaigns are real, but their names and schedules are not known yet, * so the D&D and Daggerheart ones stay unpublished until Greg fills them in. */ export const campaigns = [ { title: "D&D campaign", system: "Dungeons & Dragons", status: "active", platform: "Foundry VTT", publish: false, body: "Name, schedule and a one-line status to fill in before publishing." }, { title: "Daggerheart campaign", system: "Daggerheart", status: "active", platform: "Foundry VTT", publish: false, body: "Name, schedule and a one-line status to fill in before publishing." }, { title: "MCDM Crows playtest", status: "playtest", publish: true }, ] as const; /** Blurbs from legacy/src/pages/interests/tcgs.astro; stances and Flesh and Blood from the interview. */ export const cardGames = [ { title: "Magic: The Gathering", stance: "Main event", blurb: "Mostly Commander (EDH), with a deckbuilding obsession that Archidekt enables far too well." }, { title: "Pokémon TCG", stance: "Collecting", blurb: "Collector energy and casual play. Beautiful art pulls, deck drafts, and a soft spot for Steel/Psychic. Mostly on Pocket TCG." }, { title: "Flesh and Blood", stance: "Getting into" }, { title: "Riftbound", stance: "Exploring", blurb: "Riot's League of Legends TCG. A new game with a lot of potential. Interested in exploring deckbuilding and the evolving meta." }, { title: "Gundam Card Game", stance: "Watching", blurb: "Bandai's Gundam TCG. A new game with a lot of potential. Interested in how some of the figures will come into play with the other table top pieces for this entry." }, ] as const; /** The deck behind the legacy proxy photo. Its Archidekt id gets filled in by the sync. */ export const decks = [{ title: "Kynaios and Tiro", game: "Magic: The Gathering", format: "Commander", favorite: true }]; /** "Spirit Island and Wyrmspan have been my favorites lately" (ttrpgs.astro). */ export const favoriteBoardGames = ["Spirit Island", "Wyrmspan"]; // ---------------------------------------------------------------- Resume /** * legacy/src/components/professional/SkillGrid.astro, with the stack Greg added * in the Resume Interview (2026-10-11). Core items are the ones he named for * Implico's main stack. */ export const skills = { core: [ "Software Architecture & System Design", "Cloud & Mobile Application Development", "SAP Business Technology Platform (BTP)", "Team Leadership & Technical Mentorship", "Cross-functional Communication", ], learning: [ "SAP BTP deep-dive (active expansion)", "Cutting edge AI-powered development tooling", "Advanced automation and workflow engineering", ], stack: [ { label: "Languages", items: ["JavaScript", "TypeScript", "Python", "Java", "C#", "C", "SQL", "Bash", "Awk", "HTML", "CSS"], core: ["JavaScript", "Python"], }, { label: "Frameworks", items: ["React", "React Native", "Node.js", "SAP CAP", "Vue", "Astro", "Flask"], core: ["React", "React Native", "SAP CAP"] }, { label: "Cloud Platforms", items: ["SAP BTP (Cloud Foundry)", "SAP Integration Suite", "SAP Build Apps", "SAP Build Work Zone", "Google Cloud Platform", "AWS"], core: ["SAP BTP (Cloud Foundry)", "SAP Integration Suite"], }, { label: "Mobile", items: ["iOS", "Android", "Xcode", "Android Studio"] }, { label: "Data", items: ["PostgreSQL", "NumPy", "Pandas"] }, { label: "Tools", items: ["Docker", "Git", "Gitea", "CI/CD pipelines", "VS Code", "Unity"] }, { label: "AI/ML", items: ["Machine learning frameworks", "LLM integration", "Claude Code", "Hermes", "OpenClaw"] }, ], }; /** * Greg's Resume Interview answers (2026-10-11), written up as the experience * notes. Keyed by the legacy file in src/content/experience; these fields * replace the legacy ones. Numbers are his, as he gave them. */ export const experience: Record> = { implico: { role: "Team Lead, BTP Cloud & Mobile Apps and North America Managed Services", previousRoles: ["BTP Cloud and Mobile App Lead", "Lead Developer", "Software Developer"], location: "Remote", focus: "Leading the team behind Carrier Connect, an SAP logistics platform for third-party carriers.", bullets: [ "Architected Carrier Connect, an SDM for SAP platform that connects third-party carriers to a central purchase order system; it handles 2,000+ orders a day for 500+ active users at 50+ companies with 99.999% uptime.", "Save about 72 hours per delivery by tracking loading and delivery events and streamlining documents in one system.", "Built the core delivery interface, the file transfer interfaces and the inventory polling and delivery system, and designed the REST API, Excel and CSV, and Driver App integration paths that feed it.", "Since June 2026, manage, lead and develop Implico's managed services practice in North America.", "Lead a 4-person development team and 6 extended US Managed Services members, owning career paths, yearly reviews and resource planning.", "Run the customer side: sales demos, presentations, requirement gathering, training and ongoing communication. Also handle network engineering and administration.", "Established the team's engineering standards on Google's published best practices: code review, pull requests, testing and code coverage.", "Introduced React and AI-assisted development, and was lead author of the team's responsible AI guidelines covering accuracy, transparency, human oversight, data security and accountability.", ], tech: ["React Native", "React", "Python", "SAP CAP", "SAP BTP (Cloud Foundry)", "SAP Build Work Zone", "SAP Build Apps", "SAP Integration Suite", "iOS", "Android"], }, drexel: { role: "Assistant System Administrator", end: "2018-06", earlier: true, focus: "Ran the college's 4 Linux servers and automated 3 labs and the laptop carts with Ansible, then the lab help desk to 2018.", bullets: [ "Ran the Linux server network for the whole College of Computing and Informatics (4 servers) with Ansible, Bash, Python and MySQL.", "Automated deployment and maintenance of every workstation in the 3 computer labs and the mobile laptop carts with Ansible.", "Protected college-wide data with Ceph storage backups.", "Stayed on at the Computer Lab help desk through June 2018, supporting faculty, staff and students.", ], }, comcast_1: { role: "Senior Intern and Junior Developer (co-op)", earlier: true, focus: "Ran a team of 10 co-ops on smart remote, call center and inventory tools; built an NLP customer sentiment pipeline for leadership.", bullets: [ "Hired back after the co-op as Senior Intern to run a team of 10 co-ops building smart remote, call center and inventory tools.", "Built an NLP system that turned remote speech input and reviews into customer sentiment for leadership teams (Java, Groovy, Grails, Elasticsearch, MySQL).", "Built call center and inventory features on the internal logistics platform for techs and warehouse teams (PHP, MySQL).", "Worked in weeklong Agile sprints.", ], }, }; /** The /resume page's own text, from the Resume Interview (2026-10-11). */ export const resumePage = { title: "Resume", page: "/resume", publish: true, lede: "Team Lead, SAP BTP Cloud & Mobile Apps", stats: [ { value: "99.999%", label: "Uptime", detail: "Carrier Connect" }, { value: "2,000+", label: "Orders a day", detail: "Through Carrier Connect" }, { value: "500+", label: "Active users", detail: "Across 50+ companies" }, { value: "10", label: "People led", detail: "Development and Managed Services" }, ], projects: [ { title: "Cosmos homelab", detail: "20+ Docker containers and 17 AI agents on a private network." }, { title: "GregKilmer.com", detail: "This site, fed from an Obsidian vault by a rule-checked content service and MCP server." }, ], body: `Software architect and team lead who takes SAP BTP cloud and mobile systems from the first customer demo through architecture, delivery and support. Broad background across cloud, app and game development. Uses AI tools to work faster, with the fundamentals to work without them and the guidelines to use them responsibly.`, }; /** legacy/src/components/professional/EducationHistory.astro and Certifications.astro */ export const education = { degrees: [ { credential: "B.S., Computer Science", institution: "Drexel University", period: "2014 – 2018", detail: "Foundational coursework in software engineering, algorithms, and systems. Focuses in AI and human-computer interaction.", }, ], // Resume Interview: Neptune Software Planet 9, earned 2019. certifications: [{ name: "Planet 9 Development", issuer: "Neptune Software", year: "2019", status: "Active" as const }], }; /** Employer and facts for the legacy projects; facts from the Implico and Cosmos entries. */ export const caseStudies: Record = { // Resume Interview (2026-10-11): Greg's corrected numbers. "carrier-connect": { employer: "Implico Inc.", facts: [ { label: "Active users", value: "500+" }, { label: "Companies", value: "50+" }, { label: "Orders a day", value: "2,000+" }, { label: "Uptime", value: "99.999%" }, ], }, "driver-app": { employer: "Implico Inc." }, "cosmos-homelab": { facts: [{ label: "Docker containers", value: "20+" }, { label: "AI agents", value: "17" }] }, "placeholder-project": {}, }; // ---------------------------------------------------------------- Store /** Lines Greg named on 2026-10-11 that are not made yet; kept unpublished. */ export const futureLines = [ { title: "Book-bound journals", category: "Paper" }, { title: "Field notes journals", category: "Paper" }, { title: "Leather bracelets", category: "Leather" }, { title: "Journal folios", category: "Leather" }, { title: "Card holders", category: "Leather" }, ] as const;