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.
Design
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.
Source Control
At Vigeo Eiris London I am responsible for all things
source-control.
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.
Charity
I have worked on multiple IT projects for charities, most recently the ongoing development and maintenance of the primary website for Huntington's Disease Association (Costa Blanca)in Spain.
Compilers
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
target).
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.
Technologies
WEB
HTML5 - Strong
HTML dom - Strong
CSS3/LESS - Strong
Javascript (ES6+) - Strong
JQuery - Strong
REST / WebAPI - Good
Other Ajax - Good
ASP.Net Webforms - Legacy
Backend
C# - Strong
NodeJS - Good
VB.Net - Legacy
C/C++ - Legacy
VB/VBA - Legacy
Bash Shell scripting - Moderate
Techniques
Reflection - Good
ES6 Proxies - Moderate
Platforms & Frameworks
.NET 4.5 - Strong
Mono - Good
Data
XML - Strong
XSLT (1.0) - Strong
MS SQL Server (2008R2) - Strong
MySQL (Queries only)- Good
Postgre SQL (Queries only)- Good
SQLite - Good
LINQ - Strong
Operating Systems
Windows 7 - Strong
Linux (Open Suse) - Strong
Linux (Other) - Good
Development Methodologies
Agile - Strong
Scrum - Strong
Waterfall - Strong
Other
GNU Makefiles - Good
Winforms - Good
Console Apps - Strong
Source Control
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
experience
developing applications with a keen focus on
standards,
accessibility, interoperability, security and
re-use as
well as Open Source.
Developed many applications using Node, C#,
VB.Net,
ASP.Net, SQL, XML/XSL and
(X)HTML/CSS/Javascript
core technologies
Have the ability to work individually on my
own
initiative as and when required while
simultaneously
working as a member of a team of between 3
and 8
developers.
Introduced new technologies and techniques
such as
XML, Control
Inheritance, Control
Libraries, Dynamic Code, Generic Types, and
Click
Once
Deployment.
Extensively used Source Control systems
(Git, Source
Safe and
Source Forge/SVN)
Developed many dynamic systems for both
presentation
and
execution.
Created central library for code re-use.
Worked on both greenfield and existing
applications
adhering to
team coding standards.
Employment History
VigeoEiris
Software Engineer
London UK
ACXIOM LTD
Software Solutions
Developer
London UK
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.
Educational Qualifications
A-Level in Computing (B), Physics (B), Maths
(C)
GCSE Level in 9½ subjects including IT,
Maths,
Physics,
Chemistry, Biology, English(2), Music
and German
Of
Professional
Development Experience:
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
but
continued to
use QuickBasic for a good few years
after that.
Under Linux for home use I used C/C++ for a
few years
which
helped me to maintain one of the
core applications for Altwood LTD. (now
Acxiom).
I started to teach myself C# in 2002 and in
2003 I
moved into
using VB.Net at work.
More recently I've used nodeJS for some
smaller
projects
My language of choice is now either C#, or
NodeJS. Either using (at work) Visual Studio
or (at home) VSCode with a Makefile for
build.
I started using SQL (MS SQL Server) in 2003
and am
now adept
at creating complex queries,
sometimes including CTEs and SQL which
writes SQL
(although
I try to avoid this where
possible).
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
during my
employment
including git, MS SourceSafe, CVS
and SVN.
12 Years Of Open Source Experience:
My first experience of Open Source Software
was at
school
with FT Linux in about 1999.
I was hooked pretty quickly and soon
installed SuSE
Linux 7.0
Since then I have tried many distros
including
Knoppix,
Redhat, Fedora, Gentoo, Kubuntu and
Ubuntu, Mandrake, alpha/beta versions of
Open SUSE
and
countless more.
Projects Worked On:
Professionally I have worked on many
projects,
ranging in
size from small utility applications to
massive projects with ongoing development.
VigeoEiris
At VigeoEiris my main role has been to develop the company's primary client-facing platform "Data Lab", a project that has been ongoing for many years.
As lead developer in an international team of 3-4 developers and 3 testers, I have worked on all aspects including frontend, backend and SQL, as well as being involved in deciding the overall architecture, introducing the use of Material Design, supporting and mentoring other developers on the team and ensuring the quality of developement through the implementation of coding standards and strict control on git branch merges integrated with a code review process.
TODO: Update this!
At VigeoEiris I have worked on a complete
re-write
of the
companies primary internal application.
This development involved some complex logic
with
countless
'IF's 'BUT's and 'who knows?'
It also includes a dynamic data entry system
which
has the
configuration defined in itself.
As part of this project I created a number
of
Abstract base
controls designed to take away the pain
of some common tasks. An example includes a
document
tabbing
system similar to the ones found
in Web Browsers and Visual Studio.
I have written a Visual Studio Add-In to
assist in
common
tasks (such as turning a For-Each loop
into a For-I-Loop and creating public
properties to
wrap
private members). This add-in sped up my
developments significantly.
I wrote, from scratch, web based bug
tracking
software to
replace the Excel Spreadsheet previously
used (which was struggling with 3 developers
and a
tester
constantly updating it).
The biggest project to-date is a complete
re-write
of the
companies' flagship client application.
This is a windows forms based application
which
requires
significant volumes of data updates, the
web service for which is one of the many
parts I
have
written.
During my time at EIRIS I have created
numerous flow
charts
and database diagrams to clarify
processes and complex data structures. I
have also
written
detailed documentation to assist the team
in understanding the interface and workings
of
various
(often complex) components. More recently
this has taken the form of a Wiki to which
all
members of
the team contribute.
At EIRIS I have also developed:
•
A Holiday Booking System:
•
A web based Asset Tracking System
(incorporated into
the bug
tracker)
•
A centralised permissions admin system (all
the
projects use
a common permissions model
which I created).
Acxiom
TODO: Tidy this up!
The biggest was the hugely dynamic web
application
which
would be used by internal staff and
external clients alike in many countries
throughout
the
world.
As part of a team of 8 developers situated
in
Central London
this project involved developing a
skinnable, client facing, Website (including
AJAX
components) as well as a complex Web
Service, multiple Windows Services, Windows
Forms
based
support applications, 2 Metabases,
and Gigabytes of flat file data, and I was
privileged to be
able to work on ALL aspects of this
project.
As part of this project I also developed a
solution
to a
long standing problem by generating indexes
based on some complex maths. This solution
turned
out to be
many times faster (at run time) than
any previous solution.
I solely developed, as part of this project,
a
powerful
dynamic data output engine which would
quickly and effectively output data, from
any given
source,
based on supplied data bitmaps and
indexes. This engine was core to the
function of the
entire
project. It would also, if required,
reformat data on-the-fly before writing to
the
output file,
which could be in one of many formats,well
as
generate
reports, layouts and documentation to
accompany the
file.
as
During my time at the same company I also
developed,
from
scratch, another highly dynamic
application for use by several external
clients
which
contained a dynamic admin system, which
defines itself.
Some other projects worked on during my time
at
Acxiom:
•
A web based dynamic survey data collection
site.
This
application had dynamic render.
•
A Re-usable Code Library which ended up as
part of
just
about every project big and small
made within the team. It was my
responsibility to
make sure
people used it whenever
possible.
•
An extensible tools application where new
tools
could be
quickly and easily added by
anyone in the team to assist in the
creation/manipulation of
data and/or code. The main
purpose of this application was to reduce
the myriad
of
support applications that the team
had down to just one application; Which is
far
easier to
manage and reduces duplication of
code.
Home
TODO: Update this!
I recently picked up a 3rd party Open Source
Software, xwax,
which is a Digital Vinyl System
(control an mp3 by using a special timecoded
vinyl
as if the
mp3 is on the vinyl itself).
This software utilises SDL – a technology
which is
new to me
and within a few hours I had made
tweaks to the user interface – adding more
columns
of
information to the user display and tweaking
the search function to work with these extra
columns.
Recently I have also developed an online
radio
station
stream switching application.
This all in one solution contains an
embedded http
server
which I have written from scratch as well
as both a GUI and a comprehensive CLI for
use on
headless
systems.
It also includes both a shoutcast server and
client.
The source for these, and some of the other
projects
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
include:
• An audio file tag scanner – This is a drop
in
replacement
for the one which ships with xwax
(which was inadequate for my needs).
• A Multi-platform executable generator –
which can
create a
single binary that will work on
both Windows and Linux without requiring the
user to
manually run external software.
• A vinyl recording application with ID3
tagging
features
and automatic track separation
(work in progress).
• An Image sideshow application with a
complex
rating system
and XML config store.
• An audio identification system (work in
progress)
All my projects utilise Makefiles for build.
Key Qualities:
I am a strong advocate of adhering to
standards (e.g.
W3C, WCAG), creating accessible
applications (particularly important
for
websites)
and applications which function
across many
platforms (also particularly
important for
websites).
I appreciate that employers/clients
are often
more
concerned by fast development than
adherencestandards. However I
believe it is
possible
to stick to these principles without
significantly
adversely affecting development
time.
I am keen to develop good, clean,
code which
is easy
for another developer to follow. I
add
comments where necessary but avoid
cluttering the
code with them. Doc Comments are a
great way
to document the usage of a re-usable
code
library
and I think it is important to keep
these
up-to-
date.
I am also a strong advocate of code
re-use,
Creating
(at both of my employments, and in
my
private
work) a re-usable library which
contains a
great
number of functions not specific to
any one
application; which all team members
contribute to.
I believe my experience in
maintaining the
hardware
of the computer gives me a better
understanding of the interoperation
between
the
various components of the PC thus
enabling
me to
write more efficient code more
quickly.
My ability to think outside the box
often
means I
can come up with a simpler solution
to an
otherwise complex problem.
Conversely it can
sometimes result in a complex
solution which
will
run many times faster than
straightforward
methods.