Herman Bergwerf

Welcome! This webpage contains information about my expertise and professional activities. The main driving factor for me has always been solving difficult problems, and making the solutions look as beautiful as possible. I enjoy working with other skilled people, learning from them, and contributing my own knowledge and insights. I have a strong theoretical background in biophysics, mathematics, and computer science, and over the years I have gained extensive experience with software development and programming.


Technical expertise

I have affinity with challenges across the software stack, both high-level and low-level. I like designing things, thinking about the interactions, and making sure everything is implemented in a modular and efficient way.


UI/UX Design

When developing user interfaces I strive for perfection. I make sure things look good on every screen, taking into account different sizes and resolutions. I highly value simplicity, so I try to make things self explanatory using visual metaphors users are familiar with. When necessary I use Inkscape to design custom vector icons that blend in well with the rest of the design.


Interactive Graphics

Many of my projects have included interactive graphics, from a clickable world map to an interactive 2D and 3D molecule editor. Developing graphics with complex user interactions is one of my main strengths. In some cases I design a custom event handling system to ensure predictable behavior, and to ease the implemenation of new domain-specific features.


Accelerated Graphics

Application performance should never stand in the way of the user, so when needed I look for advanced ways to improve rendering efficiency. I have worked with the OpenGL API, developed GLSL shaders, and implemented general-purpose GPU computation. A good understanding of these technologies is very useful when working with 3D graphics.


Machine Learning

I have experience developing deep learning networks, and using existing machine learning solutions in Python. Jupyter Notebooks are an essential part of my Python workflow. The machine learning world is very fast-paced, and novel applications are published each day. Many existing solutions are just waiting for new application contexts.


Formal Verification

One of my academic specializations is formal verification using interactive theorem provers. I primarily use the Coq Proof Assistant, using which I have developed various formal theories. Developing formal proofs is very challenging, and requires careful thinking about even the smallest logical inferences. Below are some formalization projects I did in my spare time.

Theory Repository
Kleene Algebras and shortest paths @bergwerf/star_semiring
Functional permutation factorization @bergwerf/permutation_computing
Arithmetic decidability via automata @bergwerf/linear_integer_arithmetic
The Cantor-Bendixon theorem @bergwerf/settheory
Brouwer’s Continuity Principle @bergwerf/intuitionism

2022 Machine Learning for Image Processing
Client Omoda
Technologies Python MediaPipe
Goal Build machine learning based tools for automatic image classification to help automate the photography pipeline.
2017-2021 High-quality Chemical Diagrams
Client CreativeQuantum
Technologies Dart HTML5 Canvas
Goal Design a new and highly configurable web-based chemical diagram editor from scratch using the Dart language.
2017 Molecule Sketching for Education
Client Learnbeat
Technologies JavaScript HTML5 Canvas
Goal Integrate MolView’s 2D molecule sketcher in a learning platform used by over 500 schools in the Netherlands.
2016 Custom Mailing Scheduler
Client Profects
Technologies Golang PostgreSQL Docker
Goal Develop a stable and efficient program to send thousands of daily emails parameterized by an SQL database.
2012-2015 MolView.org
Technologies JavaScript PHP WebGL CSS
Goal Enable free online molecule editing and viewing using open cheminformatics databases and modern web technologies.

Academic background

In 2015 I started the Nanobiology Bachelor program at TU Delft. I was excited to learn about the molecular machinery and laws of physics that make life possible. While this fascination remains with me, I decided to move away from the empirical sciences to study mathematics and logic.

I moved to Nijmegen where they offer a strongly theoretical computer science track, including courses on Category Theory, Type Theory, Computability Theory, and Automated Reasoning. My interest in mathematics increased, and I followed courses about Axiomatic Set Theory, Model Theory, and Graph Theory.


MSc. Mathematical Foundations of Computer Science

Research Internship
Title Circular lists in Iris ∗ deduction rules of ▷
Supervisor dr. Robbert Krebbers
Group Software Science
Full Text doi: 10.5281/zenodo.6340500


BSc. Nanobiology

Thesis
Title Nerve fiber tracing in bright-field images of human skin using deep learning
Supervisor dr. Erik Meijering
Group Biomedical Imaging Group Rotterdam
Full Text TU Delft Repository
IEEE Article doi: 10.1109/ISBI.2019.8759504
Minor
Topic Interactive Environments at the Industrial Design faculty
Description During one full semeter we were introduced to Interaction Design for physical environments, and challenged to go through an iterative designing and prototyping procedure in small teams.

Contact details

I am always interested in new challenges and opportunities. For questions and business inquiries please send an email to post@hbergwerf.nl.

Company Bergwerf Labs
Address Heemraadstraat 6, 6525 TH, Nijmegen
KVK-number 73224480
VAT-number NL002378274B15