deutsch

Projects

Below listed are software projects I worked on since 1999.

Domains

Real Time Pricing

During my 2 years in London between June 2007 and May 2009 I worked within capital markets domain. My most recent experience was a Quant Developer working for CMC Markets.

In a versatile team combining in-depth entrepreneurial, business, quantitative and software engineering expertise I was responsible for a wide range of software architecture and development tasks.

Development was predominately green-field with a lot of internal integration to existing infrastructure. I have played a key part in early phases of projects, elaborated architectures, guided junior developers and have been a main technical contact both to vendor consultants and internal technical stuff.

I can not make further details available to everyone on the Web so I won't expand on the projects here. I was working on mission critical pricing parts which for a market maker such as CMC Markets were of paramount importance.

Of positions I’ve had in the recent past this was definitely the most challenging and satisfying experience working on the dealing floor and reporting directly to a top manager.

FX Trading
Algo Trading

Prior to CMC Markets I was with Progress Software in London where I was part of a global Apama technical services team.

Progress Apama is the leading Complex Event Processing (CEP) platform and a distributed application infrastructure extensively used in algorithmic trading arena. Therefore, vast majority of the Apama clients were from the capital markets domain.

We delivered production strength trading systems and saw them succesfully deployed and used by tier 1 investment banks, broker-dealers etc. The systems were mainly FX trading and/or Smart Order Routing (SOR) applications.

Progress Apama maintains a leadership position in Foreign Exchange arena with its award winning turn-key offering for FX trading incorporating connectivity, algorithms, monitoring and dealing GUIs. On that front, I helped extend, analyse, deliver and document FX solutions for a number of investment banks. I carried out technical analysis of live, revenue sensitive systems focusing on Apama correlator performance and scalability issues.

The projects included significant amount of liaison with the clients and required extensive communication and numerous on-site visists in London and across Europe.

In addition to engagement in client projects I contributed to the Apama platform itself. My previous experiences with a multitude of technologies and languages proved useful for architecture and design of adapters and standard out of the box Apama components. In total I contributed to 5 Apama adapters for following APIs/platforms: FIX, Reuters, Wombat, ICAP EBS developing low latency parts in cross platform C/C+ or Java and high level event-oriented business logic in Apama MonitorScript with some use of Pyhton for automated testing. I also architected and developed generic events persistence/recovery component.

At Progress I accumulated a variety of front office technology and consulting experience.

Toll Enforcement Gantry
A gantry

I worked in Germany for 5 years, between 2002 and 2007. I spend 4 years developing software for toll enforcement gantries. A toll enforcement gantry carries out enforcement procedure for the German Truck Tolling System. There are hundreds of gantries deployed across the German motorway network.

As member of core software development group I worked on the gantry software written in C++. As responsible for acquired vehicle data management and communication modules, I designed data storage structures and have personally programmed more than a hundred thousand lines of code, tested it, written specifications and design documents. Additionally I provided technical leadership, coordinated the work of developers and testers to create test specifications, assisted in the system delivery process. Gantry software was implemented under hard real-time constraints necessary for free flow toll enforcement. I delivered appropriate solutions maintaining a degree of balance between technical innovation and pragmatic design.

On-board units (OBU) employ Dedicated Short Range Communication (DSRC), to communicate with gantries. I developed DSRC communication module for real time handling of OBU data in multi-lane free flow environment.

A Gantry

For the system, I implementated various security software parts. I gained solid working knowledge of security concepts as well as practical skills in cryptographic algorithms and safe coding practices. I contributed actively to the security of the system and played key role in most cryptography related tasks across the project.

Our team used very strong development and delivery process supported by configuration management, version control and error tracking tools. In-house automatic software build server was a cornerstone of the process. As a result, I learned a lot about system lifecycles and software engineering practices applied to development of mission critical systems in a large distributed team.

After the release of gantries into production environment I was involved in most major incremental system enhancements.

WINGS-FOR-SHIPS
EU-Project WINGS-FOR-SHIPS

