The following are commercial projects I took part in during my career:

Ardigen(ardigen.com)

Biological pipelines

Research on cancer using genetic information requires enormous amounts of data to be processed. Typical calculations require monts or years of processing on a single machine. To shorten this process hardware virtualization systems were created (i. e. AWS Batch) together with some tools that can automate jobs on those virtual machines (i. e. NextFlow). The most popular tool is at the moment NextFlow that allows you to define pipelines – directed acyclic graphs of jobs that can be run on a bunch of different virtualization technologies. The purpose of my project was development of several medical pipelines designed to help scientists to test immunological vaccines, microbiological treatments and classic pharmacological drugs.

Duration: pending

Technologies: NextFlow, Python, R, Bash, Django, AWS, Kubernetes, Data Science

Global Logic(globallogic.com)

Automotive message router

Integration and testing of internal car components.

Duration: 18 months

Technologies: C, AUTOSAR, Perforce, Python, Jira

Collective Sense (collective-sense.com)

Network topology discovery

Network discovery tool that performed active scans of network in search of hosts and network devices and that was capable of iterating over connected routers to map the whole network. I became the only developer of this project and designed, implemented and tested the code with only a minimal support from a network specialist and a tester. This was a highly R&D project because there are basically no standard methods of discovering network topology and no network was designed with providing meta information in mind. The application was partially based on algorithms found in the sole open source OpenNMS application that had the same goal, but I quickly moved much further into technologies and protocols that had not yet been supported by any network discovery application and I simply had to read specifications of protocols and try to come up with my own creative ideas.

The basic approach behind network discovery is to obtain information from devices using SNMP protocol, console and open ports or by parsing their management website. This is how you get small pieces of information about the network. Then you need to combine these pieces into a big picture using your own algorithms. Sometimes hacks and guessing need to replace solid information. Your algorithms also need to correctly handle the cases when you don’t have enough information and the only what’s left is to choose the more likely connection patterns.

Unfortunately there are thousands of different device models, hundreds of existing network protocols, hundreds of standards that describe how the given devices should exchange information they posses and each device model has thousands of bugs. This made it impossible to create an application that would work in any existing network and settle for something much simpler that was capable of discovering correctly around 95% of network schemas – the most usual ones.

Duration: 19 months.

Technologies: Python, PostgreSQL, SNMP, Trello, Kanban, multiple network protocols

Pentest automation

Automation of the execution of multiple free console applications that perform penetration tests (for example nmap, whatweb, metasploit). Later, this project was passed to a student and I monitored, reviewed and helped him to continue its development.

Duration: 3 months

Technolgies: Python, nmap, git, Kanban

Delphi(delphi.com)

HTML remote car radio manager

During development car radios do not have any human interface. To test them during test drives a temporal interface is required. The purpose of this project was to create a HTML interface that would connect to the radio using websockets an send control messages. The interface contained also information about available stations, quality and debug information.

Duration: 2 months

Technologies: HTML, JavaScript, jQuery, C++, git, websockets

Audio streaming prototype

Embedded and real time driver implemented for NutteX RTOS. Its main purpose was to obtain  audio from a source and send it in a digital format to other parts of the car using UDP based protocol, so that several speakers in the car would have a digital representation of audio and could generate high quality sounds without analog noises.

Duration: 2 months

Technologies: C, NutteX, UDP, git

i2a Solutions (i2asolutions.com)

Scalable real time bidding platform

This was my biggest commercial success – an application that during several years earned around 20 000 000 USD. Its main purpose was to perform real time auctions of advertisement and allow clients to show their advertisement  on mobile phones and websites. When I started working for Moasis company, their solution could only perform around 200 auctions per second. I became the only developer and, hence, an architect of the whole underlying system. There were two main issues there – the company wanted to highly increase the processing capabilities but also the time needed for a response was super crucial – anything above 50 milliseconds would simply made the system unusable because of third party requirements.

