Relative Engineering

A collection of ramblings, thoughts & code snippets


Intro

I'm a Leader, Technologist, Polyglot Programmer and generally a bit of a geek. I help teams to engineer great software, write quality code and to utilise the most appropriate language and toolset to solve the problem. I always endeavour to follow Design Patterns and Programming Principles I have learnt throughout my career to produce technically sound and supportable software. I lean on my experience and skill-set to ensure the teams I lead don't fall "down the rabbit hole", ensuring great productivity and a positive working environment. I have strong communication skills and am able to communicate to technical and non-technical audience alike helping the business turn their ideas in functional, efficient and disruptive technical solutions. My positive attitude and professionalism have helped to increase productivity and attitude with all the teams I have lead.
I’m an experienced software engineer specialising in the JVM toolset, however I consider myself a polyglot engineer and have utilised several languages and development environments throughout my career. My commercial experience has exposed me to a range of projects from large Enterprise systems to smaller applications for cutting edge, technology driven Start-ups.
This has given me exposure to large data volumes, distributed systems, event driven architectures, brown and green field development and services integration, spanning technologies and business sectors. I have worked with clients to produce highly performant scalable and fit for purpose software solutions, sharing my experience of development, design, implementation and interpreting the intricacies of the business domain. This coupled with my knowledge of Agile techniques help create good communication channels between the business and engineering teams.

alexlashford {at} gmail.com

Male

Interests

I like learning new things, techy things in particular. I’m often found spending my evenings and weekends hacking together the latest libraries or trying out some new tech. I have a RasberyPi based connected home, coupled with Amazon Echo (Alexa) and I'm always looking for ways to add more tech to this IOT platform. I enjoy reading and when not ploughing through tech blogs I like to read things that still require the grey matter, from “The God Delusion” to “Chaotic Fishponds”, I think sparking debate amongst my mates in the pub, is a great way to spend the evening. Without this sounding too much of a cliché, I really do like, Good Food, Good Whisk[e]y, Good Wine and the odd walk in the Countryside.

Skills

Architecture

I'm an experienced architect, designing and implementing several large scale platforms. I am a polyglot engineer and use my experience to utilise the most effective technology to solve the problem space. I always strive to achieve the most appropriate architecture to meet the demands of the application today, whilst allowing for extensibility in the future.

Leadership

I am an experienced leader and have lead several teams to deliver production quality systems across an array of technologies and business domains. I have technically mentored engineers and worked with Team leads to improve their people management skills. In my current role I have several teams report to me, currently around 50 engineers. I have grown this team from around 20 people and work at ensuring culture and knowledge is transferred amongst the teams, this is often challenging in a fast growth company and although there has been challenges at times the growth and efficiency of the team is testiment to my success.

Scala

Experienced Scala developer and architect creating highly scalable, reactive applications using a range of the Lightbend toolset, including Akka / Spray and the Play Framework. I have been involved from the initial conception to the Live release and delivery of many Scala projects. I work with clients to architect, design and implement fit for purpose applications built around the Scala Eco System.

Analysis & Design

Involvement in business requirement analysis, workshop facilitation and functional/technical specification authoring. Have authored technical documentation including use case/scenario modelling, functional decomposition, object modelling (UML) and data modelling (ERD). Throughout my career I have always aimed to deliver "Just Enough" documentation as it can quickly become out of date. I have worked on both traditional waterfall and several variants of agile delivery.

Java / J2EE

I am a Sun Certified Programmer for the Java 6 Platform (SCJP6) with several years of commercial experience working with the Java/J2EE toolset. With exposure to third party open source libraries, including EJB’s, Spring integration, Spring MVC, Spring DI, Spring Data, JPA, Hibernate, Guice and several Apache offerings: Commons, FOP, Batik, OpenJPA, PDFBox, POI and Wicket. I have solid knowledge of the Java toolset creating multi threaded, high performance enterprise applications.

No-SQL

Over recent years I have been involved in projects using schema-less big data storage, aiding scalability and performance. The projects have exposed me to Neo4J (Graph), Cassandra (Column) & MongoDB (Document). Modern applications often require polyglot data storage architectures and ensuring appropriate data structure design across these databases can often be difficult.

Web & Micro-Services

