Developing the HRE Censorship Suite
The Digital Humanities Hackathon 2026 (DHH26) took place over 10 days. Below is a retrospective tracking the engineering, design, and analysis milestones of my work on Catholic censorship and social bipartite networks.
Day 1 — Alignment & Terminology
May 20, 2026
Team formation and project scoping. Visualizing book surveillance across overlapping early modern boundaries required reconciling historical database structures (VD16, VD17, VD18) with graph-theoretical network terms. I negotiated our target metrics to ensure historical questions drove our schema layout.
Day 2 — DB Auditing & Research Proposals
May 21, 2026
Wrote Python scripts to audit raw tables and extract base statistics (such as Leipzig vs. Frankfurt output volumes). Drafted the core research agenda mapping Catholic printing trends, identifying significant missing location strings and conflicting bibliographical fields early on.
Day 3 — Normalization & String Heuristics
May 22, 2026
Developed text-cleaning pipelines to resolve names and variations in publisher attributes globally. Standardizing naming irregularities in early modern print histories is impossible to perform manually; creating programmatic heuristic filters in Python was the only scalable path.
Day 4 — Pipeline Optimization
May 23, 2026
Refactored Python attribute extractions. Optimizing heavy dataframe joining operations in Pandas minimized dataset size, letting us export highly compressed JSON network representations for our 20 main printing cities.
Day 5 — Visualizing Narrative Hypotheses
May 24, 2026
Paused development to map the design strategy. Analyzed confessional output distributions and trade ratios to outline our visual design. Pausing to align layouts with historical theories prevented visualization bloat and prioritized clarity.
Day 6 — WebGL Bipartite Networks
May 25, 2026
Implemented the WebGL/2D D3.js bipartite force graph layout to display censor-publisher associations. Constraining force simulations to WebGL rendering bounds kept the UI responsive, allowing fluid node dragging and selection on cellular devices.
Day 7 — Integrating 3D Model Cabinets
May 26, 2026
Set up Google's `` component to render 3D historical objects in the sidebar. Configuring lighting and shadows for `.glb` models (religious seals, printing tools) provided an immersive aesthetic that transformed a simple chart page into a digital museum.
Day 8 — UI Transitions & Git Convergence
May 27, 2026
Programmed Chart.js activity trackers. Handled complex git merging tasks as team layouts and codes converged, synchronizing loading timelines to hide layout flashes during asset initialization.
Day 9 — Mobile Viewports & Asset Minimization
May 28, 2026
Optimizing mobile load speeds: stripped out ~11.6MB of heavy sidebar images and custom markers, replacing them with solid, CSS-styled markers. Built a responsive filter drawer that slides up from the bottom of mobile screens to prevent visual clutter.
Day 10 — Showcasing & Viewport Recalculations
May 29, 2026
Patched a Leaflet mapping redraw bug triggered during mobile container resizing. Presented our completed interactive portal live at the DHH26 closing exhibition, allowing scholars to scan our poster's QR code and interact with the dataset instantly on their phones.
Historical Data Engineering Pipeline
The quantitative analysis of censorship requires translating library catalog archives into relational databases. Our data workflow separated heavy back-end cleaning from lightweight, interactive browser rendering.
1. SQL Extraction & Normalization
Extracted print metadata from raw VD16 (16th Century), VD17 (17th Century), and VD18 (18th Century) archives. I wrote SQL scripts to join bibliographic tables on publisher strings (`p_publisher_name`) and censor names, resolving entity overlaps by binding unique GND authority markers where possible.
2. Bipartite Network Construction
Modeled censorship as a bipartite social graph: Censors (Catholic officials, professors) and Publishers represent two disjoint sets of nodes, where edges denote books approved or vetted. We filtered connections below a weight threshold of 2 to remove sporadic records and highlight systematic state workflows.
3. Geographic Mapping
Geocoded publication locations and mapped their geographical output chronologically. To contextualize censorship, printing cities were classified confessionally (Catholic, Protestant, Mixed) using census records, showing how print density shifted dynamically across boundaries.
4. Client-side Performance Optimization
Replaced dynamic database calls with compressed static JSON datasets. Constrained the D3 network simulation to freeze when switching tabs and implemented Leaflet redraw timeouts. This minimized browser CPU overhead and eliminated lag on mobile devices.
Jesuit Censors & Print Control Structures
Focusing on Catholic surveillance reveals that the University of Ingolstadt functioned as the theological and structural center of book vetting for Southern Germany.
Ingolstadt's Hegemony
By isolating the network of Catholic censors, we trace the profound influence of Jesuit scholars. Key Ingolstadt theologians, such as Jacob Gretser (1562–1625), Adam Tanner (1572–1632), and Peter Stevart (1560–1621), approved hundreds of manuscripts before publication. The bipartite network shows that these censors did not act in isolation; they worked closely with specific publishing houses, such as the Eder and Sartorius presses.
Posthumous Recyclings of General Imprimaturs
The bipartite graph reveals an interesting phenomenon concerning Jesuit Generals, such as Claudio Acquaviva and Muzio Vitelleschi. Their names appear on licensing records decades after their deaths. Historically, this represents the standard practice of printing house reuse: rather than sending revised additions of theological treatises back to Rome, publishers simply reprinted the original General's imprimatur, creating a persistent, posthumous "paper presence" in bibliography catalogs.
The Confessional Balance of Power
The spatial maps trace the shifting balance of early modern printing. In the 16th century, Catholic print centers (like Munich and Cologne) and Protestant centers (like Leipzig and Wittenberg) held relatively equal shares of book production. Following the Thirty Years' War (1618–1648), Protestant regions saw massive increases in output, while Catholic printing centers became localized control centers, prioritizing strict doctrinal surveillance over commercial output.
Avenues for Future Historical Research
Building on our results, two primary computational methodologies can extend the research into printing economies and semantic bibliographic modeling:
1. The Cartography of Piracy: Privilege Evasion
The Holy Roman Empire was a patchwork of jurisdictions with overlapping print privileges (e.g., Imperial privileges vs. local Electorate privileges). How did the geography of "unauthorized reprinting" (book piracy) function? By cross-referencing books printed without local privilege claims (e.g., missing *cum privilegio* tags) against identical titles printed across territorial borders (Leipzig vs. Nuremberg), we can map historical "piracy networks." This would show which territories actively profited by ignoring foreign print privileges, measuring the economic limits of censorship in a politically fragmented empire.
2. Semantic Frontispiece Clustering via LLMs
Catalog classification systems are often flat and struggle to capture nuances in controversial early modern literature. By feeding the full transcribed texts of book frontispieces into Large Language Models (LLMs), we can map semantic vectors and identify subtle thematic clusters (e.g., theological controversies or scientific dissent) that standard catalog indexes obscure.