Fredrik Fornwall's CV
An up to date copy of this CV can be found at https://fornwall.net/cv/.
Personal details
- Name:
- Fredrik Fornwall
- Nationality:
- Swedish
- Address:
- Mickelsbergsvägen 274, 141 71 Segeltorp, Sweden
- Languages:
- Swedish and English fluently, German and Spanish somewhat
- Phone:
- +46 70 627 36 66
- Email address:
- fredrik@fornwall.net
Summary
- Passionate and enthusiastic software developer.
-
Interested in both low and high level concepts with a good working
knowledge and experience of many fields.
-
Enthusiastic about open source and how technology can help improve society.
-
Quick learner with a drive to solve problems no matter the difficulties.
Work history
-
2023 to 2024: Developer at Embark Studios.
- Worked on a custom game engine in Rust.
- Improved the integration of the game engine on Android.
- Updated SDK:s and LLVM version in CI.
- Worked on improving the window system integration.
- Contributed patches upstream to various crates fixing issues and updating dependencies.
- Improved gamepad behaviour and usability.
- Refactored the user account API to fix various DX issues that had resulted in problems.
- Updated the WebAssembly engine (wasmtime) to new versions.
- Decreased the amount of memory allocations in certain hot paths.
- Reworked the internal profiling API giving substantial performance improvements when used from WebAssembly.
- Identified and isolated a Nvidia vulkan driver bug, reporting it to Nvidia so it was fixed.
- Responded to security vulnerabilities in dependencies.
- Fixed camera sync issues in a custom UDP network protocol.
- Fixed data loss issues under high load in the custom UDP reliable network protocol.
- Migrated the game engine and the gameplay from separate repositories to a monorepo.
- Identified and resolved performance issues in CI.
- Started work on porting game modules from WebAssembly to native code.
- Updated the rust vulkan API layer (ash) and the statically linked macOS MoltenVK library.
- Reduced technical debt by refactoring and removing parts of the codebase no longer relevant.
- Started embedding of the Noesis GUI C++ middleware, integrating it into the game engine rendering pipeline.
-
2023: Developer at Transrail Sweden.
- Designed and developed A/B system updates for industrial deployments of Linux.
- Implemented both high level java services and low level A/B partition updates monitored by a hardware watchdog.
- Assisted in transitioning software to docker and docker compose.
- Worked on fulfilling extensive security and functional requirements from a new major customer.
- Developed extensive use of reverse SSH tunnels for remote access.
- Worked on communicating with external systems using the CIP - the Common Industrial Protocol.
-
2022 to 2023: Developer at Tink.
-
Worked on systems for Personal Finance Management and financial analysis
used by several major European banks.
-
Helped reduce the technical debt of a complex legacy system
of micro services spanning several frameworks and languages (Java, Go and Python).
-
Worked with improving resilience, quality and improving reliability. Was part
of the on-call rotation and involved in managing several company wide incidents.
-
Analysed performance and memory usage issues across heavily used services.
-
Learnt the Bazel build system, helping the team to understand how to work
with it in a fast moving monorepo.
-
Worked with the Cassandra database management system to
manipulate huge amounts of data, helping to debug and fix several
low level issues with how the database was used.
-
Worked with high throughput systems using Kafka as a message queue, working
on fixing issues and setting up robust error handling and alerting.
-
Implemented a new system using PySpark, used through AWS Glue,
to query massive amount of data from various data sources,
extracting features to train a machine learning model to make
predictions about future user behaviour.
Interacted with data scientists and analysts and helped with
taking the system from early experiments to production.
-
Helped with onboarding and training several new developers.
-
2022: Developer at Kivra.
-
Took responsibility for a python service where users signed
agreements using BankID.
-
Fixed issues with problematic PDF constructs requiring a
low level understanding of the PDF file format.
-
Refreshed the underlying python and docker based technology
stack to modern versions.
-
Improved test coverage and introduced docker compose based
integration tests.
-
Introduced support for digital signatures of
PDF files using PAdES (PDF Advanced Electronic Signatures).
Lead the project from scratch, through design, implementation
and testing as well as tackling legal and regulatory challenges.
-
Integrated hardware security modules (HSM) on Google Cloud
with non-extractable private keys, and integrated with a
Trusted Timestamping service after evaluating several suppliers.
-
Switched usage of the PDF processing libraries to actively
maintained open source projects and contributed patches in C++
and python to them, maintaining an internal fork until the patches
were successfully upstreamed.
-
Made changes to the erlang backend that interfaced
with the python service to switch to a queue based
interface instead of direct API calls.
-
2021: Developer at Meeshkan.
-
Part of a small startup team implementing a product
for reverse engineering API schemas from recorded
traffic and applying techniques from fuzzing and
property property-based testing to generate test cases.
-
Implemented a custom continuous integration service that
integrated with GitHub and ran property based and fuzzing
tests against API:s described by OpenAPI or GraphQL
schemas.
-
Evaluated open source projects to cooperate with.
-
Main developer of the python backend, initially on Google Cloud,
later using AWS Lambda, with PostgreSQL as a backend.
-
2018 to 2020: Developer at Kindred Group.
-
Worked with the central payment platform with high requirements
on availability, performance and correctness, moving fast
with zero downtime continuous deployments.
-
Part of a group responsible for the whole payment flow,
from UI to backend.
-
Worked on a java microservices platform with high demand on
correctness and security, following requirements in the Payment Card
Industry Data Security Standard (PCI DSS).
-
Drove expanding of docker compose and kubernetes based
integration tests.
-
Implemented a high throughput API gateway where all
public API traffic flowed through.
-
Lead work in experimenting with transitioning from Oracle
to CockroachDB for new services.
-
Implemented new integrations with Apple Pay and MobilePay.
-
2018 to 2023: Consultant at Mejsla.
- Worked on various positions detailed below.
- Responsible for organising regular competency workshops and events, including a Rust for Java developers study circle.
-
2005 to 2018: Developer at Ping Pong AB.
-
Worked with development and maintenance of a complex java server
application using PostgreSQL.
-
Created technical specifications and schemas for integrations
between systems, creating working integrations between systems from
several companies in complex problem domains.
-
Responsible for implementing and troubleshooting system
integrations.
- Worked as tech lead in multiple teams.
- Diagnosed and worked around JVM issues.
- Diagnosed and fixed memory leaks.
-
Worked with java and SQL load testing and performance optimization.
- Assisted in hiring and training of developers.
- Worked with FreeBSD server maintenance.
- Developed a custom CMS functionality, exposing certain parts
of the application to the public web.
-
Worked on-call to both solve and fix issues while they happen and
doing root cause analysis of them.
- Debugged problems with scalability in third party libraries.
-
Helped grow the company from a handful employees to 40+, working
with the organizational issues along the way.
-
Worked close with customers as a tech lead in several projects.
-
Worked with with technologies such as SAML, LTI, SCORM and IMS.
-
Oversaw the introduction of and continued development using Spring
Framework and Hibernate to replace a custom in-house framework.
-
Developed a custom test engine, where users could submit server
side evaluated javascript to parametrise exam questions.
-
Drove and oversaw the migration to java 1.5, 1.6, 1.7 and 1.8.
-
Drove and oversaw the migration from cvs to subversion to git.
-
Responsible for adding new and updating most third-party library
components used in the system.
-
Worked as the main developer of an Android and iOS app with over
400k swedish users, developing both the app itself and the
server-side API:s.
-
Implemented an ffmpeg backed converter from various media formats to
formats more easily viewable on various devices.
-
Implemented a custom in-house build server, and later assisted in
the migration to first TeamCity and then Jenkins.
-
Worked with adapting the system to fulfill GDPR requirements.
-
2003 to 2005: Substitute teacher in physics and mathematics at
gymnasiums, Stockholm.
Side projects
-
Have developed Termux, an open source Android terminal emulator and Linux
environment app with millions of users. A large number of traditional
Linux command-line packages has been ported to run directly on android
using the bionic libc, with portability patches submitted to and
accepted by upstream projects such as apt, aria2, dpkg, cairo, fish,
gstreamer, greenlet, make, neovim, openssh, subversion, vim and more.
Debugged and fixed several low level issues with regards to how traditional
Linux software interacted with the Android environment.
Helped the Android bionic and NDK teams to increase portability and
correctness of their libc implementation and interface.
-
Created rust-script, an open source rust project to be able to run
self-contained rust source files as script, based on an earlier cargo-script which
is no longer maintained.
-
Contributed to wgpu, a rust implementation of the WebGPU standard.
-
Have created optimised Rust solutions to Advent of Code problems in all years,
demonstrating how to use deploy the solutions as HTTP and gRPC services to Cloudflare Workers
and fly.io, compiling the solutions WebAssembly for.
-
Have developed an Android app which applies GLSL-based image filters to
a live camera preview, with an embedded http server with a web based UI
to edit and submit GLSL with immediate effect used during development.
-
Have developed and published a number of minor Android apps (small games
and utilities).
-
Created a small cross-platform C++ layer to access OpenGL and basic font
rendering and audio functionality across Android, macOS and X11 on Linux,
used in a personal hobby project shoot em up game.
-
Have written EclipseScript, an Eclipse plug-in for scripting the IDE
using javascript with a custom classloader which loaded eclipse plug-ins
on demand, which was used by several companies internally.
-
Have written EclipseCoder, an Eclipse plug-in to be used while competing
or practicing at the TopCoder online algorithm competition, used by hundreds
of contestants.
-
Have written minor utility programs in java using a swing user interface
and deployed with java web start.
-
Have written a cmd ioslave for use with the Konqueror web browser using
the the Qt and KDE C++ class libraries.
-
Have written a mouse tracker for X11 using Python and Qt which
visualised cursor position statistics with heatmaps.
-
Have written a command-line directory event notifier for Linux in C++
using the dnotify kernel mechanism.
-
Have written a number of toy javascript games using a javascript
frontend and a PHP/MySQL backend.
- Have written some J2ME games in the olden days.
-
Have written a tool for managing test cases using Apache Derby as
embedded database and Jetty as embedded server.
Formal education
-
1999-2003: Master of Science in Natural Sciences - Theoretical Physics.
Linköping University.
-
2004-2005: Java Programming and Software Development. Jensen Education.