Between 2002 until March 2003 I worked at research institute FAW. FAW was formed in 1988 in the Science Park Ulm to be a leading research institute for artificial intelligence in Germany. I worked at the Business Processes and Telematics department on two projects.

The EU-funded project WINGS-FOR-SHIPS (Maritime Intelligent Workplace for weather Information Network, Guidance and Supervision onboard ships) designed telematics system that would provide ships with shared weather information and sea condition data. The system was supposed to assist shipmasters on board of High-Speed Vessels enabling real time route evaluation and ensuring efficient and safe navigation.

In this project FAW was one of the numerous project stakeholders. We were responsible for the overall software architecture including server data model. The system had a central server and distributed clients. Having evaluted a number of open source technologies and products we went with Java platform, Apache Tomcat, PostgeSQL and RedHat Linux for the central server.

As part of a 3-man development team, I designed the database schema for PostgreSQL RDBMS. Initially, the schema contained about 30 tables to store information about weather, ships, ports and routes.

WINGS-FOR-SHIPS gave me good exposure to various aspects of international projects involving a wide range of participants.

POWM
POWM (process oriented knowledge management)

Before the project WINGS-FOR-SHIPS at FAW in Ulm, I was involved in the development of a bespoke application POWM (prozessorientiertes Wissensmanagement - process oriented knowledge management) for a renowned German car maker. Following the philosophy of knowledge management as a way to gather and reuse knowledge acquired within an organization, we built an enterprise system that helped the client to capture knowledge about their complex and weakly structured engineering processes. Engineers partcipating in a particular development project were enabled to record their experience and activities. This has facilitated converting of implicit personal know-how into explicit process knowledge encoded in form of process models with supporting documents.

The POWM was a n-tier, Oracle based Java application with a rich Swing-based GUI. During my 8 months in the project, I worked primarily on the front-end developing the module MyPOWM, a personalised table and tree based display of process, activities and documents. The effectiveness of the graphical user interface was the main requirenment for MyPOWM so that engineers would feel comfortable with frequent use of the tool during their daily project routine.

Initially focused on software development, my role at FAW has expanded to technical leadership. As an example, I introduced the team to code and build management tools and integrated WinCVS, JUnit, Java Ant into existing development environment based on IntelliJ IDEA. I dealt with many aspects of configuration management raging from configuration of the CVS server to writing Java Ant scripts.

TDM Framework
Project: TDM

I developed an open-source framework "Tabular Data Manipulation" in early 2002 when my experince with Java Swing in the project POWM combined with good undestanding of MVC gave me good insight on how to perform effective data manipulations on tables and lists in Java 1.4.

Applications that display data in tables or lists usually have to allow users to sort the data on columns or apply a filter criteria. Although it might appear straitforward to implement sorting or filtering directly on the model level, developers can end up with an irresponsive and slow GUIs especially when the model contains large volumes of data.

TDM addresses performance issues caused by expensive data copying in models. It adds just another level of indirection between the data model and the view introducing the data manipulation layer that is responsible for data representation manipulation without altering the data itself.

Although the Swing API in the Java 1.6 release supports filtering and sorting of tables out the box, the TDM can be used as an alternative implementation. The TDM framework is better aligned along the concepts of the MVC Architecture and clearly separates data storing, data representation and data manipulation issues.

Here you can read the TDM overview and download the binaries, sources and documentation.

SMIL Player
Project: SMIL Player

During 2001 at InterObject I developed a SMIL (Synchronized Multimedia Integration Language) multimedia player. A SMIL 2.0 basic profile compatible product was able to play complex multimedia presentations combining audio video and text. It was developed in C++ for desktop and mobile Windows.

I was involved in the project from the inception phase. Working as part of a 5-man development team, I established the 3-layered player architecture. The lowest layer handled audio and video playback via DirectX API. The top layer represented GUI and parsed SMIL files for playback. In between was the execution engine responsible for interpreting the SMIL presentation structute, orchestrating its media elements and layouting the presentation.

I designed and developed the execution engine of the player according to SMIL specification. The engine controlled temporal behavior, presentation layout and handled media hyperlinks. It supported time graphs, time containers, syncbases, instance time lists, instance times, regions with absolute and relational sizing and fitting, background regions and z-index etc.

