pimped the site a little but and fixed impress

This commit is contained in:
Andreas Dahm committed 2026-08-26 10:48:39 +02:00
1 parent f543a5e2f3
commit 888fb6289d
14 files changed
+1502 -1162

No files matched your search

+58 -15
View File
@@ -2,7 +2,8 @@
"APP": {
"TITLE": "Playground",
"COPYRIGHT": "Images and code protected by copyright, no use without permission!",
"AI_NOTICE": "This page is created with the help of AI."
"AI_NOTICE": "Built with an AI-assisted engineering workflow.",
"AI_NOTICE_LINK": "How I build with AI"
},
"TOPBAR": {
"ABOUT": "About me",
@@ -14,25 +15,37 @@
"LANGUAGE": "Language",
"APPEARANCE": "Appearance"
},
"THEME": { "LIGHT": "Light", "DARK": "Dark" },
"LANG": { "LABEL": "Language", "EN": "English", "DE": "Deutsch" },
"THEME": {
"LIGHT": "Light",
"DARK": "Dark"
},
"LANG": {
"LABEL": "Language",
"EN": "English",
"DE": "Deutsch"
},
"ABOUT": {
"ALT": { "PROFILE": "Profile photo of Andreas Dahm" },
"ALT": {
"PROFILE": "Profile photo of Andreas Dahm"
},
"HELLO": "Hello, I’m Andreas.",
"LEAD": "I first discovered my interest in software development during my training as an application developer. After completing my degree in Applied Computer Science at FH Bingen, I have been working continuously as a software developer since 2010. During this time, I have gained experience in various areas, including 3D simulation and modern web applications. I also enjoy working on personal software projects, particularly in game development and algorithmic topics. Thank you for stopping by!",
"LEAD": "Senior software developer and architect, 15+ years in the field. My work sits across two areas that rarely meet: real-time 3D simulation — cloth physics, collision detection, GPU shaders — and distributed cloud architecture for enterprise platforms. Along the way I have led a development team, planned the migration of a large legacy monolith to microservices, and shipped a game on Steam. More recently I have been working on the engineering side of AI-assisted development: the harnesses, guardrails and quality gates that make generated code reviewable. Outside work I build games and dig into algorithmic problems — most of which end up somewhere on this site.",
"ROLE": "Senior Software Developer / Full-Stack Developer / Software Architect",
"LOCATION": "Munich · Remote",
"DOWNLOAD_CV": "Download CV",
"VIEW_PROJECTS": "View projects",
"CONTACT_ME": "Contact me",
"SECTION": {
"SKILLS": "Skills & Stack",
"BACKEND_ARCH": "Backend & Architecture",
"INFRA_CLOUD": "Infrastructure & Cloud",
"LANGUAGES": "Languages & Frameworks",
"ARCH_CLOUD": "Architecture & Cloud",
"SIM_ALGO": "Simulation & Algorithms",
"AI_ENG": "AI-Assisted Engineering",
"EXPERIENCE": "Experience",
"PROJECTS": "Projects",
"EDUCATION": "Education"
"EDUCATION": "Education",
"SHOW_EARLIER_XP": "Show earlier positions",
"SHOW_EARLIER_EDU": "Show earlier education",
"SHOW_LESS": "Show less"
},
"SKILLS": {
"JAVA": "Java",
@@ -51,7 +64,12 @@
"ENG_SIM": "3D Simulation",
"ENG_GPU": "WebGPU / OpenGL / GLSL",
"ENG_PERF": "Performance Optimization",
"ENG_3D": "3D-Scanner Tech"
"ENG_3D": "3D-Scanner Tech",
"AI_AGENTS": "Claude Code / Agent SDK",
"AI_MCP": "MCP servers",
"AI_CONTEXT": "Context & prompt engineering",
"AI_HARNESS": "Agent harness design",
"AI_GATES": "Automated review gates"
},
"TOOLS": {
"GIT": "Git",
@@ -147,7 +165,7 @@
},
"COMPANY1": {
"COMPANY": "TH Bingen (University of Applied Sciences)",
"ROLE": "Research Asssitent",
"ROLE": "Research Assistant",
"TIME": "Oct. 2007 – Apr. 2008",
"HIGHLIGHTS": {
"P1": "Evaluation of various Web 2.0 technologies.",
@@ -161,12 +179,22 @@
"TIME": "Jul. 2002 – Jun. 2005",
"HIGHLIGHTS": {
"P1": "Development in PERL, PHP and ASP.",
"P2": "Portierung, Wartung und Reengineering von bestender Software.",
"P2": "Porting, maintenance and reengineering of existing software.",
"P3": "Regular performance of system tests and quality controls, as well as their documentation."
}
}
},
"PROJECT": {
"CLAUDE_BOX": {
"TITLE": "Claude-in-a-Box",
"DESCRIPTION": "A containerised development environment that turns an AI coding agent into a reviewable part of the toolchain. Instead of prompting ad hoc, the box routes the agent through per-stack rules, per-repository architecture profiles and commit hooks that refuse to let a red build through.",
"LINK_INTERNAL": "Project details",
"HIGHLIGHTS": {
"P1": "Deterministic context routing: the agent loads the rules for the stack it actually detects in the repository.",
"P2": "Commit gates that block on a failing build or test run, so generated code cannot bypass the quality bar.",
"P3": "MCP integrations for code intelligence and read-only ticket access, plus subagents that review the diff."
}
},
"P2": {
"TITLE": "Playground",
"DESCRIPTION": "This project is, as the name suggests, a personal playground that will grow over time. It showcases various private projects I’m working on and documents their progress, key ideas, and milestones.",
@@ -333,10 +361,24 @@
"CHALLENGE_2": "Mathematical stabilization of integration methods under high force impacts.",
"LEARNING_1": "Transferring theoretical research into productive, high-performance code.",
"LEARNING_2": "Precise working and documentation according to scientific standards."
},
"CLAUDE_BOX": {
"TITLE": "Claude-in-a-Box",
"SHORT_DESCRIPTION": "A containerised, rule-driven environment for working with an AI coding agent.",
"INTRODUCTION": "Working with an AI coding agent is easy to start and hard to keep honest. The output looks plausible, so the expensive failures are the ones that pass review. Claude-in-a-Box is my answer to that: a Docker-based development environment where the agent operates under the same constraints a new colleague would — the architecture rules of the repository it is in, and a build that has to stay green before anything can be committed. The interesting engineering is not in the prompts; it is in the harness around them.",
"BULLET_1": "Containerised workspace with pinned toolchains — SDKMAN-managed JDKs and Maven, Node, and a persistent home volume that survives a container rebuild.",
"BULLET_2": "Context routing by detection: a repository with a pom.xml loads the Java/Spring rules, one with a package.json loads the TypeScript rules, and a repository with its own architecture profile loads that too.",
"BULLET_3": "A commit hook that detects the stack itself, runs the matching build and test gate, and blocks the commit when it fails.",
"BULLET_4": "MCP servers for code-graph queries and read-only ticket lookup, plus purpose-built review subagents that grill a finished diff before it is reported as done.",
"CHALLENGE_1": "Keeping the rule set small enough to stay in context but specific enough to be binding — general advice gets ignored, so the rules had to be split into stack skills and repository profiles that load only when relevant.",
"CHALLENGE_2": "Making the quality gate impossible to talk around. The check runs as a hook outside the agent, so a failing build blocks the commit regardless of what the agent believes about its own work.",
"CHALLENGE_3": "Toolchain isolation in a container that has no root: builds, browsers and language runtimes all had to be installed into volumes owned by the development user.",
"LEARNING_1": "The quality of AI-assisted work is mostly a function of the harness, not the prompt. Deterministic gates beat careful wording every time.",
"LEARNING_2": "Treating the agent as an untrusted contributor — reviewed, gated, and given only the context it needs — turns out to be the same discipline that makes human code review work."
}
},
"IMPRINT": {
"TITLE" : "Imprint",
"TITLE": "Imprint",
"PARAGRAPH": "Information pursuant to Section 5 DDG",
"COUNTRY": "Germany",
"CONTACT": "Contact"
@@ -578,7 +620,8 @@
"CONFLICTS": "Warning: Adjacent regions have the same color!",
"INVALID": "Map is fully colored, but contains conflicts."
},
"EXPLANATION": { "TITLE": "Four Color Theorem",
"EXPLANATION": {
"TITLE": "Four Color Theorem",
"EXPLANATION": "The four color theorem states that any map in a plane can be colored using at most four colors in such a way that regions sharing a common boundary (other than a single point) do not share the same color.",
"DISCLAIMER": "This algorithm uses backtracking to find a valid coloring for the generated regions.",
"DISCLAIMER_1": "Map Generation: Regions are generated using a random seed growth algorithm (Voronoi-like) on a grid.",
@@ -617,7 +660,7 @@
},
"ABOUT": {
"TITLE": "About me – Andreas Dahm",
"DESCRIPTION": "Andreas Dahm, senior software developer and architect from Munich: experience, skills and projects in full-stack development, 3D simulation and algorithms."
"DESCRIPTION": "Andreas Dahm, senior software developer and architect from Munich: experience, skills and projects in full-stack development, 3D simulation, algorithms and AI-assisted engineering."
},
"PROJECTS": {
"TITLE": "Projects – Andreas Dahm",