Portfolio Tour

Code, science, and hardware — a showcase of my work.

01 / 24

Overview · All stories

Where would you like to start?

My portfolio is organized into different themes. Pick a story below, or step through all of them with the arrows.

Computational Chemistry · Introduction

Computational chemistry

Computational chemistry uses computer simulations to model and understand chemical systems. It brings together physics, chemistry, and computer science to study molecular structures, reactions, and properties. My work focuses on quantum chemistry, a branch of computational chemistry that applies quantum mechanics to understand how electrons behave in molecules.

Computational Chemistry · Why

Learning by doing

Computational chemistry is a daunting topic. The algorithms are complex, the math is dense, and the software is often a black box. Easy and accessible code allow students to study the subject in a hands-on way, building intuition and understanding by running and modifying code.

Computational Chemistry · What

Complete workflows, modular pieces

To make complex algorithms tractable and accessible to students, I developed Hartree-Fock and Density Functional Theory programs for simple gas-phase molecules. The implementations are available in both Python and C++: the Python versions provide approachable entry points for learning, while the C++ versions serve as companion implementations that illustrate how to build more performant programs.

Computational Chemistry · Where next?

Packages for learning and exploration

Students can explore Hartree–Fock through PyQInt, a Python package with a complete yet modular implementation of the algorithm. Its components can be recombined to create custom workflows and experiments, making it useful for both guided learning and independent exploration. For Density Functional Theory, the same role is fulfilled by PyDFT. C++ variants, HFCXX and DFTCXX, are also available as companion implementations for exploring more performant versions of the same algorithms.

Scientific Visualization · Opening

Seeing the shape of scientific data

Computers act on dense numeric data, which while making the computation highly efficient, is not a great format for human understanding. This theme gathers projects that make scientific data visible and tangible, revealing the structure of molecules, density fields, and surfaces.

Scientific Visualization · Why

Utility first, beauty as a side effect

The aim is not decoration. A visible molecule, density field, or surface helps students and researchers inspect, compare, debug, and explain what is going on. Clear structure can be beautiful, but understanding comes first.

Scientific Visualization · What

Tools that refine chemical data and build structures

The projects in this theme fall into three categories: visualizing output, characterizing results, and creating molecular systems for exploration. Electronic structure data often takes the form of dense scalar fields, which can be interpreted through isosurfaces or contour plots. Optimized molecular structures provide atomic coordinates that contain important clues about chemical reactivity, but these require further characterization through metadata analysis. Finally, molecular systems can be built from scratch using tools that allow users to place atoms, inspect the resulting structure, and export it for use in other programs.

Scientific Visualization · Where next?

From raw data to structures you can see and build

Atom Architect and Managlyph handle the visual end: constructing crystal structures for VASP and rendering molecular orbitals in 3D. EDP, Den2Obj, and PyTessel sit upstream, turning electron density and scalar fields into projected images, isosurface meshes, and publication-ready geometry.

Retro Computing · Opening

The dawn of the personal computer

Personal computers are everywhere today, but in the early 1980s they represented a new and exciting frontier. Few people had one at home, and for those who grew up around that time, the arrival of a first computer was often a memorable and formative experience.

Retro Computing · Why

Readable foundations of modern systems

Modern computers are complex, but their roots are still visible in vintage machines and those vintage machines are relatively easy to understand. By keeping those machines alive, we not only preserve a bit of history, but also obtain a deeper understanding of what made those machines tick.

Retro Computing · What

Bridging old machines and new tools

Interfacing with vintage computers is becoming increasingly challenging as their original storage media continue to deteriorate. While motherboards and processors often remain surprisingly robust, magnetic tapes and floppy disks gradually lose their integrity. Modern storage solutions, such as SD cards, offer a practical way to keep these systems operational—but only if we can bridge the gap between legacy hardware and contemporary storage interfaces.

Retro Computing · Where next?

Restoration, extension, and documentation for vintage machines

In this theme, I present a large collection of projects that keep vintage machines alive and accessible. These include storage solutions, hardware extensions, and documentation for a variety of 1980s-era computers. By sharing these projects, I hope to provide resources for others who want to explore and preserve the history of personal computing. I have a particular focus on the Philips P2000T and P2000C, but also the C64, Gameboy, IBM 5150 and IBM clones like the Olivetti M24, and more.

Open Education · Opening

Learning material with a clear path in

Open education breaks down barriers to learning by making knowledge freely accessible, adaptable, and shareable for all. It empowers learners and educators everywhere to collaborate, innovate, and shape a more equitable future.

Open Education · Why

Access. Equity. Freedom.

Open education matters because publicly funded knowledge should serve the public, not sit behind paywalls or inflate publisher profits. It gives every learner the freedom to study at their own pace, access high-quality materials, and participate more equally in education.

Open Education · What

Materials. Courses. Tools.

Open education includes freely accessible materials such as textbooks, videos, assignments, and complete online courses that learners can use at their own pace.

Homebrew Hardware · Opening

Small computers from the chips up

Homebrew hardware is the practice of building real computing systems from the parts up: PCBs, processors, memory, buses, firmware, and the tools needed to make them useful.

Homebrew Hardware · Why

Build it to understand it

Designing a computer from scratch makes modern machines easier to understand. Address lines, timing, memory maps, voltage levels, and storage formats stop being abstractions and become things you can trace, test, and reason about.

Homebrew Hardware · What

Boards, buses, and useful tools

A homebrew hardware path can lead to single-board computers, ROM programmers, cartridge readers, video generators, keyboards, interface cards, and the small utilities that connect old chips to modern workflows.

Homebrew Hardware · Where Next

Classic CPUs and TTL foundations

In my case, the focus narrows to Z80-, 6502-, and 8086-based machines, alongside TTL-based homebrew processors built from logic chips. These compact systems expose the processor, memory, firmware, storage, and I/O clearly enough to study, modify, and understand as a complete computer.

Languages and Tools · Opening

Programming languages as projects

This theme is about building programming tools from the inside out: small languages, interpreters, assemblers, emulators, instruction sets, and the utilities that make code understandable and runnable.

Languages and Tools · Why

Languages reveal the machine

Designing a language forces the hidden parts of programming into the open. Syntax, parsing, evaluation, types, control flow, memory, and machine instructions become design choices you can inspect and change.

Languages and Tools · What

Parsers, runtimes, and small machines

A project can start as a lexer and parser, grow into an interpreter or compiler, target a virtual machine or real CPU, and end with assemblers, emulators, bytecode formats, and command-line tools.

Languages and Tools · Where Next

Custom languages in focus

In my case, the focus is mainly on custom programming languages: small, readable systems for exploring how source code becomes behavior, and how language design connects to interpreters, assemblers, virtual machines, and hardware.

Jump to story