I performed OO design of the engine using UML and Rational Rose. C++ development made heavy use of STL and GoF design patterns. The NuMega tools BoundsChecker and TrueCoverage along with CppUNIT helped to debug and unit test the component. The execution engine was ported to the Pocket PC platform using eMbedded Visual C++.

Working on the engine I gained solid experience with Microsoft Windows technologies (COM, ATL and DirectX). I learned a lot about software design, patterns and one of conclusions was that is makes few sense to do a full detailed component modeling before the design is proved with code. Since then I'm a follower of eXtreme Programming and Agile methodology.

The SMIL Player has grown into the InterObject MMS technology.

ProCell
Project: ProCell

My work at InterObject involved the development of numerous semiconductor machine control systems using Smalltalk and ControlWORKS Framework

During 2000 my contributions included development of control system for ProCell DUV Coat/Develop photo-resist processing tool from Silicon Valley Group.

My area of responsibility for ProCell was design and development of maschine scheduler and HMI. The scheduler was a very complex multithreaded subsystem coordinating robot arms for wafer transport between process modules.

I designed and implemented the pilot wafer flow feature which was a challenging task, since the scheduler, already at its limits, had to be extensively modified to introduce new processing scenarios. As solely responsible for the feature I worked on-site at the client company in San-Jose, USA. Software was delivered within very tight time-scale. Dealing directly with our clients I also provided expertise in Smalltalk and ControlWORKS to their development team.

ProCell and Lynx gave me great insight on development of large-scale, distributed control systems. As a result, my master's thesis that I wrote during my work on ProCell, focused on development of a control software for semiconductor manufacturing automation.

Lynx
Project: Lynx

The project Lynx, I started working on in March 2000, had been building software for a thin film deposition equipment for chemical vapor deposition (CVD). For this project we developed large parts of the SCADA (Supervisory Control And Data Acquisition) software in Smalltalk. Being a cluster tool (a machine that combines many wafer processing modules that are managed by a centralized control system), similar to ProCell, Lynx was also based on the ControlWORKS Framework.

The Lynx software system had a client server architecture. The mashine controlling part responsible for direct communication with actuators and sensors run on an embedded computer and served as a server for the host client. The host implemented the HMI and provided a whole range of typical SCADA software features including data logging, recipe management, wafer movement coordination and scheduling, alarm handling, event management and machine maintenance.

I developed the host software tier. I prototyped and developed parts of HMI and fixed numerous bugs throughout the project. Developing custom widgets for real-time operators GUI required deep understanding of the MVC paradigm in Smalltalk. Software was developed using VisualWorks and Rational Rose with version control management built on the ENVY/Developer.

The project Lynx has taught me the fundamentals of OO, design patterns, multithreading, and basically the software development process for large scale mission critical systems.

SCU
Project: SCU

My first project InterObject was implementation of Switch Configuration Utility for IP-Telephony Gateways. We developed a n-tier Java application for access to the equipment configuration database. I implemented front-end and linked it to an Oracle RDBMS via a middle layer utilising in-house object-relational mapping layer on top of the JDBC for the database connectivity.

Although I was in the project team only for 4 months (moved shortly after it to 2 large Smalltalk projects), I built up solid grounding in OOP, Java, databases and software development process.

YDV
Project: YDV

From July 1998 to January 1999 I was in practial training at the research institute FAW in Ulm, Germany taking part in the IAESTE exchange program. My research focus was on information visualization, in particular its representation with various graph layout algorithms using Java. The goal of the research was to find the optimal layout for different sorts of complex hierarchical strcutures.

I developed of web-based application for representation of search results from the Yahoo! Directory in a three-dimensional virtual reality space. It generated a VRML world from the directory subtree returned by Yahoo which was displayed in a VRML-enabled web browser. Since users normally orientate themselves better in 3D spaces, the application could help to find necessary information quickly by navigating through the world and approaching particular documents for detailed information.

I used Apache web server and a CGI-driven Perl VRML module on server side along with a VRML plug-in for Netscape Navigator and JavaScript.