Dirk Raffel, Freelance Software Consultant


20 years professional experience as Software Consultant, Technical Lead and Head of Development. Expertise in application areas such as public transport, railway technology, automotive and traffic telematics.

Primarily focused on systems development and software architecture design for technical solutions, particularly on-board computers, automatic passenger counting (APC), back office APC software, passenger information systems (PIS), infotainment solutions, multimedia streaming, text-to-speech systems, web applications, webGIS, AVL systems and automotive applications.



Date of birth



Jan 1990 – Jan 1996

University Duisburg-Essen, Duisburg, Germany
Diploma (Dipl.-Ing., comparable to M.Sc.) in Electr. Engineering, with a concentration in Communications Engineering
(grade: very good, equivalent: A)
Thesis at Institute of Microelectronic Circuits and Systems (IMS), Fraunhofer-Society, Duisburg: “Conceptual Optimization of Custom-Designed Systems by Application of Mathematical, Petri Net based Analysis Techniques”.


Grinewitschus, Viktor; Raffel, Dirk; 1999. Method for controlling a direct current drive. U.S. Patent 6,005,361, filed July 13, 1998, and issued December 21, 1999.
International Patent PCT/EP1996/005850 issued July 24, 1997.
Assigned to Fraunhofer-Society (resulting from student research project thesis at Fraunhofer Institute of Microelectronic Circuits and Systems, Duisburg: Design and Implementation of a Method for Model Based Fault Detection for Direct Current Drives).

Professional Experience

Apr 2014 – present

Freelance Software Consultant, Details are available on request only.
As software consultant responsible for development of a custom back office APC software (automatic passenger counting) for swiss railway operators. Development of a powerful Business Intelligence (BI) reporting solution using Map-Reduce methods. Integration of external data warehouses.
Technologies: Full-Stack JavaScript, Node.js, Crossfilter, Reductio, Backbone.js, Semantic UI, d3.js, Leaflet, Mapbox, Java/J2EE, Tomcat, Websphere, Oracle, SQL Server.

Jan 2011 – Jun 2016

Freelance Software Consultant, Bombardier Transportation
As software consultant responsible for architecture and development of an offline web mapping solution for displaying the train’s route and current GPS position on interior TFT panels in the train for visual passenger information. Fully based on open source geospatial/GIS technologies.
Technologies: MapServer, WMS, TileCache, GeoJSON, OpenLayers, Proj4js, QGIS, GDAL/OGR, PostgreSQL, PostGIS, pgRouting, JavaScript, Backbone.js, jQuery, RequireJS, lighttpd, WebKit.

Sep 2010 – Jun 2016

Freelance Software Consultant, Bombardier Transportation
Spearheaded novel architecture of a browser-based infotainment web application using cutting-edge web technologies for realizing visual passenger information on interior TFT panels in local trains.
Features include dynamic route depiction related to the train’s position along the actual journey and visualization of connecting information et al. Safe inclusion of downloaded third-party scripted pages by verification of ADsafe compliance.
Technologies: JavaScript, Backbone.js, RequireJS, Node.js, express,, ADsafe, jQuery, inputEx, YUI, JSON, JSON schema, WebKit, WebSockets, lighttpd, C++.

Aug 2010 – Dec 2015

Freelance Software Consultant, Bombardier Transportation
Audio/Video streaming and TTS Announcements in trains.
As software consultant responsible for integration of a text-to-speech (TTS) engine (Nuance Vocalizer for Automotive) for audio announcements in the train. Concept and development of a RTSP streaming server for on-demand streaming of pre-recorded audio/video files and live audio from TTS voice output to the onboard infotainment and audio system.
Technologies: PowerPC platform, Embedded Linux, C++, GCC, Boost, Qt 4, Lua 5.1, JavaScript, jQuery, jQuery UI, JSON, AJAX, FastCGI, lighttpd, Live555 library, RTSP/RTP protocols, Nuance Vocalizer for Automotive.

Jul 2008 – Jul 2015

Freelance Software Consultant, Bombardier Transportation
APC System (Automatic Passenger Counting) for trains.
Software consultant for development of an on-board system for passenger counting and trip analysis (APC) in rail vehicles, based on the IP-Train Ethernet Network – Bombardier MITRAC Train Control and Management System (TCMS), and also involved in reengineering of passenger information systems (PIS). Usage of the Bombardier IPTCom Ethernet Communication Stack for Railway applications for communication with various system components in the train.
System programming in C++ with Boost, Qt 4 on an embedded Linux/PowerPC platform.
Modeling of software architecture in UML with Enterprise Architect.
Integration of the on-board APC system into a back office solution using GPRS train-to-wayside communication.
Technologies: PowerPC platform, Embedded Linux, C++, GCC, Boost, Qt 4, XBinder, Lua 5.1, UML, SysML, Enterprise Architect, JavaScript, jQuery, jQuery UI, JSON, AJAX, FastCGI, lighttpd.

Mar 2008 – Jun 2008

