For me it's important to develop programs that are intuitive and easy to use – software you’d enjoy using.
I take pride in writing high-quality code that is easy to understand, works well, is efficient, and has a high level of maintainability.
I'm interested in challenging tasks that require innovation and creativity to solve.
Summary
- Computer engineer with in-depth experience of planning, designing, implementing, testing and maintaining large object-oriented software systems.
- Knowledge of developing tools for debugging, tracing and instrumenting embedded telecom systems.
- Seasoned web developer with insight into database design, server- and client-side programming, communications protocols and network security.
- Experience designing and developing scalable, high-performance, parallelised software.
- A team player who works well under pressure and strives to deliver within deadlines.
- Quick at grasping new technologies, concepts and programming languages.
Technical Expertise
C++ (STL, Boost, POCO, wxWidgets, CppUnit) • C (GNU Make, GDB, CUnit) • Java • Python
Embedded systems (JTAG, Real-time trace, Assembly) • Parallel programming (MPI, Pthreads)
Web development (HTML, CSS, JavaScript, jQuery) • PHP • Ruby (Ruby on Rails, Capistrano)
MySQL (Database design, Stored procedures, Replication, Query optimisation)
Repositories (GIT, Gerrit, SVN) • Protocols (HTTP, SMTP, Sockets)
Software design (OOP, UML, Design patterns, Unit testing)
Linux • Regexp • Scripting (Bash, Perl)
Professional Experience
Software Engineering Consultant
Altran, Stockholm, Sweden
September 2013 – August 2017
Altran
is a global consulting company focusing on technology and innovation.
As a consultant at Altran, I have had two different assignments:
the first one at the Swedish National Archives and the second one at Ericsson.
Ericsson
April 2014 – July 2017
Ericsson
is a multinational provider of communications technology and services. At Ericsson I developed debugging and instrumentation tools for radio base stations used for current 4G and upcoming 5G mobile networks. They are massively parallel multicore embedded systems running Ericsson-proprietary hardware and software.
- Implemented new debugger functionality for interacting with the hardware via JTAG and adapted the debugger to handle new generations of hardware.
- Improved an on-device debug server, written in C++, to support a more efficient network protocol.
- Refactored and built a modular, multi-threaded software tool in C for decoding and converting real-time trace data between different formats, e.g. to Common Trace Format (CTF) for graphical visualisation in Trace Compass/Eclipse.
- Designed an instrumentation trace protocol for measuring the performance of baseband code, memory usage, and core and accelerator utilisation levels.
- Acted as Scrum master in my team.
- Responsible for managing, building and releasing new versions of the debugging toolkit.
- Collaborated with different teams around continuous integration via Jenkins and finding regression faults.
- Implemented test cases in Assembly code and Embedded C for testing various debugger features and wrote various scripts in Bash, Perl and Python.
Swedish National Archives (Riksarkivet)
November 2013 – March 2014
The Swedish National Archives
have a production facility where written media, such as books and newspapers, are digitised.
The material is processed in batches going through a number of processing steps where it is either handled by a human operator (e.g. scanned) or by a computer program (e.g. OCR-interpreted).
There I worked in a Scrum team developing this processing system.
- Developed new batch processing steps (in command-line PHP) to be run as background processes on a Linux server.
- Implemented stored MySQL procedures, functions and triggers for manipulating data in the database.
- Built a subsystem for asynchronous handling and queuing of API calls to external web services.
- Implemented an XML validator in Java for validating XML output produced by the system.
- Constructed a GUI tool to facilitate visualising, creating and connecting new process steps in a diagram fashion.
Software Developer
JobReady Solutions, Sydney, Australia
October 2010 – April 2013
The JobReady RTO product is a web-based student management system designed for Australian training organisations. It maintains information about courses, student enrolments, as well as provides tools for messaging, invoicing and reporting.
- Developed new back-end functionality in Ruby on Rails, handled database design in MySQL and wrote responsive user interfaces in JavaScript and jQuery.
- Designed and implemented an advanced report builder tool, with which the user can construct his or her own reports, adding data models and fields and specifying query filters, and plotting the result as various graphs.
- Built a module for reporting training activity to the government that is also able to forecast claimable government funding and record actual funding received.
- Implemented an applications form builder and system for applying to courses on-line.
- Maintained a subsystem written in Java for generating PDF documents.
- Liaised with customers and wrote technical specifications for client-requested custom development.
Researcher – ASAMA project
Åbo Akademi University, Turku, Finland
February 2010 – July 2010
ASAMA was a research project that explored and developed a utility for automatic categorisation of large software repositories.
- Researched relevant scientific literature and studied suitable methodologies.
- Outlined requirements and discussed study findings with the client.
- Utilised the LLVM framework to implement analysis modules in C++ that mined information from large code bases.
- Designed and implemented statistics-gathering programs in Python that could generate comprehensive text- and graphics-based statistics.
- Set up test cases and evaluated the results produced by the categorisation utility.
Researcher – SUSWOOD project
Åbo Akademi University, Turku, Finland
April 2009 – December 2009
SUSWOOD was a research project that designed and implemented a highly efficient, parallelised forest simulator that could simulate forest growth and the effects of different harvest schemes.
- Collaborated with forestry researchers and statisticians to transform the domain knowledge into program code.
- Developed a forest simulator in C++ utilising advanced code-optimisation techniques and MPI for parallelisation.
- Tested the simulator and verified its correctness, efficiency and parallelism.
- Successfully ran the simulator on 1,024 processors on Louhi, a supercomputer at the IT Centre for Science in Helsinki.
- Participated in devising, implementing and testing novel algorithms for: (1) highly efficient computation of large amounts of correlated random numbers, and (2) simulating thinning of forest stands
- Wrote a master's thesis on my work on the simulator.
Web Developer
Anvia Oy, Vaasa, Finland
May 2008 – August 2008
Anvia is a national Finnish telecommunications company with its headquarters in Vaasa. Anvia acquired the e-commerce solution, which I had previously developed, from DigiComp in 2008 to be used on Anvia's own web site as well as a product solution for their corporate customers.
- Adapted the system to work with the company's internal product database.
- Installed the system in two of Anvia's outlets to be used as a point-of-sale system.
- Modified the server back-end (PHP and MySQL) and the web front-end to be fully customisable so that the software could be offered to corporate customers as a tailor-made solution.
- Interfaced with clients and implemented the e-commerce solution at two client locations.
Web Developer
DigiComp Finland Oy, Vaasa, Finland
May 2004 – March 2008
DigiComp was a Finnish retailer that sold computers, computer parts, accessories and software through a web shop as well as a few local shops.
- Developed and maintained the company's e-commerce system, which comprised a web shop and an internal system for order, product and customer relationships management.
- Handled database design in MySQL, programming of server-side business logic in PHP as well as client-side web design in HTML, CSS and JavaScript.
- Implemented a background process in C++ for automatically updating product descriptions from online data.
- Took own initiatives and facilitated the work of other employees by developing new administration tools and making existing functionality easier to use.
- Implemented a new, more aesthetically pleasing and user-friendly web site design in 2006, which had a profoundly positive impact on the company's turnover.
- Re-wrote the web site's product search engine to be faster and yield more relevant search results.
Education
Master of Science in Computer Technology
Åbo Akademi University, Turku, Finland
April 2010
- Main subject: Embedded Systems
- Secondary subject: High-Performance Computing
- GPA: 4.61 / 5.0, with distinction
Bachelor of Science in Computer Technology
Åbo Akademi University, Turku, Finland
June 2008
- Main subject: Software Engineering
- Secondary subject: Embedded Systems