Roman Hoffmann
Building systems, exploring ideas, and sharing what I learn
Software Developer · Photographer · Rhodes, Greece
I build web applications, manage Linux infrastructure, and explore agentic coding workflows. I write about developer tooling, AI agents, and the systems I run day-to-day.
Originally from Hamburg, Germany, I now live and work on the island of Rhodes in Greece. With a long background in design and years spent working across web, infrastructure, and client systems, I approach development with a strong bias toward simplicity: fewer dependencies, minimal interfaces, and systems that stay understandable over time. Outside of tech I shoot real-estate and landscape photography on Rhodes with a Fujifilm X-S20.
Today I experiment with AI-assisted development using Claude Code and Codex CLI. Much of what I learn along the way ends up documented here on this site.
If you're curious how I got here, from clicking through Windows 3.1 as a kid to building software with AI agents, keep reading.
How I ended up building software
My path into tech wasn't a straight line. It started with curiosity, turned into a design career, and eventually led back to building software.
Early curiosity
When I was around three years old my father had a PC for his university work. The machine lived in my bedroom, which meant computers were part of my environment from the beginning. By the time I was four or five I would sit in front of it and explore on my own. This was the Windows 3.1 era. What fascinated me most wasn't any specific program. It was the feeling that the computer was a system you could explore.
A few years later came the internet. Around 1997 I created my first FTP connection to a university server my uncle had access to. Suddenly I could connect to another computer somewhere else and move files between systems. Around the same time a friend showed me overclocking: moving a jumper pin on a motherboard to push the CPU beyond its default speed. Both moments revealed the same thing. These systems weren't fixed. You could understand them, modify them, and push them further.
Discovering web design
In fifth grade I joined a computer club at school where we built simple HTML pages. Seeing something I had built appear in a web browser felt magical. That curiosity never really disappeared.
During my teenage years I got into competitive gaming and online communities. Like many clans at the time, we needed websites. Those sites were designed entirely in Photoshop, sliced into graphics, and rebuilt in HTML and CSS. That workflow led to registering domains, uploading files via FTP, and figuring out how hosting actually worked.
Without realizing it, I was already combining design, code, and infrastructure.
Working in a web agency
While still in school I started working part-time at a small internet agency. Most of my friends had typical student jobs. I was building TYPO3 websites, creating product photos for online shops, and contributing to early web projects.
Because I had already spent years designing layouts in Photoshop and rebuilding them with HTML and CSS, working on CMS frontends came naturally. It was the first time I worked on real production systems rather than hobby projects.
Learning the fundamentals
After finishing secondary school I completed a two-year technical training as an IT assistant. The program was broad: networking, databases, programming, circuit design, soldering, Arduino projects, and understanding how hardware and software connect at a low level. The kind of training where you learn what an RJ45 connector actually does before you plug one in.
Most of what we covered I had already touched through practical work, but the formal training connected the underlying concepts and filled in the gaps between intuition and understanding.
Going independent
Later I transitioned into freelance work. In the agency there had always been specialized developers and admins handling infrastructure. As a freelancer, those responsibilities shifted to me. If a client needed hosting, server setup, or domain management, it was my task to figure it out.
At the same time my work expanded beyond web development. I began creating complete corporate identities for clients, including print design and branding. Freelancing meant handling entire projects from start to finish: design, infrastructure, deployment, and maintenance.
Running real infrastructure
That responsibility pushed me deeper into Linux and server administration. I began running servers not only for my own projects but also for clients, configuring web servers, managing DNS, and maintaining hosting environments.
Operating real infrastructure changes how you think about software. Systems need to stay understandable, maintainable, and stable over long periods of time.
Coming back to code
For many years my work revolved around design, infrastructure, and running systems. I had always worked around development, but I was never the type of programmer who spent years building complex software from scratch.
That changed when AI coding tools began to emerge. With Claude Code and Codex CLI I could describe what I wanted to build and iterate on it in conversation. A static site, a canvas app, a server config. The gap between having an idea and seeing it run shrank from weeks to hours. For me it felt like reconnecting with something I had always enjoyed: building systems and experimenting with software.
Why this blog exists
After many years working across different areas of technology, I realized I wanted a place to document what I was learning. Ideas, experiments, workflows, tools, and small systems accumulate over time. Writing about them helps clarify thinking and share useful insights with others.
That idea became codn.dev. The site follows the same philosophy I try to apply to software: keep things simple. It is built with Astro, generates static pages, and serves content directly through Nginx. No unnecessary frameworks, no heavy runtime. Just content and ideas.
If anything here resonates with you, stick around. There's more to come.
Projects
This blog. A zero-JS Astro static site on a self-managed Linux server.
Infinite whiteboard canvas. Local-first, private by default. Built with React, TypeScript, and Fabric.js.
Now
What I'm currently focused on, updated regularly.