I have architected & developed several Microservice applications, using techniques such as Event storming and DDD to fully identify the problem space. Microservice pattern helped decentralise application complexity and functionality whilst ensuring contextual boundaries are maintained. I have knowledge of creating and maintaining public facing webservices, controlling enhancement, documentation and versioning of the API. Having exposure to JAX-WS, Soap, XML, XSLT, REST & JSON.

SQL

Strong SQL knowledge and experience creating complex relation queries using both ANSI/ISO standard syntax and vendor specific functions (Oracle 9i - 11g). Some experience in SQL performance tuning on the Oracle platform and analysis of explain plans using Enterprise Manager. I’ve also been involved in the development of applications using MySql and Postgress as open-source alternatives to the larger enterprise offerings.

Web Development

Experienced in modern web development using clientside Javascript libraries, including AnguarJs, ReactJs, Polymer & ScalaJs. Some NodeJs experience for simple stateless Microservices and have used higher level programming languages such as CoffeeScript / TypeScript. I have working knowledge of CSS frameworks (Bootstrap / FoundationCSS / Flex - CSS3). Historically have worked with Spring MVC (Velocity/Freemarker for HTML templating, limited knowledge of JSP, JSF and Apache Wicket in traditional Java Web development.

Dev Ops

Experienced in creating and maintaining build processes in SBT & Maven with a variety of SCM systems, Github, GitLab & BitBucket. Used Continuous Integration and Delivery techniques predominantly using Jenkins to create autonomous build pipelines, (including blue / green, canary and A/B for feature Testing). An advocate for infrastructure as code using AWS toolset with experience in Cloud infrastructure architecture and environment automation. Technologies - Puppet, Cloudformation, Terraform, Troposhere, Docker, Messos, Marathon, DC/OS.

Work Experience

Technical Director

60 Innovations ltd Oct 2018 - Present

Co-founder of 60 Innovations providing technical leadership and guidance through a range of services and engagements.

Visit the Company website for more details.

Head of Engineering (UK)

Disney Streaming Services Jul 2017 - Oct 2018

Leading engineering teams in the UK, helping them deliver, highly scalable, resilient and efficient software solutions in the media streaming domain. I help teams to create and support video streaming services at scale, being involved in several projects from Media acquisition to media delivery spanning both linear and VOD verticals. The Disney Streaming services platform will deliver quality at scale to its users and will provide an OTT media streaming product that can deliver the very best content to the masses.

Head of Engineering

Cake Solutions Ltd Jun 2015 - Jul 2017

As a Software Consultant and Head of Engineering I worked across several projects at Cake, ensuring projects are scalable, reactive and fit for purpose with a focus on quality, delivery and architecture. I worked alongside the Team leads helping resolve architectural problems and ensuring projects were delivered on time and on budget. I also consulted in Scala/Akka and worked with several startups in terms of product discovery and Proof of Concept implementations. As a board advisor and member of the senior team, I helped form and realise the techincal strategy for the business, instiling the vison within the development teams, I lead reruitment, defining process and helping grow the engineering team within the UK to circa 50 engineers. I provided mentoring to the Team leads helping them improve managerial skills, allowing them to create efficient and highly productive teams.

Team Lead / Lead Developer

Cake Solutions Ltd Jun 2012 - Jun 2015

Responsible for leading a development team on a range of projects from small Start-up to large corporates. I’m a natural leader and my strong communication skills help bridge the gap between the business need and the technical complexity of the software solution. I work alongside the architects at Cake and the Clients to produce scalable, reactive and fit for purpose software solutions. I provide technical support and guidance to the development team whilst being one of the lead developers ensuring quality and performance of the software we produce. Cake's staff are recognised as one of the foremost experts in enterprise application development, application architecture, collaborative development services, and agile project management, in the UK. Cake are also authors and editors of several publications including Pro Spring 2.5 and the Open Source Journal.

Java Developer

Cheshire Data Systems (CDL) Jun 2008 - May 2012

One of around 20 Software developers using a range of Java / J2EE toolsets to continue the support and development of CDL’s flagship product;

Strata – an n-tier, J2EE based, full policy lifecycle enterprise solution for personal lines and commercial insurance brokerages: the team ranges from recent graduates to experienced architects. I have been involved in several business critical projects from conception through to delivery and have experienced all aspects of SDLC using both waterfall and agile methodologies. Later projects used Atern Agile methodoligies working to fixed timescales, using timeboxing and iterative development.

ETLTool : Involved in the design and implementation of a product to migrate Insurance data from a legacy system into the next generation enterprise solution. The application gave exposure to performant loading of large XML files using StAx/JAXB and Java Persistence Annotations(JPA) using Hibernate as the entity provider. Multi-threaded data processers where created using the Java concurrency toolset to enable high throughput and program efficiency. I gained experience of performance tuning applications using monitoring tools such as JConsole and YourKit. During Go-live I performed first and third line support for the migration application, talking to customers and liaising with business representatives.

Email Generation Engine : Created an extension to the document generation system, to enable Html emails to be created within the application. Incorporated a velocity engine to allow for HTML templating and added functionality to allow Policy information to be added via an internal API call. Project was an Agile development using fixed timescales, TDD and iterative development, the architecture took advantage of dependency injection creating cohesive, decoupled code.

Prescribe / PDF Converter : Involved in the enhancement and support of a document conversion engine, translating insurance documentation from Prescribe(Kyocera Printer Language) into PDF format using Apache Batik and FOP. Also created a WebService for integration into the Enterprise insurance App, and a regression harness for QA testing.

Integration Test API – Created a programming interface to facilitate the dynamic creation of realistic test data used by the integration tests of the enterprise system. Allowing for removal of extensive boiler plate code created for test data construction. General Enhancement and support of the core application, I have been involved in several smaller projects adding functionality to the enterprise system. This has given me exposure to enterprise technologies including EJB, JMS, Hibernate & JPA, XML, XSLT, JAX-WS, Soap, Tomcat, Weblogic, Ant & Maven.

Software Developer (Placement Student)

MacPac Ltd, 3 Months + 1 Day Per Week Jun 2007 - May 2008

My main task whilst on summer placement was to produce a production scheduling application that would connect to the current order processing system to retrieve all active orders. The main application provided a interactive Gantt chart for scheduling jobs and was written in VB.net using the ADO framework to connect an Ms Access system. I also improved the order processing Access system, adding functionality and bug fixing current features. The work I did during the summer was not only professional but extremely valuable to the company, this was highlighted by the Shell Step award I received in recognition. From this I was offered a part-time job whilst I completed my final year at University, developing more software and generally being their IT professional.

Education

Manchester Metropolitan University

BSC (Hons) Applied Computing - Awarded First Class Honours (1st) Sept 2005 - May 2008

Applied Computing was a Computer Science based course mixing the theoretical fundamentals and the application of those skills in industry.
  • Java Programming – Object orientated programming skills using polymorphism, Abstraction, Inheritance etc. I developed several java applets, GUI applications and Web Server applications. Course explored core programming principles and design patterns, each of which were tested throughout the years by exam and project assessment.
  • Systems Analysis & design – Relational Data Normalisation exploring normal form rationalisation, Data modelling including UML & EER Diagrams, project planning using Gantt Charts and experience with the IBM Rational rose software package.
  • Database Development – Data warehousing, Data mining, OLAP and developing both relational and object orientated databases using Oracle 10g, gaining a good knowledge of SQL and experience with Oracle form/report builder and Oracle discoverer. I also became familiar with Ms Access and Visual Studio using vb.net/ado.net framework.
  • Media & Web Development – Adobe Photoshop, Macromedia Director, web design techniques, Client side scripting Html/CSS/JavaScript, Server side Scripting using Perl and PHP, and internet programming using Java Servlets and JSP.
  • Professional issues - Application of computers in industry, Computing law covering the current legal framework and the Data Protection act, professional development and professional bodies in IT.
  • Computer Networks – Subneting/Supernetting, protocol stacks, network topology, network design, network administration and security, bash/shell scripting, Python Scripting, cryptography methods and network analysis.
  • End User Support - Computer Hardware ~ looking at busses, interconnects, Processors and low level components with some assembly language programming. Windows Server 2003 configuration and Windows administration for 2000 onwards, Using Active Directory and other administration services.
  • Computing Mathematics - Logic, Algebra, Binary/octal/hexadecimal mathematics essentially 'Computer Science 101'

Kingsmead Technology College

Secondary Education Sept 1998 - May 2005

  • A-levels in Physics, Mathematics, Psychology and General Studies.
  • GNVQ in Information Communication Technology ICT.
  • GCSEs in Maths, Double Science, Electronics, English, English Literature, Art and French