|
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. |
|||
|
|||
|
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. |
|||
|
|||
|
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. |
|||
|
|||
|
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. |
|||
|
|||
|
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. |
|||
|
|||
|
|
|||
|
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. |
|||
|
|||