As the lead developer, one of my duties includes mentoring other
team members. This involves, familiarisation with exiting
projects, giving pointers, identifying learning material,
and generally helping team members to develop their skills
and be better software developers.
I have also played a pivotal role in determining the general
direction of the team, including, but not limited to, tools
& technologies used, coding standards applied,
allocation of workloads.
Having been involved in the recruitment process, I have
helped to shape the team and ensure we have the right skills
for the projects ahead.
While I do not consider myself to be a designer, I am
passionate that projects, particularly client or public
facing ones, must look the part.
As such I spend a lot of my time trying out new ideas, as
well as implementing other's design ideas.
As well as appearance, design plays a huge role in usability
and I am always mindful of this.
At Vigeo Eiris London I am responsible for all things
As well as owning the release branch(es) and being
responsible for merging, I also determine the direction
taken in terms of branching & merging strategy and am
frequently called upon to assist when any team member
encounters issues with their use of source control.
After recently switching from TFS I have quickly learnt to
utilise the full power of git.
I have written multiple compilers, which take code written in
one language, and generate code in another.
e.g. For two major projects I created custom xml-based
languages with xslt based compilers (SQL stored proc
For one of these projects the XML is hand-written by
developers, for another it is usually generated from a
front-end GUI which, while easy to use, offers a lot of
power and complexity.
These compilers take care of a lot of boiler-plate
code, as well as seemlessly handling the
interactions between modules.
Both languages & compilers have been extended and
enhanced multiple times.
HTML5 - Strong
HTML dom - Strong
CSS3/LESS - Strong
JQuery - Strong
REST / WebAPI - Good
Other Ajax - Good
ASP.Net Webforms - Legacy
C# - Strong
NodeJS - Good
VB.Net - Legacy
C/C++ - Legacy
VB/VBA - Legacy
Bash Shell scripting - Moderate
Reflection - Good
ES6 Proxies - Moderate
Platforms & Frameworks
.NET 4.5 - Strong
Mono - Good
XML - Strong
XSLT (1.0) - Strong
MS SQL Server (2008R2) - Strong
MySQL (Queries only)- Good
Postgre SQL (Queries only)- Good
SQLite - Good
LINQ - Strong
Windows 7 - Strong
Linux (Open Suse) - Strong
Linux (Other) - Good
Agile - Strong
Scrum - Strong
Waterfall - Strong
GNU Makefiles - Good
Winforms - Good
Console Apps - Strong
CVS / SVN - Legacy
MS Sourcesafe - Legacy
MS Team Foundation Services - Good
Git - Good
N.B. This CV is currently undergoing a major
refresh, much of the
information below is out of date
I am a Software Engineer with over 15 years
developing applications with a keen focus on
accessibility, interoperability, security and
well as Open Source.
Developed many applications using Node, C#,
ASP.Net, SQL, XML/XSL and
Have the ability to work individually on my
initiative as and when required while
working as a member of a team of between 3
Introduced new technologies and techniques
Libraries, Dynamic Code, Generic Types, and
Extensively used Source Control systems
Developed many dynamic systems for both
Created central library for code re-use.
Worked on both greenfield and existing
team coding standards.
Other Relevant Experience
Began Open Source experience with “SuSE
Linux 7.0” in 2000.
Gained experience in a number of different
distros, including several Alpha versions.
A-Level in Computing (B), Physics (B), Maths
GCSE Level in 9½ subjects including IT,
Chemistry, Biology, English(2), Music
I have been writing applications for as long
as I can
remember, My first programs in QuickBasic.
I moved on to VisualBasic (5.0) around 2000
use QuickBasic for a good few years
Under Linux for home use I used C/C++ for a
helped me to maintain one of the
core applications for Altwood LTD. (now
I started to teach myself C# in 2002 and in
using VB.Net at work.
More recently I've used nodeJS for some
My language of choice is now either C#, or
NodeJS. Either using (at work) Visual Studio
or (at home) VSCode with a Makefile for
I started using SQL (MS SQL Server) in 2003
at creating complex queries,
sometimes including CTEs and SQL which
I try to avoid this where
I have also spent a lot of time with SQL query
optimisation, ensuring the best possible run-time from
highly complex queries.
I have used many source control systems
including git, MS SourceSafe, CVS
12 Years Of Open Source Experience:
My first experience of Open Source Software
with FT Linux in about 1999.
I was hooked pretty quickly and soon
Since then I have tried many distros
Redhat, Fedora, Gentoo, Kubuntu and
Ubuntu, Mandrake, alpha/beta versions of
Projects Worked On:
Professionally I have worked on many
size from small utility applications to
massive projects with ongoing development.
TODO: Update this!
At VigeoEiris I have worked on a complete
companies primary internal application.
This development involved some complex logic
'IF's 'BUT's and 'who knows?'
It also includes a dynamic data entry system
configuration defined in itself.
As part of this project I created a number
controls designed to take away the pain
of some common tasks. An example includes a
system similar to the ones found
in Web Browsers and Visual Studio.
I have written a Visual Studio Add-In to
tasks (such as turning a For-Each loop
into a For-I-Loop and creating public
private members). This add-in sped up my
I wrote, from scratch, web based bug
replace the Excel Spreadsheet previously
used (which was struggling with 3 developers
constantly updating it).
The biggest project to-date is a complete
companies' flagship client application.
This is a windows forms based application
significant volumes of data updates, the
web service for which is one of the many
During my time at EIRIS I have created
and database diagrams to clarify
processes and complex data structures. I
detailed documentation to assist the team
in understanding the interface and workings
(often complex) components. More recently
this has taken the form of a Wiki to which
the team contribute.
At EIRIS I have also developed:
A Holiday Booking System:
A web based Asset Tracking System
A centralised permissions admin system (all
a common permissions model
which I created).
TODO: Tidy this up!
The biggest was the hugely dynamic web
would be used by internal staff and
external clients alike in many countries
As part of a team of 8 developers situated
this project involved developing a
skinnable, client facing, Website (including
components) as well as a complex Web
Service, multiple Windows Services, Windows
support applications, 2 Metabases,
and Gigabytes of flat file data, and I was
privileged to be
able to work on ALL aspects of this
As part of this project I also developed a
long standing problem by generating indexes
based on some complex maths. This solution
out to be
many times faster (at run time) than
any previous solution.
I solely developed, as part of this project,
dynamic data output engine which would
quickly and effectively output data, from
based on supplied data bitmaps and
indexes. This engine was core to the
function of the
project. It would also, if required,
reformat data on-the-fly before writing to
which could be in one of many formats,well
reports, layouts and documentation to
During my time at the same company I also
scratch, another highly dynamic
application for use by several external
contained a dynamic admin system, which
Some other projects worked on during my time
A web based dynamic survey data collection
application had dynamic render.
A Re-usable Code Library which ended up as
about every project big and small
made within the team. It was my
people used it whenever
An extensible tools application where new
quickly and easily added by
anyone in the team to assist in the
data and/or code. The main
purpose of this application was to reduce
support applications that the team
had down to just one application; Which is
manage and reduces duplication of
TODO: Update this!
I recently picked up a 3rd party Open Source
which is a Digital Vinyl System
(control an mp3 by using a special timecoded
as if the
mp3 is on the vinyl itself).
This software utilises SDL – a technology
new to me
and within a few hours I had made
tweaks to the user interface – adding more
information to the user display and tweaking
the search function to work with these extra
Recently I have also developed an online
stream switching application.
This all in one solution contains an
which I have written from scratch as well
as both a GUI and a comprehensive CLI for
It also includes both a shoutcast server and
The source for these, and some of the other
mentioned below can be found in my SVN
repository accessible from my website
(http://dev.djl-djl.com) licensed as GPL.
Other personal projects I have worked on
• An audio file tag scanner – This is a drop
for the one which ships with xwax
(which was inadequate for my needs).
• A Multi-platform executable generator –
single binary that will work on
both Windows and Linux without requiring the
manually run external software.
• A vinyl recording application with ID3
and automatic track separation
(work in progress).
• An Image sideshow application with a
and XML config store.
• An audio identification system (work in
All my projects utilise Makefiles for build.
I am a strong advocate of adhering to
W3C, WCAG), creating accessible
applications (particularly important
and applications which function
platforms (also particularly
I appreciate that employers/clients
concerned by fast development than
adherencestandards. However I
believe it is
to stick to these principles without
adversely affecting development
I am keen to develop good, clean,
for another developer to follow. I
comments where necessary but avoid
code with them. Doc Comments are a
to document the usage of a re-usable
and I think it is important to keep
I am also a strong advocate of code
(at both of my employments, and in
work) a re-usable library which
number of functions not specific to
application; which all team members
I believe my experience in
of the computer gives me a better
understanding of the interoperation
various components of the PC thus
write more efficient code more
My ability to think outside the box
can come up with a simpler solution
otherwise complex problem.
Conversely it can
sometimes result in a complex
run many times faster than