of the group @ UG
The screening systems we employ are particularly suitable for tailoring stability and binding affinities, but we also tackle the challenging task of enzyme design. Resulting from a strong believe in the transformative potential of synthetic biology, we are particularly interested in enzymatic functions enabling the manipulation of genetics and bio-orthogonal chemistry. Accordingly, our research generates workflows in which computationally designed enzyme variants are screened for the biocatalytic production of modified cofactors, nucleotides, and DNA/RNA, intended to create commercially valuable molecules, and for synthetic biology and biomedical applications.
In June 2022, Maximilian Fürst (Max) started as an assistant professor at the University of Groningen (UG or RUG) in the Netherlands. His research group investigates the development and application of methods in computational protein design and high-throughput screening. Main targets of interest are enzymes that synthesize or modify cofactors, nucleotides, and nucleic acids, useful for applications in biotechnology, synthetic biology, and pharma.
Before that, Max did a postdoc with Phil Holliger at the MRC Laboratory of Molecular Biology in Cambridge, developing high-throughput enzymatic screens to engineer DNA polymerases for synthetic biology applications. He obtained his PhD at the UG in 2019 working on protein engineering of monooxygenases for biocatalysis. His thesis can be obtained here.
PhD in Biochemistry, 2019
University of Groningen
MSc in Biology, 2013
University of Munich
BSc in Biology, 2011
University of Munich
The group is embedded in the Groningen Biomolecular Sciences and Biotechnology Institute (GBB), within the Faculty of Science and Engineering at the University of Groningen (UG).
Groningen is a vibrant and international student city (1 in 4 of the ~240k inhabitants is a student, and 1 in 4 students is international) located ~2h northeast of Amsterdam, in the Netherlands. The UG ranks among the world’s top institutes, and PhD students are very well supported: you enjoy student benefits (e.g. heavily subsidised access to the sport center and discounts), but usually are hired as staff, and consequently receive pension, child support, etc. PhD student salaries are among the highest in Europe, while Groningen is one of the Dutch student cities with the lowest costs of living. If you move to NL from abroad, you get a substantial income tax discount. English is ubiquitously spoken in the Netherlands, and everthying from the (very straightforward Dutch) bureaucracy, to shopping, to following courses can be done without the need to learn Dutch (although the UG pays free courses!) The Dutch are famously direct and open, and hierarchies are amazingly flat. Even more so than is usual in academia, PhDs and PostDocs in NL are typically given considerable freedom and independency and are encouraged to team work. The group is embedded in the Groningen Biomolecular Sciences & Biotechnology Institute (GBB) and with the Biochemistry/Biotechnology group, headed by Prof. Dr. M. Fraaije. Since June 2024 on, we are located in the completely new Feringa building of the Zernike campus.
↓ IMPORTANT INFO FOR ALL APPLICANTS ↓

↑ IMPORTANT INFO FOR APPLICANTS ↑
In general, if you are able to fully provide your own funding and are interested in joining the lab, please get in touch.
Postdoc applications are always welcome if you are able to procure your own funding (a process I will obviously support, if possible). Check e.g. here or here for comprehensive lists of postdoc fellowships.
Students enrolled at the University of Groningen are welcome to reach out at any time to inquire about internships, bachelor, and master thesis in the group. Please include a short motivation, detail your prior relevant research and/or course experience, explain how that links to what you would like to do in our lab, and what future ambitions you hope the internship should prepare you for.
The same instructions apply to international students, who are also always welcome in our lab. In additon to a CV and short motivation letter, please include your ideas for the time frame and your plans for funding in an email to me. Consider enquiring about student fellowships such as Erasmus+; otherwise, there may be other funding options, including support from the COZYME Cost action I’m part of.
Please feel free to informally reach out to me via e-mail, Twitter, or Linkedin for more information on the projects, or e-mail me your formal application documents (cover letter & CV).
*
Using in silico biophysical modelling of biological macromolecules to predict desired protein characteristics.
Using cutting-edge screening technologies to sample vast numbers of (designed) protein variants.
The best of both worlds - design proteins on the computer and engineer them in the lab.
Here I’m posting random snippets of information, code, and data.
I am very easy to reach via mail and social media. You can also leave a message using this form.
This covers the homepage (content/home/) of the Fürst Lab Hugo site. See ../post/CLAUDE.md for site-wide architecture.
The hero section (hero.md) uses a canvas-based animated dot grid instead of a background video. The animation lives in static/js/dot-bg.js and is loaded via layouts/partials/custom_js.html.
hero.md front-matter sets background.color: black (no video). The black fill is seamless with the canvas fade-in.dot-bg.js dynamically creates a <canvas id="dot-bg"> and appends it to #hero .home-section-bg (the div Hugo/Wowchemy generates for widget backgrounds).assets/scss/custom.scss sets overflow: hidden on the bg container (clips canvas during zoom) and display: block on the canvas (removes inline spacing).z-index: -1 so hero content (title, typewriter text, CTA buttons) renders on top.static/js/dot-bg.js)Wrapped in an IIFE. Early-returns if #hero doesn’t exist (safe on non-homepage pages).
Key sections:
.home-section-bgbuildDots() — (re)computes grid dimensions and dot array; called on init and resizerequestAnimationFrame when hero scrolls off-screendraw() loop — frame-rate-capped render loopDOTS_X columns (responsive: (W / 100) * DOTS_PER_100PX, clamped to MIN_DOTS_X–MAX_DOTS_X), rows auto-computed from hero height. Each dot placed at grid center: (spacing * (c + 0.5), spacing * (r + 0.5)).MAX_RENDER_DPR (default 1) to reduce pixel count on Retina.x, y — pixel positionc — column index (used for precomputed wave Y lookups)xFrac — x / W, precomputed for wave sweep calculationsphase — random [0, 2*PI] starting oscillation offsetspeed — CYCLE_SPEED * (0.7–1.3), spark dots get 1.8x multiplierbaseR (0–14), baseG (51–255 depending on spark), baseB (220–254) — color personality. R stays low to keep palette cyan/blue, B always high.dark — boolean flag, DARK_SPOTS% of dots are permanently dimdarkMax — dark dots capped at 3–20, others at 255brightCap — per-dot brightness ceiling from BRIGHTNESS_MIN/MAX rangeTriangle wave (not cosine) for linear brightness ramp with no lingering at peaks:
angle = (phase + time * speed) mod 2PI
tRaw = angle < PI ? 1 - 2*angle/PI : -3 + 2*angle/PI // range: -1 to +1
t = -1 + fadeIn * (tRaw + 1) // fade-in envelope
t >= 0: R lerps toward 60 (NOT 255 — keeps cyan, prevents grey), G/B toward 255t < 0: all channels scale toward 0Both use proportional scaling (scale all channels by same ratio to preserve hue):
brightCap — if max channel exceeds cap, scale all downdarkMax — additional cap for dark-flagged dotsMouse proximity and wave pulse temporarily lerp these caps toward 255 (uncapping).
Two sine waves with configurable wavelength/amplitude/band-width. Pulse intensity follows a sine cycle (WAVE_PULSE seconds). At each trough, wave parameters re-randomize. Sweep stagger (WAVE_SWEEP) creates a left-to-right reveal effect. Per-column wave Y values are precomputed each frame to avoid redundant sin() calls.
mousemove on heroSection (not canvas) with getBoundingClientRect() coordinate transformp = (1 - dist/MOUSE_RADIUS)^2TARGET_FPS (default 20) caps frame rate via time-delta gatingMAX_RENDER_DPR (default 1) reduces internal canvas resolution| Parameter | Default | Description |
|---|---|---|
DOTS_PER_100PX |
8 | Dot density: dots per 100px of width |
MIN_DOTS_X / MAX_DOTS_X |
60 / 220 | Clamp range for dot columns |
DOT_SIZE |
5 | Dot radius in CSS pixels |
CYCLE_SPEED |
0.0005 | Oscillation speed (radians/ms) |
SPARK_RATIO |
0.4 | Fraction of non-dark dots that are bright cyan |
BG_FADE_IN |
1 | Seconds to emerge from black |
BRIGHTNESS_MIN/MAX |
10 / 60 | Brightness cap range (0–100) |
DARK_SPOTS |
50 | % of dots permanently very dim |
MOUSE_RADIUS |
150 | Mouse influence radius in px |
WAVE_PULSE |
12 | Seconds for full wave pulse cycle |
ZOOM_AMOUNT |
0.03 | Max zoom (3%) |
ZOOM_CYCLE |
30 | Seconds per zoom oscillation |
TARGET_FPS |
20 | Frame rate cap |
MAX_RENDER_DPR |
1 | Internal canvas DPR cap |
people.md renders the team section. Profile images use CSS class .avatar.avatar-circle. Custom hover glow is defined in assets/scss/custom.scss.
hugo server -D # from /Users/max/Library/CloudStorage/Dropbox/TheFuerstLab/
Homepage at http://localhost:1313/.