Damion Kelly BSc. MRCS AMInstP

Programming Skills: C++, COM, MFC, Multi-threading, Windows, DirectX, SQL, Assembler.

PERSONAL DETAILS

 

Telephone

07739 691 264

Nationality

British

 

 

 

 

E-mail

cv@damionkelly.com

Date of Birth

8th January 1977

 

EDUCATION

 

1996-1999

B.Sc. in Physics (2.ii), Imperial College

Including 3 years C++ and a 300 hour final year project simulating neutron decay, using a mix of C++ on windows along with Fortran and GEANT on UNIX.

 

1993-1995

A-Levels:

Maths (A), Physics (A), Chemistry (A), Further Maths (B), General Studies (B).

 

 

WORK EXPERIENCE

 

2001-Present

Digital Workshop

 

 This role involves day to day programming in Visual C++ for the Opus multimedia family of products. The flagship product is Opus Pro XE, around which the others are based. It is a very versatile multimedia-authoring tool that is used to produce a wide range of content, encompassing presentations, CBT, web content, videos, games, database front-ends and much more.

 The core of the program itself has a complex structure; also there are around 20 additional libraries. With over 750,000 lines of code shared between 6 programmers, developing within Opus requires attention to detail, ingenuity, along with good visualization to plan and complete projects successfully. A description of the projects I have completed with key point summaries follows below:

 

Opus XE 05 and Opus Pro 05

 

 

 

 

As these products have yet to be released, my contribution to them must remain confidential and cannot be published on the internet, please email cv@damionkelly.com for a complete cv.

 

  • Lead a team to develop a complex major feature on schedule.
  • Used COM in a multi-threaded environment.

 

Opus XE 04

 The first feature I produced for this version was a set of real real-time page curl transitions, which by pre-generating a curve map are able to operate with the same raw speed as a texture map.

 The second was to research DirectInput and develop a new input library, to allow the use of joysticks. This COM DLL was then connected up to the main body of the program for use with both ‘Opus Triggers’ and our own JavaScript based OpusScript.

 The final major feature I developed, was the SCORM conformance for publications. This allows users of the program to produce SCORM conformant CBT programs. These programs then use the SCORM standard to communicate with a learning management system via a web browser. This project involved some work with DCOM and XCOM, to allow our browser plug-in to communicate with the learning management system via popular browsers such as Mozilla Firefox, as well as Internet Explorer.

 

  • Used a variety of new standards to add functionality to the program.
  • Conceived an innovative technique to allow a stunning real-time effect.

 

Opus Pro 04

 In this release, the vector renderer I had earlier produced for Opus Pro 2001 was to be upgraded. The main task was to allow the rendering of all graphical objects in a single pass using an integrated ‘painters algorithm’ and so achieve the best theoretical performance.

 Once this had been accomplished it became evident that when drawing such a large number of objects simultaneously, selecting the best algorithm available becomes critical. In order to provide the best performance, I analysed the original algorithms and after some research and development implemented a variety of novel solutions in order to reduce the problem to the mathematically proven best solution.

 Also for this version were some new features and improvements to the user-level vector creation tools. I created a new clipart tool, that draws user customisable vectors, but also crucially allows the clipart creator to fix hue, saturation or luminance values where desired. This means the clipart can be drawn in any colour the user selects, but still retain the same relationship between the different shades of colour as the original.

 In addition, I improved the vector pens I had designed for 2003, adding support for shapes along lines or bezier curves. This also included support for ini files to allow the user to produce pens, with the free positioning and rotation of any combination of vectors or bitmaps along the pen.

 

  • Used mathematical optimisation to produce 'world class' vector renderer.
  • Gained a full understanding of the Product Life Cycle development.

 

Opus Pro 2003

 One of my first tasks for this version was to research SIMD extensions and work on the optimisation of the 3D engine and the texture mapper functions. Whilst doing this I invented a new style of coding that allowed the creation and debugging of hundreds of texture map functions to take place in a single function. Using this new coding style I integrated all of the similar texture mapping objects including graduated fills, bump maps and alpha effects. This avoided massive code duplication, making for huge savings in both development and testing time.

 Also for this version I ported a lot of legacy code to new COM based DLL’s, and in the process improved our custom COM implementation, making it thread safe and fixing a few problems with const functions.

 My main responsibility though, was to integrate the vector renderer with the new graphics library. In order to do this I re-designed the low-level graphics system, adding a common interface to all the drawing objects. Then, using callback functions between the two DLL’s, the vector renderer could produce generic drawing commands with anti-aliasing information, which the new graphics library could then process.

 Another big project was to research, design and optimise our own low level matrix based 3D engine, which included proper perspective correction. Once completed, this was then integrated into the vector renderer allowing manipulation of all drawing objects in 3D space.

 

  • Invented new coding technique that resulted in significant project savings.
  • Designed and produced 3D engine and low-level bitmap graphics system.

 

Opus Pro 2001

 For this release I developed the first generation of the anti-aliased vector renderer as a stand alone COM DLL, this was then used during my development of the low level vector drawing COM DLL, which provided the ability to draw polygons with a pen and a fill. The pens included dashed, dotted, etc. Once completed, I used these two libraries for a variety of things, including anti-aliased borders, masks, previews, etc.

 Also it was my responsibility to develop a tabbed user interface component, in the process I produced an easily extensible class hierarchy, which allows the use of any windows common control to manipulate the display of windows. This was used in the main user interface with the original tabbed design, but then also extended using the extra new functionality, to include nested list controls.

 

  • Developed re-usable Object Oriented COM DLL's
  • Added many GUI components, including dialogs, toolbars, etc.

 

2000-2001

CavTec

 

My role at CavTec was entirely contract based. I completed a number of projects including 2 fairly simple database front ends; they were implemented using MFC to communicate via ODBC with MySQL databases. I also designed several web sites and undertook other miscellaneous work, for example setting up a network between Macs and PC's.

  • Learned how to set-up and access MySQL databases using SQL and MFC.