After I created a new version from scratch, the software running on a bunch of virtual servers was easily handling 80 000 requests per second. The average response time was around 1 ms, the maximum response time was around 5 ms.  All of this was done with ordinary tools such as MySQL, Cassandra, Memcache etc. that are basically free. The trick was to use good prediction mechanisms that eliminated communication between servers and aggregation of requests to the database.

This job also included doing small changes in the web frontend that was created using Python and Django.

Duration: 15 months

Technologies: C++, Python, JavaScript, Boost, MySQL, CppCms, CppDb, Cassandra, Memcache, real time applications

Swimming competition app

Extension of an existing backend  application for recording results during swimming competition and then providing those results via JSON API to mobile and web clients.

Duration: 3 months

Technologies: Java EE, JBoss, SVN, Hibernate, SQL Server

Dreamlab/Onet(onet.pl)

Content management platform

Onet.pl is the biggest Polish news and entertainment portal. My job was to develop mainly backend for it and a little of Python Qt frontend. This job also included 24h duties in case of emergent problems and direct contact with the editors – users of the system. At the end of the work I specialized in a part of the system that was migrating data from the old platform to the new one – conversion, removal of old advertisements included in the content, clearing known common problems with articles etc.

Duration: 19 months

Technologies: Python, JavaScript (Node.js), SVN, Scrum, ITIL, devops, cloud, PostgreSQL, Scrum

IBM (ibm.com)

Scalable agent network

Fully scalable agent network that could handle several millions of connected devices and provide bidirectional message exchanges between subservices and subagents.

Duration: 3 months

Technologies: C, multiple operating systems, make, Jazz, Jira.

Remote computer scanner

A subagent using the previously mentioned scalable agent network. Its purpose was to perform scans of connected devices and find installed software.

Duration: 3 months

Technologies: C, Jazz, IBM internal tools, Jira.

Neteeza database management component

Neteeza is a corporation bought by IBM because of its phenomenally fast database created for business analytic purposes. It has a form of a huge rack with dozens of hard drives, CPUs, FPGAs, network components and power units. This project included maintenance and extension of a management component, for example implementation of features such as obtaining detailed information about hard drives using SMART protocol and preventing false alarms (false positives) by delaying alarms using several configurable metrics.

Duration: 12 months

Technologies: C++, AccuRev, IBM internal tools, Eclipse.

Qnective (qnective.com)

Symbian VoIP client

Symbian seamless VoIP client that integrated with a normal phone and then it streamed audio using proprietary protocols over IP stack. The main goal of the project was to define the protocol used between servers and clients and to implement SIP server that was running on localhost on Symbian phone (this was the only way to push all calls seamlessly via VoIP channel instead of the normal mobile network).

Duration: 17 months

Technologies: C++, Symbian, SVN, Eclipse, VoIP, SIP, RTP audio streaming

Blackberry VoIP client

Maintenance and improvement of a Blackberry VoIP client. This project mainly included research on playing real time audio from incoming RTP stream (something that Blackberry does not support out-of-the-box).

Duration: 3 months

Technologies: Java ME, Blackberry, Eclipse, SVN

Wind Mobile

NaviVoice

My first commercial project. I became the only developer of an application that maintained phone signaling and media using network cards from Dialogic company. Its main purpose was to provide much simpler and protocol independent API for business layer applications. Application supported several analog protocols, SS7, ISDN, SIP and several less popular protocols. Its typical usage was running ring tone playbacks (a music that can be played instead of a normal ring tone when somebody is calling you). The project involved maintenance, fixing bugs, migration from Windows to multiplatform solution (mainly Windows and Linux) and implementation of BICC protocol that is a part of SS7 protocol stack.

Duration: 13 months

Technologies: C++, Code Blocks, SVN, VSS, Windows, Linux, boost, Adaptive Communication Environment (C++ library), SS& stack, SIP, VoIP

Video streaming platform for mobile phones

Research project using sending MPG4 videos over 3G network (video calls). The application was capable of displaying multiple videos and menus and reacting to users pressing buttons on mobile phones. The project used network cards manufactured by Dialogic company together with its drivers and API.

Duration: 3 months

Technologies: SVN, C++, SS7, Eclipse