Lee Smith

Senior Software Engineer

lee@dj-djl.com
PDF Version View this CV online at http://dev.dj-djl.com

Lead developer

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

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

Backend

Techniques

Platforms & Frameworks

Data

Operating Systems

Development Methodologies

Other

Source Control

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.

Employment History

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

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.

Key Skills:

Languages

Web

Techniques

Platforms & Frameworks

Other

Data

Operating Systems

Development Methodologies

Other Interests

>>>>>>>>>>>