## about me - [contact](mailto:work@mkcz.net) I am a software developer currently based in London, UK. Most of my early work experience was centered around server-side development, however the projects I have been involved in since have dealt with everything from UI design to communication protocol implementation. While I would still consider backend development as my core competence, for all intents and purposes I am a full-stack developer. Outside of programming (which I tend to tinker with in my spare time as well), I am a keen walker, cyclist and (albeit rusty) basketball player. I am also keen consumer of the literary arts and consider a long walk in the company of an audiobook to be an excellent way of spending a Saturday afternoon (as long as the rain does not go above a drizzle). ## experience #### [LMAX Exchange](https://www.lmax.com) (October 2014 - Present) LMAX Exchange is a multilateral trading facility (MTF) working in the FX market and that relies and invests heavily in its technology department in order to provide its products. As part of the development team, my responsibilities include implementing new features (as dictated by business needs), developing new tools to help internal users (such as task automation, system monitoring) and supporting our products (including participating in software releases, addressing tech-related concerns from customers or internal users). Most of our technology is written in Java and we tend to develop a lot of tooling in-house, as more often than not off-the-shelf products would not match requirements. All the tools and software we write is extensively tested in our CI systems. #### [DSPG Ltd](http://www.dspg.co.uk) (August 2011 - August 2014) DSPG Ltd is a technology company specialising in live-text communication, providing call-centre like solutions for companies and organisations and enabling them to better interact with their speech and hearing impaired clients. As one of the main developers in the company, I was tasked both with maintaining and improving our existing systems and with designing and developing new ones. I provided support for integrating company products and, on occasion, I travelled on site to install systems and train clients on their usage. Most of the current technology is based on Java, with Android and iOS mobile application and some older products written in .Net and C/C++. #### [Freelance Software Developer](http://www.mkcz.net) (Intermittent, Ongoing) When the opportunity arises, I have also undertaken work as a freelancer. The projects I have been involved in include Android, website and client-server development. ## projects #### WebSocket Client and Translator Server _Goal_: Create a new web-client for an existing system, replacing the old Java Applet one. _Tasks:_ + Implement the new client based on the behaviour and design of the current one + Design and develop a translator service that would take the new client WebSocket-based messages and convert them to the existing communication protocol (and vice-versa) _Details:_ The client was based on the design and behaviour of the previous one, but written in HTML5 and JavaScript, with a custom jQuery plugin handling the UI interaction and network communication. The translator server was written in Java, with Netty handling the WebSocket integration. In order to facilitate the testing of the client/translator combination, I implemented a simulator for the backend of the system and used Selenium to drive some of the automated client testing. #### Text Relay Service _Goal_: Create a new text relay system meant to replace the existing one, adding new functionality and providing users with easier access to it via PC and mobile applications. _Tasks_: + Help in preparing the project specification and presenting it to the client + Develop one of the PC applications and the main Internet access point for the system _Details_: Development was done in Java and included creating a distributed system that would provide almost constant uptime to customers; it would handle connections between different parties and have a silent recovery feature that could provide users with an uninterrupted experience across short connection breakages (such as a mobile user temporarily loosing reception). #### Electronic fax management system _Goal_: Develop an electronic system to help ease client usage of the existing fax system. _Tasks_: + Help prepare project specification + Develop the PC application that would allow users to send faxes + Install system on client site _Details_: Using .Net, I implemented the client application that would allow users to "print" faxes to the system in order to have them sent on to the desired destination. #### Android chat client _Goal_: Create an Android application to replace the existing J2ME one. _Tasks_: + Understand the communications protocol used by the current client and the interaction in had with the backend service + Develop an Android client that provided the same behaviour and worked on the same protocol + Develop a centralised configuration system _Details_: My first professional project involved understanding both the existing company technology (a J2ME client and other proprietary Java software) and the Android ecosystem. Furthermore, I had to develop a centralised way of configuring the clients, to avoid having to release a new version every time something needed updating. I used an Sqlite database to hold the information needed and configured the Android applications to connect to it in order to the information necessary. If the version of the data on the app matched that on the server, a full download was skipped. #### [Central European Games Conference (2015)](http://www.cegconf.com/2015/) _Goal_: Build a website with pertinent details for attendants to a gaming conference in Vienna, Austria. _Tasks_: + Collaborate with another remote developer to create the website + Liaise with the designer to ensure our work matched specification _Details_: A volunteer project to help with the setting up of the website. We used HTML5 and SASS for most of the work, implementing the design provided, and JavaScript to dynamically load those parts of the site that were more often subject to change (such as team structures). ## tools of the trade | working knowledge | basic knowledge :--:|:--:|:--: techstack|Java SE, MySQL, JavaScript, HTML, bash|Android, Python, C/C++, .Net software|Linux, IntelliJ Idea|Vim, Windows