Fredrik Fornwall's CV
An up-to-date version of this CV can be found at
https://fornwall.net/cv/.
Personal details
- Name:
- Fredrik Fornwall
- Year of Birth:
- 1979
- 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, opinionated and hardworking 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 see problems being solved no matter the
difficulties.
Work history
- 2018 to present: Software consultant at Mejsla AB.
-
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 teach lead in teams.
-
Worked with java and SQL load testing and performance optimization.
- Assisted in hiring and training of developers.
- Worked with FreeBSD server maintenance.
-
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.
-
Drove and oversaw the migration to java 1.5, 1.6, 1.7, 1.8 and
(planned) 1.9.
-
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
300k 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.
-
Have worked through several project management techniques - some
working better than others.
-
2003 to 2005: Substitute teacher in physics and mathematics at
gymnasiums, Stockholm.
Skills
-
Experienced java developer having worked over a decade with backend
development.
-
Have worked with refactoring and modernizing massive code bases,
with usage of annotation processing and runtime bytecode generation
to avoid boilerplate.
-
Have troubleshot memory leaks by analyzing heap dumps using Eclipse
Memory Analyzer.
-
Have troubleshot JVM crashes by debugging with gdb and analyzing
core files.
-
Have developed Eclipse plug-ins for internal development tools.
- Enthusiastic about Kotlin as a way forward for java projects.
-
Solid SQL knowledge from working with PostgreSQL, with both complex
hand-written SQL queries as well as using ORM tools.
-
C developer focused on Linux system programming, having worked with
tools such as make, gdb and valgrind.
-
Good knowledge of unix shell scripting, both for writing scripts for
automation and working live on remote servers to troubleshoot system
performance and stability.
-
Have worked with Python for developing utility scripts both for
development utilities and server scripts.
-
Good grasp of C++, with experience using the the Qt class library for
cross-platform GUI development.
Experiences
-
Experience of troubleshooting and optimizing java GC performance on
large servers.
-
Experience of large java frameworks such as Struts, Spring and
Hibernate.
-
Experience optimizing PostgreSQL server performance by tuning the
instance configuration as well as analyzing and rewriting queries.
- Experience of threaded code design and debugging.
- Have set up Docker environments for complex build systems.
-
Experience of working with open source projects, having merged patches
to dozens of notable open source projects.
- Experience of working with Ruby, PHP and Node.js when necessary.
-
Experience of Android app development including using the NDK for native
code.
- Experience of OpenGL ES 2.0 and 3.0 development.
- Good knowledge of algorithms and data structures.
-
Both theoretical knowledge of and practical experience in using design
patterns and component-based development.
- Good knowledge of XML technologies such as XSD, XSLT and XPath.
-
Experience of working with Fortran, Maple and Matlab for numerical
computing.
-
Knowledge of higher mathematics such as analysis, differential
equations, numerical methods, probability theory and statistics as used
within theoretical physics.
Side projects
-
Have developed Termux, an Android terminal emulator and Linux
environment app with over a million 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, subversion, vim and more.
-
Have written EclipseScript, an Eclipse plug-in for scripting the IDE
using javascript with a custom classloader which loaded eclipse plug-ins
on demand.
-
Have written EclipseCoder, an Eclipse plug-in to be used while competing
or practicing at the TopCoder online algorithm competition.
-
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) when Android was new.
-
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 constructed a PHP application for querying historical google
information using the Google web APIs.
-
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.
Personal qualities
- Social and enthusiastic.
- Passionate and opinionated about software development.
- Quick learner.
- Calm and stress-resistant.
Formal education
-
1999-2003: M. Sci. in Natural Sciences - Theoretical Physics.
Linköping University.
-
2004-2005: Java Programming and Software Development. Jensen Education.