GitHub | GitLab | Google Scholar | LinkedIn
As an ambitious software engineer, I like to learn things and creatively solve challenging software problems in a principled way, preferably in a small team where individual input is valued. I take pride in efficiently building software that is correct, fast, and beautiful. I appreciate opportunities to contribute to open source software and to work adjacent to cutting edge science.
I am currently open to new challenges in an environment that uses Rust, Haskell (or other strongly typed functional languages), Nix, and/or NixOS to great effect, ideally in a scientific or high-performance computing setting. I am looking for a permanent 32 hours/week position, either fully remote or hybrid (near Delft or The Hague, The Netherlands).
My main software interests are modern typesafe and functional languages, testing, reproducibility, and other techniques that help build better software, and high-performance computing.
I would like to do my programming in Rust, Haskell, DLang, and/or C. I strongly prefer using Linux (NixOS in particular) or BSD as an operating system.
Although the domains of cryptocurrency, adtech, fintech, and the fossil fuel industry are often relatively keen on using the aforementioned technologies, I am currently not interested in working on these kinds of applications.
Scientific Software Engineer: I have mainly worked on the development of highly performant software that solves seismic wave equations for use in the petroleum industry.
This software consists of libraries written in C, C++ and Fortran, and originally used OpenMP for parallelisation. I have been part of the team that has extended the parallelisation to use MPI on top of OpenMP. Later, I was also part of the team that works on extending the code to work on GPUs and other accelerators, using and contributing to libocca to manage JIT-compiled kernels for various APIs, such as CUDA. In addition to implementing new features and updating existing features to work on new platforms and hardware I have worked over time to expand the scope and consistency of the test suite, taking pleasure in designing tests that can catch obscure bugs.
Additional tasks included setting up and maintaining development servers, Jenkins-based automated testing systems, and uniform development environments across a variety of machines. I also guarded overall code quality via code standards, linting, code reviews, discussions with team members, mentoring new team members, and writing documentation.
In other projects I have created various GUI-based tools written in Python/Qt to replace Excel-based workflows, assisted in developing and giving Python courses, and have set up version control and CI/CD pipelines.
Project lead: I have acted as project lead for small 2-3 person teams that worked on some of the aforementioned Python projects and helped to deliver the promised software on time and on budget.
Other: With my personal development budget I have set up an internal Haskell study group to raise awareness of functional programming and have kept myself informed of new developments. I use Nix(OS) for correctness and reproducibility and contribute to nixpkgs; I have explored the use of those technologies in internal projects and client projects with some success.
PhD-candidate: I performed computational research in the areas of fluid dynamics, complex fluids and interfaces.
To achieve this, the physics research was paired with software development, in particular extending "LB3D": A parallel implementation of the Lattice-Boltzmann method for simulation of interacting amphiphilic fluids, which is written in Fortran 90 and utilizes OpenMP and MPI for parallelisation for large supercomputers. These extensions included interactions beween multiple fluids, solid (static) geometries and moving solid particles with various wetting properties, and electrostatic forces.
Additional duties included designing, maintaining, and writing in-house analysis tools (in various programming languages such as C and Python), maintaining some of the IT infrastructure (such as a Linux compute cluster for the research group, as well as a Jenkins testing environment) and co-organizing a bi-weekly scientific seminar.
Software Engineer: I worked on development, support and maintenaince of the proprietary Labs-of-Time application, which aims to be a front- and backend for (chemical) laboratories, creating a continuous chain from customers placing their orders to the actual analysis systems and all the way to final reporting.
Duties included programming (ASP and Visual Basic .NET), database management (MSSQL and Oracle), systems design, and customer relations.
At the TU/e I pursued a PhD programme at the Mesoscopic Transport Phenomena group of the Applied Physics department (see above). I defended my thesis in 2018 while working at VORtech.
Thesis: Liquid-liquid and liquid-solid interactions at the mesoscale
Supervisor: Prof. Dr. J.D.R. Harting.
At UU I started with the TWIN programme physics / mathematics and completed the first year successfully with a propedeuse in physics and a propedeuse cum laude in mathematics. I then continued (only) the physics programme, received a Bachelor's degree in physics with a minor in computer science and proceeded to graduate the Master's programme Theoretical Physics.
Thesis: Nucleation times in Lennard-Jones systems through pathway recombination.
Supervisor: Prof. Dr. G.T. Barkema.
The full list is available at Google Scholar.
Excellent command of the English and Dutch languages. Can read and understand German. Once enjoyed a Klingon opera but didn't understand a word of it.
Movies, (graphic) design, architecture, literature, (role-playing) games, city trips, cycling, electronics, and highly sophisticated inter-locking brick systems.
Available on request.
Email: sfrijters@gmail.com.
Location: The Hague, The Netherlands.