Curriculum Vitae: Jiří Krutil

Personal Details

Name Mr Jiří Krutil
Born 24 March 1977
Nationality Czech
Languages English (fluent), German (good), Czech (native)
E-mail job@krutil.com
Telephone +420 776 830 693
Address Vrážská 1002, Černošice, 25228, Czech Republic

Skills

Technology

Programming

Java: J2EE, JMS, Spring, Hibernate, JAXB, JTA, JUnit

C/C++: Boost, CxxUnit, Hippomocks, Valgrind, CodeSynthesis XSD

multithreading, clustering, scalability, failover

CUDA - massively parallel programming for GPUs

agile, automatic testing, test-driven development

Relational databases SQL, Oracle RDB, PostgreSQL, Sybase, Oracle
Messaging JMS (SonicMQ, JBoss Messaging), AMQP (RabbitMQ, Qpid), TIBCO Rendezvous
Application servers JBoss, BEA Weblogic, IBM Websphere
Operating systems Linux, MS Windows, OpenVMS, Solaris
Source control Subversion, Perforce
Build tools Maven, CMake, Ant
Continuous integration Hudson, Bamboo

Business – Finance

Employment History

7/2012 – present

Barclays, Prague, CZ — Vice President, Equity IT - Liquid Markets

www.barcap.com

Barclays Investment Bank is a British multinational investment bank headquartered in London. It provides financing and risk management services to large companies, institutions and government clients. It is a primary dealer in U.S. Treasury securities and various European Government bonds.

I am currently working as the lead of Algo team in Prague under Equity IT - Liquid Markets.

5/2009 – 6/2012

xITee, Prague, CZ — Senior software developer, team lead

www.xitee.com

xITee is a software development and consulting firm specializing in financial markets. Our clients include major European players in finance (security trading, clearing and settlement).

Projects I have worked on:

Deutsche Börse real-time risk management engine (14 months)

Deutsche Börse is operating Eurex, one of the largest derivative markets in the world along with a clearing house that acts as a central counter-party for all derivative trades.

I was working on development of a new engine for real-time risk evaluation. The system uses VaR to determine intra-day risk exposure of the clearing house as well as end-of-day margins for the exchange members.

The application is designed to evaluate risk for the Eurex derivative market (listed derivatives and OTC trades) as well as Xetra cash market (equities, bonds, repos).

Technically, the system is a distributed event-driven real-time application written in C++ and Java, running on a cluster of Linux servers. Computationally intensive tasks, such as option pricing, are executed on GPU multiprocessors (multiple NVIDIA Tesla units per server programmed using CUDA). The cluster nodes are communicating internally over IBM's WebSphere Low Latency Messaging. External interfaces use AMQP as a transport and XML or Google Protocol Buffers for payload encoding.

This project is being developed using SCRUM agile methodology.

EEX ComXerv trading platform (3 months)

European Energy Exchange (EEX) is the leading energy exchange in Europe and operates market platforms for trading in power, natural gas, CO2 emission allowances and coal.

This project was enhancing ComXerv, a trading platform for spot power and gas trading. The system back end is a Java/Spring/Hibernate application hosted on IBM Websphere. The application provides a JSF-based web GUI and a Java fat client.

My task was to design and develop a RPC-style public API that uses a proprietary middleware broker/gateway. This allows the participants of the gas market to trade programatically from their systems instead of having to use one of the available UI clients.

EEX cross-border capacity allocation system (6 months)

I was working on a system that controls allocation of cross-border power transfer capacity. Technically the system is very similar to ComXerv described above.

My task was to design and develop a public API based on AMQP protocol. This included:

  • API specification including message payload (using XML schema)
  • setup of a message broker (RabbitMQ)
  • certificate-based client authentication
  • AMQP adapter to be plugged into the back-end core
  • reference test client and a stress test client
CFD trading platform (13 months)

xITee has developed and maintains a platform for trading CFDs (contract for difference) for a German customer. The platform consists of a J2EE back-end and a fat Java applet client communicating via a message broker. The back-end runs on a cluster of JBoss application servers, providing scalability and failover. The application functionality includes trading, settlement, risk management, alerting, back-office operations and reporting.

My contribution to the project:

  • design and implementation of a clustered high-available service framework
  • code optimizations for critical concurrent in-memory processing
  • database design and performance tuning
  • migration to open source vendors (from BEA Weblogic/Oracle to JBoss/PostgreSQL)

