Building software for exploring, representing and understanding complex bodies of knowledge
I'm a software engineer with a background in scholarly infrastructure and many years of building production software. I’m interested in what happens when software engineering is applied to domains where the hard part isn't just computation, but representing and making sense of complex bodies of knowledge. My work currently spans bibliographic data, knowledge graphs, music and scientific visualization.
Selected works
Walking the Academic Graph

Academic Graph Explorer turns IdRef, the French authority file for higher education and research, into an interactive graph that can be explored rather than simply queried record by record. The project started with a broader experiment federating IdRef, HAL, Persée and SUDOC, later narrowed to IdRef and focused on understanding the structure already present in the source data.
The explorer performs live, bounded graph traversals over IdRef's SPARQL endpoint, preserving the semantics of its bibliographic relationships rather than flattening them into generic links. This makes it possible to follow paths through people, organizations and publications, with publications acting as important connective structures between researchers and their work.
The project combines Linked Data, SPARQL, graph traversal, domain modeling and interactive visualization. More than a visualization exercise, it explores a broader question: what becomes visible when a scholarly authority file is treated as a structure to walk through, rather than a collection of records to look up?
Making MARC Legible

MARC stands for MAchine Readable Cataloguing. But what about humans? The structure of bibliographic records almost universally follows the MARC standard, yet a raw MARC file is basically gibberish for a standard human being.
JsMarc is an exploration of what it takes to make MARC, the decades-old machine-readable format underlying much of the world's library infrastructure, understandable to modern software and to humans. The project combines a TypeScript parser for ISO 2709/MARC records with structured definitions for MARC21 and UNIMARC, turning opaque byte sequences into data that can be inspected, queried and explained.
Parsing is only the first step. MARC's underlying structure is shared across dialects, but the meaning of its fields depends on the vocabulary and conventions of the format being used. Building JsMarc therefore became an exercise in separating structure from meaning, representing cataloguing definitions as data, and dealing with real-world library records rather than simplified fixtures. A companion Z39.50 gateway connects the parser to live records from catalogs such as the Library of Congress and SUDOC.
Other projects
Browsing Wikipedia as a graph

I built Wiki-Tree to explore Wikipedia as a navigable 3D graph rather than a collection of individual pages. Starting from any article, it progressively expands categories, outgoing links, and backlinks, letting you follow relationships and shape the graph as you explore.
I experimented with several approaches to graph representation and rendering over the years, from an early GraphViz prototype to the current browser-based React+WebGL implementation. The core idea stayed the same throughout: use the graph itself as an interface for exploring how Wikipedia's articles relate to one another.
Bibliography as formatting

A personal bibliography maintained in LibreOffice had grown into a huge, unwieldy document whose structure existed almost entirely in its formatting. This project reconstructs that implicit data model, turning the document into structured records and enriching them with data from different sources.
The main challenge was dealing with all the inconsistencies between catalogues: fuzzy matching, entity resolution, identifiers and conflicting metadata. The result is a small dataset of 866 books and 1,014 authors, backed by a lightweight browser-based explorer and a CLI for adding and enriching new books.
Film discovery interface

A movie discovery application built around the IMDb catalog, combining a React interface with a Node.js backend and a Wikidata-powered enrichment layer.
The interesting part is what happens beyond the catalog itself: instead of hard-coding links to external sources, the application uses Wikidata and SPARQL to resolve movies and people to structured entities, then discovers their corresponding Wikipedia, Rotten Tomatoes and Metacritic pages.
The project is archived now, but remains a useful snapshot of an earlier exploration of web data, structured knowledge and third-party APIs.
Making LLM conversational structure visible

A small experiment in making an otherwise invisible information structure visible and navigable: Most LLM chat apps present a conversation as a linear thread, even though the underlying data is a branching structure of edited prompts and regenerated responses.
This project exposes that hidden structure as an interactive graph, allowing branches to be searched, inspected and revisited, with two-way navigation between the graph and the conversation.
Experiments & hacks
Procedural generation: an experiment with Markov chains
An experiment in procedural generation using first-order Markov chains, applied to both text and images. The project explores how much structure can be reproduced from local relationships alone: plausible word sequences emerge in text, while images retain colour statistics but lose their larger structure. The same simple mechanism reveals the limits of one-step memory across two very different domains.

Pure Data, one patch at a time
2014-2016: A self-directed exploration of Pure Data, documented through a small but evolving code archive. Starting with basic synthesis, the experiments gradually expanded into sequencing, signal analysis, visualization, MIDI, networking and live performance. Along the way, the archive produced more significant projects such as batch musical-key detection and the sonification of ambient WiFi traffic.

BACON Helper
A JavaScript utility for resolving ISBNs and ISSNs to online resources through BACON, the national knowledge base maintained by ABES. The tool queries BACON's web services, retrieves the corresponding KBART data, and extracts resource URLs (prioritizing Open Access resources when several sources are available). A deliberately small piece of tooling, built around a useful boundary between bibliographic identifiers, knowledge-base data and actual resources on the web.

Offline-first art recognition
Exploring WASM, OpenCV and Web Workers: I wanted to see how far art recognition could be pushed entirely into the browser. The constraint was deliberately strict: no server, no API, no network round-trips. A phone in a gallery should be able to take a photograph, compare it against a reference collection, and return a result using only what is already on the device. That constraint ended up shaping almost every part of the experiment.

Software engineering archive
I have spent several years working as a fullstack software engineer. I've worked with product companies in Europe, the US, Australia and New Zealand, building production SaaS products and data-driven systems. Learn more:
Interested in working together, discussing a project, or just exchanging about research-oriented software?
Send me an email