|
Experience
CSA at Aldratech Ltd. and Generius Ltd., Bucharest 2001-2006
I've participated in the start-up of Aldratech Ltd., an UK based company with Bucharest offices. Being a key member and employee number 2, I became a shareholder after the company's first business year. At Aldratech I progressed from lead programmer and DBA to application and systems' architect, involved in every aspect of the company's development, from choice of platforms and technologies to interviews and business decisions.
Generius Ltd. is a new company that is the result of the merger of the personnel of Aldratech Ltd. and X18Games UK, in mid 2005. The company has offices in Bucharest, London, Wembley and Ipswich. The main focus of the company is the development of online casino games and interactive streaming technologies, that are custom developed for or licensed to major UK and US internet casino operators including Sportingbet, Sportsbook, Ladbrokes, Stanley James, Victor Chandler, Paddy Power. At Generius I continued to head the technical direction of the company and work as its systems' architect.
The projects developed during these years have a special section below.
Programmer at Funlabs, Bucharest 1999-2000
Following the positive experience at Ubisoft came employment with a Romanian game development company, Funlabs. Here I was in charge of developing special effects that demoed the latest features of hardware-accelerated graphics cards, using OpenGL and C++ on Windows. These programs were distributed in the form of freely downloadable demos on the websites of manufactures NVIDIA and Matrox. I've also worked on a game demo that was presented at the computer and videogames industry's Electronic Entertainment Expo (the E3).
Programmer at Ubisoft Romania, Bucharest 1998
Together with a couple of friends and fellow programmers we were the first under-grad employees of Ubisoft Romania. I've worked there for pre-determined three months period (a sort of internship) in a pilot program that was testing both new development technologies (new game engine and tools) as well as hiring younger but talented programmers.
Skills
Click here to see my Brainbench transcript.
Extensive knowledge of:
- Java (including J2EE technologies, embedded systems, web, databases, native code and other areas)
- C++ (mostly cross-platform OO code, with experience in performance oriented code, graphics, networking, threads; I've worked with OpenGL, Boost, ACE, wxWidgets , omniORB (CORBA) and many other libraries)
- C (although C++ is preferred)
- PHP 4 and 5
- Databases: Oracle, PostgreSQL, MS-SQL, embedded databases
- Linux/Unix system programming
- Software design patterns
Hands-on experience with:
- CORBA (C++ and Java)
- JMS
- Oracle AQ
- Development tools: IntelliJ IDEA, Eclipse, Visual Studio, Visual Slickedit, vim, emacs
- Database design tools (Sybase Powerbuilder, ERwin)
- UML and design tools (Poseidon, Together, Rational Rose)
- Compiler tools: lex, yacc (bison), antlr
- Assembly (Intel x86)
- Windows programming
- .NET, C# and related technologies
- Web Services (XML-RPC, SOAP, Hessian)
- Web related technologies (HTML, CSS, Javascript)
- XML, XSLT
- Flash ActionScript
- Various scripting languages
- Versioning systems, usage and installation (CVS and Subversion)
- Java servers (Tomcat, Jetty, Resin, Oracle Application Server)
- Linux administration (security, Oracle 8i, 9i and 10g, mail, ftp, Apache httpd, Lighttpd); basic Solaris experience
Taking great interest in:
- Distributed systems and related technologies
- Objective-C and Mac OS X programming
- Functional programming
- Embedded devices programming in assembly and C or C++
- Compiler and interpreter technology
- Databases
- Communication protocols and reverse engineering
Proficient in written and spoken English, I enjoy writing technical reports and briefs. I have excellent working relationships with smart people and I enjoy debates on most subjects, technical, philosophical or otherwise.
Projects developed at Aldratech Ltd. and Generius Ltd.
Financial markets
I headed the maintenance and improvement of a very large online financial spread betting company, Tradindex.com. I've worked on the reporting system, batch processing in Transact-SQL, website and database optimisation and a B2B integration with TradingSports. I've also implemented a realtime data feed by integrating with Standard and Poor's ComStock MCSP financial feed equipment, on Linux in C++; this program receives realtime stock quotes and news from S&P, processes the information and stores it in the database.
The main technologies used here were ASP (VB), MS-SQL (and Transact-SQL programming), C++ (for IIS ISAPI and the S&P feed) and later on .NET (C# programming for the B2B integration).
Payment solutions
I've designed and programmed the Aldrapay payment processing gateway and implemented integrations with more than a dozen 3rd party credit card and ACH processing companies. Subsequently I have designed and developed an electronic wallet and a premium-rate system, all products having been licensed since early 2003 to Nerex.com, a networking and telecom UK company; they are still in use and developed to this day. Technologies used: Java, MS-SQL, Oracle, Flash, XML-RPC, JMS, CORBA.
Part of the Aldrapay business I have also worked on a product that routes electronic point-of-sale terminals' calls to the Aldrapay gateway, and the transaction status back to the terminals. This project involved Linux C++ programming, protocols (binary for POS and XML for Aldrapay) and encryption (POS communication). The project was demonstrated to the IT Ministry's representatives and received EU funding.
GPS tracking
I have developed several aspects of a GPS/GPRS tracking system developed by our company as R&D for a freight company in the UK, interested in tracking its lorries' routes. The tracking device was built around a GPRS module, a GPS module and a first-generation Ajile Java CPU. The PPP protocol was implemented by other members of the team, followed by my implementing of IP and UDP networking; the device would send packets with information captured from the GPS module to a server that stored these in a database. An web interface would render detailed maps of the UK, with zoom and panning functions, and by using Netscape's LiveConnect technology would move the lorry on the map in near-realtime. The main challenges here were getting acceptable performance on off-the-shelf hardware for the web application - it had to work with hundreds of very large map raster images, totaling several GB; also the networking code and the GPS coordinates projection (that needed a polynomial correction function) were quite challenging.
Technologies used: Java (web interface and embedded device), C++ (large image processing), Oracle.
Databases and internal development
From the second year at Aldratech I've started implementing PostgreSQL and Oracle as the databases of choice, replacing MS-SQL in our products and deployments. I've started using PL/SQL programming for reporting, automation (batch processing) and data replication; I've also started to learn about Oracle performance tuning.
I have implemented and evolved a code generation system that uses an XML document to describe the data objects of an application and generates SQL DDL for Oracle and PostgreSQL, boiler-plate JDBC code and Java classes. JDBC was later replaced with SQL map files for use with the iBatis database access framework. This tool went through several stages of refinements and improvements and it's used in every project developed at Generius today.
I have also worked on several other projects involving various technologies, including a messaging gateway with email, HTTP and SMS transports, financial records / data analysis and reporting, an interpreter written in C (for lex/yacc) and .NET's managed C++ and many others.
As the company's focus moved onto online gaming, in order to support the development of these new products in Flash and Java I have authored several tools and also established the methodologies and guidelines that are used throughout the process of building a new product and maintaining existing ones.
Hessian and open source
For one of our first games I have written the first C++ implementation of the Hessian binary RPC protocol, developed originally for Java by Caucho Technology, Inc., a large J2EE vendor. The project is licensed under LGPL and is available on the open source collaboration website Sourceforge.net; a press release from Caucho marking the event can be found here; it also details the reasons for which we chose Hessian, its technical merits and other information.
Together with our Flash programmers I've implemented the Hessian protocol in Macromedia Flash ActionScript, and built a tool (the "contempler") that loads compiled Java interfaces and generates boiler-plate C++ code (client stubs) for accessing the Java services, using the Java code as IDL is used in CORBA. I've extended this tool to create clients stubs in Flash ActionScript and developed these technologies to the point where the Flash client / Java server integration is seamless, complete with automatic generation of all DTOs as classes and support for all of Java's data types in ActionScript.
Other major extensions and improvements to Hessian were message compression and a version that allows it to work over a persistent socket connection (all other available Hessian implementations work over HTTP), support for namespaces and the ability to call services written in the Flash client from the Java server, thus making it bidirectional, a feature possible only when using the sockets version of the protocol.
However these improvements, changes and ports were not released as open source as well and remain a proprietary technology that is used exclusively in each Generius game.
Domain-specific languages
Inspired by my earliest contacts with functional programming I have developed a programming language that is used in about a half of the Generius games for evaluating players' bets. It's based off S-expressions, easy to parse into a tree and evaluate; the bet definitions are stored outside the game's code, in the database, with their odds; at runtime, when a number is drawn or a card is turned the bets' definitions are evaluated using the small parsing/evaluation engine. This approach usually saves a lot manually written of code that would be required to implement each possible bet type, whereas the bet definition can be expressed easily using this domain-specific language.
Internet streaming and innovation
I have coauthored a new web broadcasting technology. The basic idea is to design virtual environments in Flash that merge seamlessly with live video broadcast, using blue-screen and alpha-channel. An applied example of this technology is an on-line bingo hall, with a real presenter (‘caller') that has a bingo board in background and other graphic effects, all done in Flash; the presenter calls the balls as they are drawn and is able to address directly the people playing the game etc.
I have successfully developed the most technically challenging aspects of this technology, such as implementing proprietary protocols and realtime software chroma-keying; other key systems of the solution are Macromedia FMS (for the actual broadcasting) and On2 VP6/Alpha codecs (for the actual video encoding). Currently this is the only available technology for performing real-time, blue-screen / virtual studio video streaming over the internet, and it's been piloted in several interactive streaming games developed by Generius. This project was implemented on Windows (camera capture, chroma-keying) and Linux (encoding and streaming into FMS) in C++.
I have also continued to develop several online games (my work consists of Oracle database design and implementation and Java server programming, using Hessian to talk to the Flash clients) and perfected the Macromedia Flash implementation of Hessian and other key components of the Generius platform. I have also implemented business to business integrations (usually involving XML or ad-hoc protocols) for the games with licensees such as Sportingbet, Ladbrokes, Stan James, Victor Chandler, Paddy Power, Sportsbook and others.
Before employment 1994-1998
During high-school and the first two years at the University I was part of what is know as the demoscene, writing code with friends on Intel 386 computers, in Pascal, Assembly, C and C++. The ‘demos' we were doing were a form of electronic art, combining high-performance programming required to produce visual effects and 3D animations with computer music; this was all generated in real-time, except for static images. This underground phenomenon is still alive today, although it has changed to adapt to modern times (for instance people are now programming 3D games in Javascript in web browsers). The demo-scene years were very beneficial to me as a programmer as the understanding of things such as assembly, how CPUs work, how graphic cards work, pointers and code optimisation proves to be influential to this day.
During this period our group (titled "Brain Damage" after a Pink Floyd song) has participated to a number of contests, including some organised by the schools, and we were awarded several prizes for our work.
Education
1998-2000 "UPB" Polytechnic University Bucharest, Romania. I've dropped out after the first two years at the "Automatics and Computers" department, due to lack of interest in the largely electronics-oriented courses, combined with exciting employment opportunities.
1994-1998 "Vasile Alecsandri" National High-school, Galati, Romania. I've graduated with 9.72 out of 10 at a CS class.
My main hobbies are music (playing electric guitar and synthesizers) and literature (reading, not writing).
|