1/2008 – 4/2009

KBC Financial Products, London, UK — Software developer (front office)

www.kbcfp.com

I was a member of an in-house front office IT development team and have participated on the following projects:

Maintenance of a position/risk-management system (2 months)
Bug fixes and enhancements of a proprietary clone of Imagine, a third-party C++ application used for trade and position booking, pricing, PnL and risk-management calculations.
Enhancements of a risk-management system (2 months)
Implementation of a new communication model between a VAR risk-management system and a farm of pricing calculation engines. Using a synchronous client/server request-response mechanism based on TIBCO Rendezvous in C++. Adding support for pricing of new instrument types and new types of stress tests.
Design and development of a message-oriented framework (9 months)
An ambitious green-field project developing an in-house message-oriented infrastructure. Supports reading, updating and writing business objects to a remote persistent repository. Provides a framework for marshalling/demarshalling and transferring of business objects over the network. Multi-threaded implementation with asynchronous dispatching and task execution using thread pools. Allows synchronous and asynchronous receiving of data updates, optimized for high throughput. Implements own self-descriptive, highly efficient wire message format. Platform independent, JMS vendor independent, accessible for client applications in Java, C++, C# and Python. Used across businesses within the company. My part was mainly working on the C++ client libraries, solving Java/C++ interoperability issues, tuning for performance, debugging SonicMQ client libraries.

Also: creating Python extension modules, SonicMQ administration, automated unit testing, continuous integration, second-level production support

8/2001 – 12/2007

Deutsche Börse AG, Frankfurt, DE — Software developer (risk management)

www.deutsche-boerse.com, www.eurexchange.com

I was employed at consulting firm Kucera IPC GmbH (www.kuceraipc.de) and worked full-time as a consultant for Deutsche Börse Systems. Communication mostly in English, some in German.

I participated on development of several releases of Risk Engine, the risk management system of Deutsche Börse, the largest German exchange.

This system processes positions of exchange members from several trading systems:

  • Eurex and Eurex US (bond, equity, index, FX derivatives)
  • Xetra (equities)
  • Eurex Bonds, Eurex Repo (fixed income)
  • EEX (spot energy and energy derivatives, emission allowances)
The system evaluates risk exposure of the clearing house and calculates margin requirements for exchange members on a near-real-time basis.

I worked in specification, design, build, and maintenance phases of projects, including release introductions and on-call support in the production environment. I had the chance to work on various parts of the system and learn a lot about risk-based margining, risk management and clearing at Deutsche Börse. The work on this mission-critical, performance-oriented system gave me a lot of useful experience.

I was mostly developing back-end or client-server applications running on a cluster of OpenVMS servers running a Oracle RDB database servers. Most of the programming was done in C, C++ (with STL), SQL, and DCL (an OpenVMS scripting language), but we also used Java, COBOL, Perl, JavaScript, HTML, and XML. I also have experience with configuration management using CMS (a code management product for OpenVMS), CA Harvest (used for client Windows applications), and Hummingbird DM (for documentation).

1998 – 2001

Hieronymus, Prague, Czech Republic — Software localizer

www.hieronymus.cz

I worked on software localizations and translations of technical documentation from English to Czech for international clients, including IBM, Microsoft, Lexmark, Berlitz, and others. I also developed a few software localization tools.

I was leading a team of 5 people during a project for localization of financial accounting software CODA-Financials for Berlitz.

Education

1995 – 2001

Charles University in Prague, Faculty of Mathematics and Physics, School of Computer Science; specialization on database systems. Magister (Master's) degree in Computer Science (equivalent of First Class Honours)

1991 – 1995

Grammar school (gymnasium) in Bilovec, Czech Republic; specialization on math

Trainings

2012 CUDA - programming GPU multiprocessors
2012 Test-driven development
2011 Advanced C/C++ development for Linux
2011 Agile software development using SCRUM
2009 Effective development in Java EE & design patterns (Gopas)
2008 TIBCO Rendezvous (TIBCO)
2007 Designing and debugging scaleable multithreaded applications (HP)
2006 Developing XML-based applications (HP)
2004 Developing J2EE-compliant applications (Sun)

Certifications

Brainbench certifications:

Brainbench Master certificate: C++   Brainbench Master certificate: Java 2   Brainbench Master certificate: Java 6

See also my Brainbench public transcript.

Last updated on 11 Jul 2012.