Delen
Bewaren

Thijs

Software Engineer
nog geen reviews Geleen

Over deze freelancer

I'm an independent software developer, interested in everything ranging from creating a proof of concept to full fledged product development.I'm a fast learner who is able to solve complex and time critical challenges. Specialties: C, C++, C#, Python, GIT, Agile (Scrum, TDD, XP)Application development, protocol specification, interface design, inter-process communication.


Opleiding

H
2004 — 2008
HBO Technische Informatica
Hogeschool Zuyd Heerlen


Werk & Ervaring

F
01-01-2025 — heden
Full stack developer
Lasso Concepten

Responsible for implementing new functionality based on customer requests and extending/improving/automating background maintenance tasks. Environment / programming languages / technologies: - Linux, git, Python, PostgreSQL, Angular

S
01-12-2019 — 30-09-2025
Senior Software Designer
Canon Production Printing

As part of the Engine Integration team I’m responsible for impact analysis, interface- and design proposals during the initial phase of new features. This includes multiple weekly alignment meetings with Japanese colleagues. Next to that I’m actively involved in implementation and planning for the feature functionality and acceptance testing before delivering the feature to the project. Daily activities range from creating interface proposal, writing feature specifications, analyzing defects to implementing new functionality and writing unit tests. Environment / programming languages / technologies: - C++, C#, Java, Python, Powershell, git, XML, XSLT, Python

S
01-11-2022 — 31-08-2023
Software engineer / iOS USB Driver developer
Philips Ultrasound (via Mediatastisch)

Started as a consultant to assist in a feasibility study for supporting an existing product (using Apple’s Lightning connector/interface) on newer iOS devices with USB-C. My efforts transitioned into developing a fully functional prototype USB-C driver for iOS to connect to and communicate with the existing product on the new iOS devices. The assignment was completed by transferring the developed iOS USB-C driver to the end-customer. Environment / programming languages / technologies: - Objective-C, Swift, USB, git

M
01-12-2020 — 30-09-2022
Maintenance engineer / Full stack developer
Lasso Concepten

Joined as a maintenance engineer within the Lasso+ administrative software package, my early main focus was analyzing and fixing issues in the existing software. This was later extended to implementing new functionality requested by customers and extending/improving background maintenance tasks to enlighten the support activities. Environment / programming languages / technologies: - Linux, git, Python, PostgreSQL, Angular

S
01-01-2018 — 30-11-2019
Software Team Lead / Senior Software Designer / Agile Coach
Heidenhain Numeric B.V.

Responsible for starting up a new multi-site team within the organization to develop a new software product to benefit the end clients of the head organization DR. JOHANNES HEIDENHAIN GmbH. The new product, an OPC UA Server, provides an industry standard compliant data model interface to enable clients to generically manage and operate multiple NC machines in a production site. At the start of the project I have introduced several aspects of agile software development; the SCRUM methodology (sprints on a 3 weeks basis, including weekly backlog grooming meetings, sprint reviews and retrospectives at the end of every sprint and daily standup) and test driven development. During the first year of the project I have been coaching on the agile development process and eventually two permanent staff members have followed courses to fill in the roles of product owner and scrum master in the project. I was also given the liberty to introduce newer / more modern technologies into the organization, and have used that to introduce git version control - using git flow for proper branch and release management - and configuration management via Jenkins CI. I have actively configured and maintained this Jenkins server during the project. Over the course of two years the team has grown from 1 developer (me) and an OPC UA consultant / information model designer to 5 software engineers. Within this team I was lead designer/architect and main responsible for the software architecture of the developed OPC UA Server. The official release of the OPC UA Server has been achieved and announced during the EMO exposition in Hannover in September 2019. This server is fully implemented in C++11 (C++17 was introduced in 2019) in a linux-based environment that includes real time extensions. Next to that I have implemented a framework that allows the team to easily add extensive module tests for new features and have contributed to extending the existing, python based, system test framework that is used within the company to contain a proper interface for OPC UA connectivity. Environment: - Linux, git, Jenkins CI, gmock, gtest Programming languages / technologies: - OPC-UA, C++11/C++17, python, xml, bash

E
01-08-2017 — 31-01-2018
Embedded Software Engineer
Blue Engineering

As an embedded software engineer I’m responsible for design, implementation and planning for proof-of-concepts (for potential new projects), prototypes and end-products. Next to that I’m involved in protocol definition (with focus on limited data usage on a (mobile) wireless connection) for communication with server backends. Environment: - Microchip MPLab IDE, PIC16F range microcontrollers, git Programming languages / technologies: - C, I2C, UART, SPI

S
01-10-2016 — 31-12-2017
Senior Software Engineer
Océ Technologies

