Lee Smith - Software Engineer

Contact Info

About

Full-stack software engineer with 21 years experience in professional software development and maintenance with a keen focus on clean readable code & standards.

Available to start immediately, references available on request.

Skills

Languages

  • Javascript/ECMAScript
  • SQL (MS)
  • HTML
  • CSS
  • C#
  • XML/XSLT
  • Bash

AWS

  • Lambda (NodeJS)
  • S3
  • SES
  • SQS

Environments

  • VSCode
  • Visual Studio
  • Vim
  • Windows
  • Linux

Other

  • git
  • NodeJS
  • REST
  • Docker
  • Custom Compiler/Transpiler
  • OpenAPI (aka Swagger)
  • SVG

Employment Summary

Projects at Moodys

Datalab

My main focus during my time at Moody's has been Datalab - a client facing, web-based application used to access Moodys' ESG data and generate standard and customised outputs, including tabular data and rich reports.

It consists of the following sub-projects utilising a variety of technologies which, as lead or sole developer, I was responsible for developing and maintaining the product, as well as providing second-level support. Other team members also contributed to some of these, under my guidance.

Datahub

Backend: C#,MSSQL Frontend: HTML5/CSS3/ES6+

An API backed interface with powerful capabilities for sorting and filtering data dynamically in the browser.
Written originally with jQuery in the days when we needed that for cross-browser compatibility, when the amount of data grew I removed a lot of the jQuery code to replace with modern native javascript for performance.

Strategy Editor

Frontend: HTML5/CSS3/ES6+

A wizard-style interface to help users navigate the complex set of options needed to create a custom strategy using VigeoEiris' data.

The interface utilises a home-grown module loader (predating ES6 module availability by some years) to avoid loading the interface until required.

Strategy compiler

Backend: SQLCLR, C#, XSLT

Evolved from earlier projects the strategy compiler takes an xml document containing user customisations and, through a series of XSL transforms, generates SQL statements to be executed in order to generate the results for the user.

This obviously requires a strong focus on security to mitigate the potential for any SQL injection risks.

Part of this mitigation is to run the XSLT from a SQLCLR Binary

A NodeJS-based replacement for this project was in the works but uncompleted.

Profile Engine

Backend: Docker, NodeJS, XSLT

The Profile Engine is a stateless microservice that takes XML documents containing data from SQL as input and produces elegant looking reports in html & pdf formats, including rich graphics graphs rendered in svg or directly in html.

XLSX Export

Backend: Docker, NodeJS

The XLSX export is a stateless microservice that takes xml or json input and produces XLSX files for Microsoft Excel.

Motivated by the shortcomings of available libraries having limitations and/or resource & performance issues, I reverse engineered the xlsx format and wrote custom code to do the conversion without 3rd party tools.

The result was a fast and resource-efficient microservice that provides all the required functionality, including merged cells and custom formatting.

Portfolio import

Backend: Docker, NodeJS Frontend: HTML5/CSS3/ES6+

The Portfolio import is a stateless microservice that provides both a user interface and an API for converting client portfolios into data that can be used by datalab.

It connects, where required, to another API developed by other team members.

Job Service

Backend: C# Interface: Winforms

The job service continuously picks up jobs from a queue in SQL and executes them.

Although designed to be versatile, the main use for this application is to update the results of client strategies and rebuild database indexes afterwards.

Data Import

Backend: C#, mssql, mysql Interface: Cmdline

The data import is a cmdline application that takes data from a mysql database, restructures it and inserts it into an MSSQL Database for use by datalab.

Data Notifications

Backend: AWS Lambda (NodeJS)

The data notifications service runs jobs on a schedule defined by clients.

It connects to Datalab, using it's API's to extract old & new data and comparing to find differences.

If differences are found it notifies the client by email and provides richly formatted XLSX files indicating the changes.

Build system

Backend: NodeJS Interface: Cmdline

The custom build-system for datalab is a cmdline application, designed primarily to avoid frustrations with Visual Studio's msbuild system for solutions.

Based on gnu make, but without the limitations revolving around filenames with spaces, it still utilises msbuild to build individual projects but is smarter about rebuilding them, dealing with dependencies and nuget packages more cleanly.

Additionally, it handles less -> css conversion and babelification of modern javascript.

Ultimately, the custom build system is faster and more reliable than using msbuild alone.

Small projects

Aside from those mentioned above there have been many smaller projects, often part of larger developments not lead by me, and mostly utilising AWS.

Licences

N.B. Some of the logos used in this document have copyrights belonging to their respective companies

Other responsibilities

During my time at Moodys I had the following additional responsibilities:

Mentoring

As lead developer I have often had to provide technical guidance to other team members in the contributions to the team, including considerations such as coding standards & readability, efficiency/optimization (and whether or not to consider this) as well as guidance on how a task might be achieved or pointers on what to research.

This role can be very rewarding when seeing team members progress and improve their skills.

Recruiting

I have been involved in the recruitment process of team members, offering my opinion on their suitability for the role and setting technical questions.

Union Rep

I spent several years as Union Rep, supporting staff members across all roles at the site and negotiating, on their behalf, with management as required.

I found this to be an enlightening position, which allowed me to see things from other perspectives not normally afforded to most staff members.

Other Interests

Technical Hobbies

Home-made "8bit" computer

I am currently working to create a computer made entirely from discreet components.

Apart from being fun, this project will result in an enhanced knowledge of the internal workings of a computer, thus helping me to write better software, even in higher level languages.

Online Presence

Speed running & Youtube

As well as watching videos about speed running and some of the crazy tricks that get used, I am also currently trying to get a good time in the original "Duke Nukem" - a task that is proving to be quite the challenge.

I sometimes livestream my attempts and also have many videos of me playing other games on youtube.

DJ

DJing has been a passion for many years. I used to host a weekly internet radio show "DJL's Deep Decks", which was popular for a number of years.

Voluntary work

I develop and maintain the website for the "Movers and Shakers", a local charity supporting sufferers of Neurological Diseases and their families. Additionally, I manage the charity's IT systems.

Other interests

I enjoy cycling both for exercise and as a means to explore.

I attend a weekly pub quiz.