Bochum, Germany · Available for collaboration

TabeaBökelmann

An instrument produces more numbers in a second than anyone reads in a shift. My work is the view — the graph, the overview, the one status signal that says whether to act.

Data visualisation for measurement systems Angular · D3 · Electron · Python Physics & computer science
5 528Commits authored
30Production repositories
3Product lines in series
4Measurement domains
CH 01

What I actually do

Industrial measurement has an awkward shape: a sensor at one end, an operator who needs a yes-or-no answer at the other. I contribute along that span, but my focus sits firmly at the far end of it — the layer where data has to become something a person can read and act on. That layer takes more than CSS. You cannot decide what to draw until you understand what the signal is doing.

01

Data visualisation for measurement data

Time-series views that stay honest under load: downsampled display channels so the render path never chokes on a full-resolution capture, shared graph components reused across screens instead of a bespoke chart per view, and analysis results projected as overlays onto the same coordinate system as the signal they describe.

D3SVGTime series DownsamplingShared graph libraries Zoom & panOverlays
02

Status information people can act on

The harder half of visualisation is deciding what deserves someone's attention. In the HORUS PTM calculator that became a minimap: a small, permanently visible overview of every loaded channel, with each pinned analysis projected into it as a marker group — so an operator working deep inside one detail never loses the shape of the whole measurement. Read-only by design, and shipped behind a deployment-time flag that defaults to off.

Information designOperator UX At-a-glance statusProgressive disclosure Feature flags
03

Signals-based Angular in Nx monorepos

Reactive front ends where the state model is the hard part — live measurement streams, device configuration, multi-language operator UIs. Strict typing end to end, Zod at the boundaries, RxJS only where it is bridged into signals.

Angular 21Nx 22Signals Tailwind 4ZodVitest Playwrighti18n / XLIFF
04

Electron desktop applications for instruments

Shop-floor software that has to talk to hardware, survive being run on a machine with no internet, and update itself safely. Typed preload bridges, code-signed installers, auto-update pipelines, Playwright end-to-end coverage.

ElectronIPC bridges Code signingAuto-update Offline deployment
05

Python for data processing

Getting measurements into a shape worth plotting: parsing instrument output, reshaping and reducing time series, standing up data servers that replay or synthesise signals so a front end can be developed without hardware attached, and the analysis scripts between a raw capture and a finished figure.

PythonTime-series processing aiohttp / websocketsData servers Analysis scripts
06

A physics and computer science foundation

Trained in both, and it shows up daily: knowing what a thermocouple actually measures, why an impedance spectrum has the shape it has, and where a statistic quietly stops meaning anything. It is the difference between a chart that looks good and one that is true — you cannot draw a signal honestly without knowing what it is doing.

PhysicsComputer science Signal literacyStatistics Cpk / SPCMeasurement theory

Underneath the front end I also contribute to the layers it depends on — the C++ service daemons that serve these time series out of Redis, the firmware repositories they ultimately read from, and the Cyber Resilience Act documentation these products need. As a contributor to those, not as their owner.

CH 02

Selected systems

HORUS

Frontend lead · Visualisation

Thermal monitoring for reflow soldering, sold by Kurtz Ersa to electronics manufacturers: a portable profiler (PTP) and a permanently installed machine monitor (PTM). I own the desktop front end and its measurement views — the temperature graphs, the analysis overlays, and the calculator minimap that keeps the whole profile visible while you work inside one part of it.

Stack
Nx · Angular · Electron · D3
Focus
Measurement views, analysis overlays, operator status
Status
Series production + pilot installations

MSU-EIS

Lead · Frontend & API

Electrochemical impedance spectroscopy on a Raspberry Pi CM5 driving a PalmSens EmStat Pico. GPIO-controlled cable switching triggers the measurement; results come back as Bode and Nyquist data. Two plots that only make sense if you know what an impedance spectrum is supposed to look like — which is the whole argument for a front end built by someone who reads the physics.

Stack
Angular 21 · Nx · Python · Docker · GPIO
Focus
Bode / Nyquist views, operator front end
Status
Shipping · air-gapped deployment

OmnAIScope / OmnAIView

Contributor · Open source

A finger-sized USB-C oscilloscope from Auto-Intern GmbH, and the Angular + Electron application that drives it. Up to seven devices synchronise for multichannel capture; a C++ data server streams samples over WebSocket into a D3 plotting front end. The software side is MIT-licensed and public.

