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.