As part of the PRISMAsync Smart Color team I’m responsible for impact analysis, interface- and design proposals during the initial phase of new features. Next to that I’m actively involved in implementation and planning for the feature functionality and acceptance testing before delivering the feature to the project. I’m also working on tooling for statemachine generation and maintaining the IPC protocol stack used in the project. The IPC protocol stack supports inter-process communication between 32 and 64 bit processes and communication between different domains/languages (C++, C#, Java, Typescript). Environment: - Visual Studio, TFS, Eclipse, MPS, VS-Code Programming languages / technologies: - C++ (C++11), C#, java, python, xml, xslt, AngularJS, IPC

S
01-01-2016 — 30-09-2016
Software Engineer
Océ Technologies

In the Print Data Handling team I’m implementing defined features in the existing software. These features include: - Distributed Preview Generation (including implementing proprietary image (de)compression algorithms) - Print Job Duration Prediction - Advanced Color Management Environment: - Visual Studio, TFS Programming languages / technologies: - C++ (C++11), C#, IPC

S
01-10-2015 — 31-12-2015
System Tester
Océ Technologies

As a product tester I’m responsible for acceptance testing implemented features to approve delivery to the mainline. As part of testing the features I also create automated system tests (python). Environment: - Python, TFS, Perl, Postscript

S
01-06-2014 — 30-09-2015
Software Engineer
Océ Technologies

As a feature owner in the Engine Integration team I’m responsible for: - Impact analysis, design and implementation for new printer functionality - Weekly interface discussions with Canon Tokyo - Impact analysis, design and implementation for new PRISMAsync controller functionality - USB connection stability troubleshooting and improvement (USB bus analysis and test application development) Environment: - Scrum, TDD, Team Foundation Server, Windows Embedded, Synergy CM Programming languages / technologies: - C++, C, Java, C#, Python, PowerShell

S
01-02-2014 — 30-04-2014
Software Designer
Philips Cinelight Venture

The Cinelight venture develops a light control system for cinemas. The systems adds special light effects to (alternative) content being played in the cinema. These effect should create an environment in which visitors experience the show as if they are present at the live concert/opera performance. I was responsible for design and implementation of the light control system. This is system is able to create light effects in the cinema, based on incoming messages (from the projector). Responsibilities and tasks in the project: - Protocol specification for webserver communication towards the system and implementation and handling of incoming messages according to this specification - Design and implementation of a time-synchronised light control system - Decoding of images and video animations and fading between colors, images and animation. This includes converting pixel data to light effects. Environment: - Scrum, TDD - GIT, Code::Blocks, C++, Jenkins, Linux

S
01-02-2013 — 31-01-2014
Software engineer
Philips Innovation Services (via CGI)

Within Philips Innovation Services, I worked withing the Connectivity Team. This team specialises in communication protocols, network stack development and wireless communication and connectivity. The projects that run in this team are mainly for Philips Research, but also Philips Lighting. Main responsibility was stack development for a wireless mesh network based on the 802.15.4 standard. This stack will regularly be released towards Philips Lighting for use in their products. Next to the stack development, there are running several side tracks together with Philips Research to investigate new features to build on top of these kinds of low power mesh networks (both line and star topologies). For research I maintained two test deployments (between 80-260 nodes) in which the network nodes control street luminaires and are gathering sensor data to investigate light on demand scenarios to facilitate energy savings. The test networks can be controlled via a WPF management application, which is constantly being improved and extended. Tasks during this project are: - Planning and tracking - Requirement specification together with the researcher - C#/WPF development - C development (network stack and on target application code) - SCM (Continuous Integration server, GIT archive management, build environment) - Scrum, TDD, XP

E
01-08-2012 — 31-01-2013
Embedded software engineer
Philips Innovation Service (via CGI)

Within Philips Innovation Services, I was working within the MARS Team. This team is specialised in developing embedded software and development support for Philips Research. The biggest project i was working on is also a supporting project for Philips Research. At the start of the project there was both software and hardware available to create a complete system in which lamps are able to identify themselves on the network and respond to UDP messages. Next to this there is an application for Android smartphones to control these lamps (via UDP). The main goal of the project is to professionalize the software and hardware in order to be productized for market. This comprises also the possibility to advice new hardware and a reimplementation of the complete software stack. Next to this, the communication protocol has to be changed. Instead of responding to UDP messages, each lamp will be running its own REST server, which can be accessed via the smartphone. Tasks during this project are: - Porting of Contiki OS to a Cortex M3 (NXP LPC1769) based platform - Implementing an Ethernet stack for this platform - Implementation of the CoAP protocol to enable REST communication via UDP - RESTful server implementation conforming to a specification that will be supplied by Philips Lighting

M
01-07-2011 — 31-07-2012
Mobile Application Developer
Philips Innovation Services (via CGI)

Within Philips Innovation Services, I was working within the Mobile Apps Competence Team. This team is specialised in developing mobile applications for both iOS and Android based devices. During several, both small and bigger, projects, Thijs has been developing several applications for both iOS and Android. These projects comprised of very different areas of expertise, amongst others: - Image processing - RESTfull service communication (JSON) - QR code detection - NFC communicatie (both passive (tags) and active) - Bluetooth communication - Android USB communication Programming languages: - Objective C (iOS-SDK) - Java (Android) - C, C++

S
01-04-2011 — 31-07-2011
Software engineer
TPO Displays (via Logica/CGI)

Android demonstrator with interrupt driven i2c multi-touch driver TPO has developed a new touch panel, with multi-touch support for up to ten fingers. The panel also contains three soft-touch buttons. The most important criteria for the driver is to be able to process the event data within a panel’s scan period (160Hz). For this new touch panel, I have written an interrupt driven device driver for Linux. The touch panel only generates an interrupt whenever it detects a touch pointer during a scan period. The driver will react to this interrupt by starting to read event data via the i2c bus from the touch panel. The read event data will be injected into the OS via the Linux Multi-Touch Protocol. Even with a one month dead-line and hardware problems, I was able to give a fully functional Android demonstrator. I installed several applications on the BaseBand development board to visualize the touch events. The applications show finger tracking and are able to draw lines for the touch events (to check precision). I also made the soft-touch buttons useable within the Android OS. After that one month, I have worked on a second assignment on which he extended the driver’s capabilities. Most important extension to the driver was to make it possible to adjust the driver’s settings from within a user application (e.g. adjust the touch calibration data). I hvae also implemented a small Android app which shows how to adjust the driver’s settings from outside the kernel.

S
01-08-2009 — 31-01-2011
Software engineer - SPiTS project
TomTom

SPITS is a Dutch project creating Intelligent Traffic Systems concepts that can improve mobility and safety. The project focuses on traffic management, in-vehicle solutions and service download and management solutions. TomTom has created an in-car system for navigation, entertainment and connection to the SPITS services. The system is able to supply the driver of a vehicle with real-time traffic information and valuable information about the car. I worked as software engineer on the hardware layer, the hardware abstraction layer parts of the system and the Application layer. More specifically the activities included: - Porting Android (Linux kernel) to a new ARM-based platform. - Creating and porting device drivers to the new platform (USB, GPS, 3G modem). - Integrating power management support from another linux kernel. - Connecting the user space API’s to the hardware libraries to be able to use sensor/GPS data in user applications. - Creating demonstrator applications and widgets on the Android platform to show customers how to use several hardware API’s from Android. Next to these activities I have also contributed to several performance improvement case studies (for more fluent UI-interaction and better graphics performance) and submitted bug fixes back to the Linux community. I have successfully ported the drivers for USB streaming, USB displays, touchscreens, GPS and 3G to the new ARM platform. Next to this he has integrated power management code to successfully suspend the device for low power consumption. The demonstrator applications and widgets are used multiple times to show to potential customers of the system.

S
01-03-2009 — 31-07-2009
Software engineer / USB device driver developer
TomTom

The NaviBox was a new device concept within TomTom. Such a device is almost the same as the normal TomTom PND´s, except for having no screen. It will stream its images via USB to a connected host. The device can be build in to a car and connected to the in-car entertainment system via USB. The images will be shown on the dashboard screen, and the audio will be played via the car’s radio system. I worked as a software engineer on the USB drivers for both the NaviBox device and a demonstrator in-car system. These activities included: - Fix bugs and improve performance within the USB drivers on the NaviBox. - Implementing USB Class Drivers for video, audio and hid for an ARM based development board running Linux and QNX. - Create a viewer tool to play the video/audio streams and emulate hid events (touchscreen) to the NaviBox device. Hid events consisted of touchscreen, keyboard and NMEA-data events. An ARM11-based development board is used to show the results. I was able to successfully control a NaviBox device via USB from the viewer tool. This tool is running on the ARM11 platform running Linux or QNX.

S
01-12-2008 — 28-02-2009
Software designer / SDK Developer
TomTom

TomTom uses a communication framework for inter process communication written in C. Since they started developing Java applications it has become necessary to be able to use this communication platform from Java. I worked as a software engineer on developing an SDK for simple use of the communication framework from within Java applications. Activities during this project included: - Research on how to use C/C++ code from Java - Build C++ wrapper code around the C API, for easy translation to other OO-languages (Java) - Create a simple and generic structure to use the wrapping tools (SWIG) on multiple C libraries for JNI code generation. - Document the work and steps to do for generating the JNI and Java code. I have been able to create a C++ layer on top of the C API which is used by the SWIG wrapping tool to generate JNI and Java code.


Certificeringen


Portfolio

€ 90 / uur
  • Locatie Geleen
  • Categorie Development & IT
  • Geverifieerd ongeverifieerd
  • Lid Sinds 14-10-2025