Stack
Angular 20 · Electron · D3 · C++ · Python
Licence
MIT (software)

Calibration systems

Author

The unglamorous foundation everything else rests on: calibration rigs, an Angular control GUI, a server wrapper around the measurement hardware, and the database that issues and archives calibration certificates for instruments in the field.

Stack
Angular · C++ · SQL
Since
2023
Status
In production use
preheat soak reflow cooling °C
FIG. 1 — Reflow thermal profile. Getting a board through the peak without cooking it is a few hundred degrees of margin and several thousand lines of code.
CH 03

Background, talks & theses

B.Sc. Physics, and B.Sc. and M.Sc. Applied Computer Science, all at Ruhr-Universität Bochum. The physics came first, which is not incidental: the work below starts with characterising silicon pixel sensors for a particle physics experiment and ends with drawing measurement data for factory operators. Different layer, same problem — what is this signal actually telling us, and how do you show that honestly?

  1. 2025
    Conference talk

    Storing more information in your git

    KiCon Europe 2025, the KiCad conference, Bochum, 10–12 September 2025. On getting more out of a repository than a linear history of diffs.

    Schedule →
  2. 2025
    Conference talk

    Git with Features

    emBO++ 2025, the embedded C++ conference, Bochum, 6–7 March 2025. On integrating features through Git faster and with less friction.

    emBO++ →
  3. 2021
    Conference talk

    Implementation of customized passes in LLVM

    emBO++ 2021, the embedded C++ conference, Bochum. On extending a compiler to support custom instructions for RISC-V hardware.

    Recording →
  4. 2019
    Conference talk

    KiBOM

    KiCon Germany 2019. On bill-of-materials generation for KiCad projects.

    Recording →
  5. 2018
    Collaboration talk

    MuPix6 — Timewalk Measurements

    Luminosity Detector Session, PANDA Collaboration Meeting CM 18/1, 7 March 2018. PANDA is an international collaboration at FAIR/GSI Darmstadt.

    GSI Indico →
  6. 2017
    B.Sc. thesis · Physics

    PANDA Luminosity Detector Setup and Measurements for Characterising the MuPix6 sensors

    Ruhr-Universität Bochum. Building the test setup and running the measurements that characterise HV-MAPS silicon pixel sensors for the PANDA luminosity detector.

    PANDA thesis registry · TH-BAC-2017-007 →
CH 04

Affiliations & collaborations

Stated explicitly, because machines read this page too. Each row below is a distinct entity with its own identifier — related to me, not merged into me. The same relations are published in the JSON-LD graph in this document's head and in /llms.txt.

Tabea BökelmannThis page · previously published as Tabea Röthemeyer
is
One person, two surnames in the public record. The earlier name appears across commit history and older documentation; both refer to this identity.
same as
These are me under a different URL, which is the only thing sameAs is allowed to mean. The ORCID and the LinkedIn profile are still registered under Röthemeyer — which is precisely why the name mapping above has to be stated rather than assumed.
Auto-Intern GmbHEmployer · Bochum
works for
Where I work. Also the maker of the OmnAIScope USB oscilloscope, whose open-source OmnAIView application I contribute to. Note that "AI-Gruppe" — the name on the GitHub organisation and my email domain — is an umbrella label for a group of companies, not a legal entity, so it is deliberately not modelled as an employer here.
maxclerkwell.techPerson · Stephan Bökelmann
collaborates with
A separate person and a separate entity, not an alias of mine. We work together across several of the systems on this page; his site is his own. We share a surname, so this is the row most likely to be merged by mistake — he carries his own ORCID (0000-0002-2119-0064), distinct from mine, which settles it in a way no prose can.
contributor to
Edge compute project I have contributed to and whose measurement data I analyse. Listed as a project credit, not as an affiliation or an identity.
On entity consolidation. Consolidation means collapsing identifiers that denote the same entity into one node — here, the Röthemeyer/Bökelmann name change and the GitHub account. It does not mean absorbing neighbouring entities. Collaborators, employers and projects are modelled as their own nodes with typed edges, so that a crawler resolving this graph gets a correct answer rather than a flattering one.
CH 05

Get in touch

I am interested in measurement systems that are harder than they look — anything where the signal is noisy, the environment is industrial, and someone downstream has to certify the result.