Freelance Software Consultant, EFKON Germany GmbH, EFKON AG
In-Vehicle Telematics Platform for Tolling Systems.
Specified and designed an application layer protocol for the reliable exchange of data between the On Board Unit and the Electronic Tolling Back Office on top of TLS/TCP via GSM/GPRS. Streaming of XDR-marshalled accounting records similar to RFC 3423 (XACCT’s CRANE protocol). POSIX reference implementation using GnuTLS. Software specifications for CEN TC278-compliant DSRC communication with suitable roadside equipment (augmentation beacons, mobile and stationary enforcement units).
Technologies: Linux, C, POSIX, pthreads, XDR, rpcgen, GnuTLS, Valgrind, Doxygen, Enterprise Architect (Sparx Systems).

Jan 2004 – Mar 2008

Head of Development, DILAX Intelcom GmbH
Enterprise Web Application for APC Data Management.
Designed a novel algorithm for the matching of data runs from public transport vehicles against public transit route networks and scheduled timetables. The algorithm uses dynamic programming methods based on the Viterbi algorithm, recursive automatons, quadtree optimizations, coordinate system transformations.
Prototype of a web-based map viewer with OpenLayers/WMS+UMNMapServer.
Designed a multi-dimensional cross tabulation report engine for display of statistical figures, including user-definable classification of values, subtotals for groups, export to Excel and as ESRI Shapefile, support for templates.
Other features: LDAP integration with JAAS, Job Scheduling with Quartz. Vehicle management, import of scheduled timetables including daily changes.
Technologies: Linux, Windows, Java, J2EE, Tomcat, JAAS, JSF, AJAX-enabled JSF components, JNDI, iBATIS persistence framework, Spring, Quartz, SQL Server, GeoTools, OpenMap, Graphviz, JExcelAPI, Colt, JScience (JSR-275 Units/Quantities).

Sep 2001 – Mar 2008

Head of Development, DILAX Intelcom GmbH
Permanent Position
– Working for an international market leader for systems for passenger counting and trip analysis in public transport vehicles & leading OEM supplier to train manufacturers.
– Received Prokura (general power of attorney) 11/2003.
– Responsible for research, design and development of in-house projects.
– Led a team of up to 8 developers. Team-oriented, consensus-building management style.
– Responsible for development department during the ISO 9001:2000 certification process.

Jul 2007 – Nov 2007

Head of Development, DILAX Intelcom GmbH
Automatic Passenger Counting Device.
Development/porting of firmware for a device for automatic passenger counting in public transport trains and integration in the IP-Train Ethernet Network – Bombardier MITRAC Train Control and Management System (TCMS).
OEM development compliant with EN50128:2001 (Software for railway control and protection systems).
Technologies: Freescale ColdFire MCF5208, C, Assembly, Microtec ColdFire Tools, Nucleus RTOS, Eclipse CDT.

Jan 2000 – Jan 2005

Head of Development, DILAX Intelcom GmbH
On-Board APC Vehicle Logic Unit.
Application design in UML using the OOA/OOD CASE tool Rhapsody from I- Logix (now Telelogic). Python scripts for automated tests.
Key features: automatic upload of collected data runs via GSM/GPRS and Internet or 802.11 WLAN to a FTP server, download of new configuration or firmware where required. Online web interface including client-side Java applets for remote management and test of the system. Email notification on failure. Dynamic DNS (RFC 2136) for always-online systems in GPRS custom APN. GPS positioning (NMEA 0183). HMAC-SHA1 authentication, gzip compression of raw data files.
ONC/RPC protocol (RFCs1831,1832) for APC integration in an Ethernet-based Inter-vehicle communication platform (Bombardier Transportation).
Numerous other, partly international projects for APC integration with passenger information systems via different communication media (e.g. Ethernet, MVB vehicle bus, VDV-IBIS and SAE-J1708/J1587).
The system is used successfully on many thousand busses and trains and by more than 180 public transport companies in Europe, the U.S. and Canada.
Technologies: Freescale MC68360 (QUICC), C++, C, Assembly, Diab compiler, Single-Step debugger, Nucleus RTOS (kernel, TCP/IP stack, web server, file system), Rhapsody, Python.

Jan 2002 – Jun 2002

Head of Development, DILAX Intelcom GmbH
Application for APC data management.
Maintenance & improvements of a desktop database application for data from APC systems.
Development of a COM server DLL for estimation of linear regression parameters based on verification count samples. Implemented perl scripts for least squares method and paired t-test.
Development of a COM server DLL for solving optimization problems, based on the WNLIB library using the conjugate-gradients method.
Implemented a perl script for the import of binary raw data files which is built as ActiveX DLL.
Maintenance of COM server DLLs for import of raw data and transformation of collected data runs in reference to timetable data.
Technologies: Windows, C++, STL, ATL/COM, OLE DB consumer templates, SQL Server, Oracle, Visual Studio 6, SourceSafe, ActivePerl, Perl DBI, Perl XS.

Sep 1996 – Sep 2001

Head of Software Development, Software Development Engineer, DILAX Intelcom AG
Permanent Position
– Working for an international market leader for fully automated systems for passenger counting and trip analysis in public transport vehicles in Switzerland (predecessor company).
– First working as software development engineer for embedded software, then head of software development since 09/1999.
– Received Kollektiv-Prokura (joint power of attorney) 05/2001.

