Certain parts of this website have not (yet) been optimised for portrait mode on small(er) devices. Please switch to landscape mode to continue.

Rotate me!

Interactive blog

The philosophy behind our blog is gracefully captured by the following quote:

A presentation of geometry in large brush-strokes, so to speak, and based on the approach through visual intuition, should contribute to a more just appreciation of mathematics by a wider range of people than just the specialists.
— David Hilbert

As such, regardless of whether you're an engineer, programmer or artist, it is our aim to provide visual and intuitive articles — also covering advanced topics — that can be understood without requiring a ton of background knowledge. In addition, most articles come with interactive features, encouraging you to engage with the concepts presented.

Latest articles

26 March 2023
A
28 March 2023
B
.. April 2023
C

Article series

Many articles are part of a series covering a more extensive topic. Popular series include:

Join our Patreon!

Writing these articles and implementing their interactive features is delightful, but unfortunately also rather time-consuming. If you're a frequent visitor, or perhaps read a specific article that turned out to be particularly valuable to you, consider joining our Patreon to support future development of this blog! There are several perks, including the option to suggest coverage of a specific topic as well as access to (vector) files to create a variety of shapes at home or at work.

Professional solutions

If you or your company are looking for an experienced, flexible and enthusiastic researcher/developer on CAx (an umbrella term including CAD, CAE and CAM) or computer graphics (2D and 3D), I'd be interested to hear from you! Below I've outlined my specialisations and areas of interest, though please note that these are not exhaustive — I'd be curious to hear about and discuss projects headed in different directions.

Specialisations

  • Computer graphics (2D and 3D)
    • C++ and OpenGL/Vulkan (e.g. in Qt or GLFW, both cross-platform), optionally using libraries such as OpenSubdiv
    • TypeScript/JavaScript and WebGL/WebGPU
    • SVG
  • Numerical optimisation and simulation, including constrained optimisation and (spline-based) finite element methods including isogeometric analysis (IgA)
    • C++ using the Eigen library
    • Python using the NumPy and SciPy libraries
  • Scientific writing and visualisation
    • High-quality typesetting using LaTeX
    • Vector graphics (SVG), optionally animated (web-based)

Areas of interest

  • Interactive visualisation of geometry and other data (OpenGL, WebGL and WebGPU)
  • Numerical optimisation and simulation (multi-objective constrained optimisation, IgA, BEM, quadrature and local refinement)
  • Surface cladding in freeform architecture (parametric design, optimisation and production aspects)
  • Innovative CAM solutions for CNC manufacturing processes including laser cutting and 3D-printing

Credentials

With a mixed background in Mechanical Engineering (BSc, MSc), Computer Science (PhD) and over a decade of experience with general prototyping (iterative 2D/3D design and manufacturing), I have an excellent overview of both the theoretical and practical aspects of CAx. My experiences from a career in academia (also spanning two Postdocs in respectively Computer Science and Mathematics) include outstanding research skills (literature review, extending existing research and publishing new findings) and software development in a variety of languages and environments (including C++, Python and JavaScript). I'm adept at communicating knowledge and opinion in different roles, including those of supervisor and speaker. On the more applied side, I'm experienced with a range of CNC machines such as laser cutters, mills/routers and 3D-printers (including calibration, maintenance/repair and occasional development).

For more details on my experience, I'd like to refer to my profile on LinkedIn. In addition, please feel free to drop me a line regarding anything work-related, including potential collaborations or guest lectures.

Physical products

Besides theory and implementation, I very much like to design and manufacture. Some of the works — typically somewhere between utensil and (geometric) art — find their way to our Instagram, accompanied by a bit of information regarding their material(s) and manufacturing process(es). Furthermore, upon repeated requests, a selection of products will soon be available through Etsy, including several options to personalise them!

Now and then I aso take on commissions (e.g. cutting parts for an art installation, engraving logos on wood or stone or cutting foam inlays for a limited edition product). Please feel free to inform about the possibilities.

Highlighted works

TortilladoraPine and beech (CNC routed), walnut and clear acrylic (laser cut/engraved)
Tessellation and helixBamboo (rotationally laser cut/engraved)
Cube/arrow tessellationPaduk, wenge, cedar and walnut (laser cut)
Logarithmic spiral coasterOlive wood (laser cut)

A modern workshop

The geometry of a conceptual product, its desired physical properties (e.g. the loads it should be able to bear) as well as its appearance (i.e. aesthetics) considerably narrow down the choice of material(s) and manufacturing process(es) that can be used to create it. Assuming the production of a limited number of copies (as opposed to mass production), the latter is usually restricted to the equipment already available. In a modern workshop, that typically includes CNC machines such as a laser cutter/engraver (CO₂ or diode), 3D-printer (filament or resin) and perhaps a 3-axis router. Less common are a fiber laser cutter (able to cut metal), water jet cutter (able to cut virtually anything), SLS (powder) 3D-printer or a 5-axis mill.

Personal workflow

As is probably evident from the highlighted works above, I prefer working with natural materials, including different types of softwood and hardwood (e.g. pine, beech, oak, walnut, olive and paduk), paper and slate. In addition, I occasionally use (transparent) acrylic, EVA foam, rubber and felt. For 3D-printing, it is mostly PLA — some of it containing wood fibers, metal powder or with phosphorescent properties. For pewter casting I use alloys with a high percentage (typically 90+%) of tin.

For most projects I use my CO₂ laser cutter/engraver. It's a very versatile machine — it can cut a wide variety of materials and engrave or mark virtually anything — and reasonably fast. Equipped with a rotation module, it can also cut and/or engrave (more or less) rotationally-symmetric objects. However, especially in the case of thick(er) pieces of wood, it does result in a rather charred cut, which is usually not the desired look (and very demanding to post-process). In those cases, as well as for so-called 2.5D designs, I generally switch to a 3-axis router. For truly 3D products (i.e. not corresponding to an assembly of 2D parts which could be laser cut or routed), I use an FFF (filament) or SLA (resin) 3D-printer. Without access to machines able to process metal, I turn to traditional pewter casting in sand- or silicone moulds when a project requires it.

Each (CNC) manufacturing process requires its own bit of software. In the case of laser cutting/engraving, I use LightBurn, currently the only cross-platform option. In comparison, using a 3-axis router requires quite a bit more effort, as you first need to generate tool paths (encoded as G-code) including so-called ramps, tags and dog bones. Also in this case I try to use cross-platform options whenever possible, which in my case means FreeCAD. Finally, in the context of 3D-printing I typically use whatever software is developed by the printer's manufacturer, which in my case means Raise3D's IdeaMaker or Prusa's PrusaSlicer.

Web-based tools

In the process of creating this website, I've developed a couple of tools that might be useful in a broader context. They are available and documented on our GitHub, and are briefly summarised below.

Laterna — versatile scientific presentations

In an age where an increasing amount of content is online, I'm surprised about the lack of web-based presentations (which would support essentially any HTML element out of the box — including videos that actually play when presenting in front of an audience!). Although there are a couple of existing frameworks, none of these seem to focus on scientific presentations. As such, I thought it would be a nice challenge to develop one. I've dubbed it Laterna, after the Laterna Magica, and also use it as an alternative way to display blog articles. In addition to support for (interactive) WebGL, videos and, well, essentially any other HTML element, features include:

  • Support for mathematical notation, both inline (using KaTeX) and in illustrations (using the script mentioned below)
  • Local zoom
  • Easy navigation
  • Selective search
  • A variety of colour themes

Web-based rendering of SVGs containing mathematical notation

For high-quality scientific illustrations, proper rendering of mathematical notation is indispensable. As you might know, it is not always a straightforward task to accurately position your symbols and expressions, regardless of whether it's in a PDF or web-based setting. For this purpose, I've written a bit of JavaScript taking care of this in a web-based context — given an external SVG embedded through an HTML object tag, the script searches for LaTeX expressions in the SVG, renders them using KaTeX and positions them using custom attributes added to the SVG file. It also comes with an additional feature to automatically recolour the SVG based on the selected colour theme.

Miscellaneous

In addition to the above, there are a couple of interactive visualisations leaning more towards the artistic/entertaining side I'd like to highlight. They are featured on the blog, and (currently) not listed on GitHub.