May 1998 – Jan 2000

Software Development Engineer, DILAX Intelcom AG
Automatic Passenger Counting Device.
Developed firmware for a networking device for automatic passenger counting which controls and monitors a chain of door sensors and digital input modules and determines the number of persons passing through on a direction-dependent basis.
Implemented a proprietary networking protocol based on RS-485.
Improved the algorithm for better detection of multiple persons.
Technologies: Freescale MC68LC302, C, Assembly (Motorola 68000), Diab compiler, SingleStep debugger, Nucleus PLUS kernel, Microsoft Visual Studio & Nucleus EDE.

Sep 1996 – Jan 1999

Software Development Engineer, DILAX Intelcom AG
Mobile Applications for Public Transport Vehicles
Maintained and improved an inhouse proprietary real-time kernel and applications used in systems for passenger counting, onboard vehicle computers and onboard ticket printers for public transport vehicles.
Customer-specific development, support for multiple hardware variants.
Optimization of real-time kernel, maintenance of an interpreter (runtime environment) of a proprietary high-level language with simple object-oriented concepts.
Petrinet based modelling of the event-driven program flow using timed petri nets and implementation of the model in software.
Integrated a radio data transmission controller for wireless data transfer from vehicles to data collection terminals. Programmed a flash card reader/writer for contactless flash data cards.
Technologies: C, Assembly (Motorola 6800), IAR C Compiler, Microsoft C 6.0, Visual Object Net++, PVCS revision control system.


Embedded and Real-Time Systems:
– Embedded Linux, Mentor Nucleus OS and proprietary RTOS, incl. device driver, BSP and kernel development, TCP/IP stack, socket programming, multithreading.
– Software development with several microcontrollers (Freescale QUICC, Coldfire, and others) on custom hardware.

Protocols and Field Bus Standards:
– Networking: IP, TCP, UDP, PPP, PAP/CHAP, HTTP, FTP, TELNET, SMTP, ONC/RPC (RFCs 1831, 1832), RTSP/RTP, DHCP, DNS, Dynamic DNS (RFC 2136), SNTP, GPS (NMEA 0183), GSM/GPRS, 802.11 WLAN
– Transport industry protocols: TCMS, IPTCom, MVB vehicle bus, SAE-J1708/J1587, VDV-IBIS.

Programming Languages, Platforms, Frameworks, APIs:
– C, C++ (Boost, STL, Qt 4, POSIX, Rhapsody OXF, ATL/COM/OLE DB)
– Java 5, J2EE (Tomcat 5.x, JSP, Servlets, Filter, JAAS, JSF, Netbeans Visual Web Pack, Apache Struts, Apache Commons, Log4J, JUnit, JDBC, JNDI, iBATIS Persistence Framework, Spring, JExcelAPI, XStream, JScience, Colt)
– Perl 5.x (CPAN, GD, DBI, Threads, Perl XS, Activestate Perl)
– Other: Lua 5.1, Python, Assembly

Web Development:
– Full-Stack JavaScript (e.g. Yeoman, Grunt, Bower, Node.js, Express, forever, async, Backbone.js, Underscore/Lo-Dash, Crossfilter, Reductio, d3.js, Semantic UI, Bootstrap 3.x, jQuery, YUI, inputEx)
– AJAX, WebSocket, JSON, JSON schema, XML, HTML5, CSS3
– Apache, Lighttpd, FastCGI

GIS, Web Mapping:
– UMN MapServer, TileCache, WMS, GML, OpenLayers, PostGIS, pgRouting, GDAL/OGR, GeoTools, Quantum GIS (QGIS)

– PostgreSQL, SQL Server, Oracle, MySQL, HSQLDB

Version Control and Software Configuration Management:
– Git, Subversion, CVS, ClearCase, PVCS, ClearQuest, Bugzilla

Development Tools:
– Vim, sed, awk, bash, GNU make, GCC Toolchain, gdb, Valgrind
– ant, maven, Eclipse, Netbeans
– Rhapsody (I-Logix, now Telelogic), Enterprise Architect (Sparx Systems)
– Diab compiler m68k, Microtec ColdFire Tools, SingleStep debugger, and others

Productivity Applications:
– LaTeX, OpenOffice, MS Office, MS Project, TWiki

– EN50128:2001 (Software for railway control and protection systems), EN ISO9001:2000

Operating Systems:
– GNU/Linux, Mac OS X, Windows (Mac OS X or other Unix-like environment preferred)

– German: mother tongue, English: very good.


Software Consultant, Technical Lead, Project Lead, Head of Development


Application Areas:
– Public Transport, Railway Technology, Automotive/Traffic Telematics

– Linear/Nonlinear Programming, Optimization Problems
– Dynamic Programming, Viterbi Algorithms
– Graph Theory, Petri Nets
– Probability, Random Variables, Stochastic Processes

Computer Science and Engineering:
– OOA/OOD using UML
– Design Patterns (GoF, J2EE)
– Refactoring
– Unit Testing

Professional Affiliations


Available upon request.

Independent software consultant and contractor

%d bloggers like this: