I am a Senior Software Engineer with experience in a wide range of roles, technologies and methodologies. In my last role I was working with the Microsoft dev stack but the majority of my experience is with the Linux/Unix dev environments.
I am capable of building a PoC system and documenting a high level design to writing a test plan from the requi rements and building a test rig to automatically execute it on. I am just as happy to follow the plan and implement/test the components/defects on the board or that are assigned to me.
My main attributes are an attention to detail, an ability to swap roles from analyst, dev, test to imps and an ability to be effective in formal and informal environments.
After finishing my last job I have spent some time focusing my skills in Full Stack and Mobile App development.
Senior Software Engineer
April 2016 - April 2018
- Defect correction in the C++, C#, MSSQL Stored Procedures and PowerShell code.
- Implement new functionality in C++, C#, MSSQL Stored Procedures and PowerShell.
- Implement DSC for a variety of Windows Operating Systems and configurations including VMware and Azure.
- Provide DevOps/3rd Line support.
May 2014 - Nov 2015
- Software engineer on a Storage Area Network embedded Linux system (SVC & Storewize).
- To introduce new functionality using C, Perl, Shell Script and GNU Makefile as required.
- To introduce various mechanisms to enable the re-branding of SVC and Storewize.
- To enable the Cluster State Manager to support or disallow the clustering of various vendors hardware.
- To rework the build system to enable the creation of branded test, development and customer installation packages.
- To perform defect analysis and correction as required.
IBM Platform Technology Centre
Nov 2013 - April 2014
- To analyse acquired source code for open source and commercial licenses.
- To prepare the Pedigree Review including authors, copyrights and licenses.
- To provide information to the Intellectual Property Attorneys for the clearance of acceptable licenses or to the developers for remedial work so the unacceptable code can be replaced.
- To validate the remedial work has been performed to an acceptable standard.
- To prepare the Notices files with the relevant license information.
- To prepare the Certificates of Originality.
Software Test Engineer
Omron Industrial Automation
Feb 2013 - Oct 2013
- To write and run tests for industrial control system software.
- Writing C#, C++, VB.Net, and VB Script test harnesses for CX-Server LITE (SCADA).
- Converting PLC Ladder Logic apps to Structured Text apps on a different model PLC.
- Writing CX-Supervisor (SCADA) test harnesses and SYSMAC HMI IP communications reliability and integrity tests.
- The testing is performed on a variety of OS including Win 7 Pro (32 & 64), XP desktop, Win 7 Embedded Compact, and XP Embedded communicating via Ethernet to a selection of PLC's.
Software Engineer (TCP/IP)
Roke Manor Research
Jan 2012 - July 2012
- Use Wireshark and other tools to create PCAP files from live scenarios.
- Use Wireshark and other tools to analyse the PCAP files for accessible data.
- To identify rules for repeatable analysis and document them.
System Integration Analysis
Sept 2006 - Nov 2011
- Software defect correction and testing. Implementing new functionality.
- Network design, implementation, testing, and documentation.
- Network test rig design, implementation, and formal test specification (SubSat).
- Automating the installation, configuration, and testing process.
- Writing and justifying the test plans and automation test strategies.
- The design, implementation, and documentation of servers for network traffic capture / analysis, centralised maintenance and an automated installation server.
- The design, implementation, and documentation of a centralised logging server.
- Programming languages :- Perl, C, C++, Ada 83, Shell script, and SQL.
- Operating Systems :- Linux, AIX, XP, and W2K3.
Education, Courses & Certifications
Become a Full-Stack Web Developer, April - May 2018Certificates
Get the skills to work with both back-end and front-end technologies as a full-stack developer. You'll develop a solid foundation for working with servers and host configurations, performing database integrations, and troubleshooting front-end development issues.
Ruby on Rails 5 Essential Training, May 2018Certificate
Learn how to create full-featured, object-oriented web applications with the latest version of the popular, open-source Ruby on Rails framework. Ruby on Rails 5 Essential Training covers the essential features of the framework, along with best practices and real-world development techniques, resulting in a complete application with dynamic, database-driven content. Follow along to build your own version of the example project, a data-driven content management system, while you learn how to route browser requests, structure databases, render pages with dynamic content, process and validate form data, and configure authentication. Instructor Kevin Skoglund, founder of web development agency Nova Fabrica, also introduces the design principles of CRUD and helps you master Rail's built-in helpers. By the end of the course, you should be able to use Ruby on Rails to build robust web applications that are both easy to scale and maintain.
Building a Website with Node.js and Express.js, May 2018Certificate
In this course, Ray Villalobos walks through the process of creating full-featured websites with these technologies. First, find out how to install each package and leverage Node.js features from within Express. Then learn how to build a basic application with templating engines like EJS; create more flexible, modular code with includes and conditional statements; build APIs to manage HTTP requests to add and delete content dynamically; and configure more complex routing. Along the way, Ray implements features like customer feedback forms and real-time live chat, so you can see exactly what Node.js and Express are capable of.
Gulp.js, Git, and Browserify: Web Project Workflows, May 2018Certificate
Ionic 3.0 for Mobile App Developers, May 2018Certificate
In a landscape where mobile apps are at the forefront of technology, it can be challenging to pick an appropriate strategy for reaching users on different platforms. In this project-based course, Sani Yusuf walks through the ins and outs of the Ionic 3.0 framework, and shows how to develop highly performant mobile applications targeting iOS, Android, and Windows while still making use of a single code base. Sani provides an overview of Ionic, and introduces key features in the latest version of the mobile SDK. To help provide a practical context for the course concepts, he takes you through how to build three separate mobile applications with Ionic.
Node.js: Test-Driven Development, May 2018Certificate
Create scalable and rock-solid applications for desktop, web, and mobile devices using a test-driven development process and Node.js. In this short course Alex Zanfir shows how to plan and write tests with Node.js and useful Node.js-based frameworks such as Mocha and Should.js. He'll test both the data and web layers of an example API and show how design solutions can emerge from testing.
Angular Essential Training, May 2018Certificate
Blockchain Basics, May 2018Certificate
We're on the precipice of a radical and disruptive new way of conducting all manner of transactions over the Internet. While still in its infancy, blockchain technology demands attention. In this introductory-level course, learn what blockchain is and what it might mean to you. Jonathan Reichental (named one of the world's top 100 CIOs in 2017) dives into blockchain technology from a conceptual perspective. The course is primarily non-technical by design, intended for those working in business leadership positions, data science, and IT management.
Blockchain: Beyond the Basics, May 2018Certificate
Blockchain is an exciting new technology that is redefining how we store, update, and move data. Learn about the blockchain and the implications of decentralized, encrypted data storage for business and society, in this course with Dr. Jonathan Reichental. He begins by explaining exactly how the blockchain works, including the concepts of cryptography, mining, distribution, and smart contracts. Next, he describes how the blockchain enables the most popular cryptocurrency, bitcoin. Learn how new bitcoin is generated, how it is transacted, and the requirements for participating as either an exchange, a trader, or a miner. The course also covers other popular technology manifestations of blockchain, such as Hyperledger and Ripple. Dr. Reichental then puts blockchain technology in context in several different industries, including energy and security, and helps learners understand how to think about the blockchain in ways that can be applied in any field.
Learning Bitcoin and Other Cryptocurrencies, May 2018Certificate
Bitcoin is a form of money that only exists online. While it's making headlines around the world, many people don't really understand how bitcoin works or the underlying concepts of cryptocurrency. In this course, Tom Geller demystifies bitcoin, revealing the promise and perils of the new crypto economy. Tom begins by explaining what bitcoin is, how it originated, and how it compares with other cryptocurrencies. Next, he explains how to get started by creating a bitcoin wallet, buying and selling bitcoin, and protecting your transactions. He discusses other top cryptocurrencies (Ripple, Ethereum, and IOTA) and explains how "initial coin offerings" (ICOs) have changed the investment landscape. Finally, he covers bitcoin mining, threats to the bitcoin economy, and how to connect with others in cryptocurrency communities.
Developing Android Apps, Feb 2016
As the first course in the Android Developer Nanodegree, Developing Android Apps is the foundation of our advanced Android curriculum. This course blends theory and practice to help you build great apps the right way. In this course, you'll work with instructors step-by-step to build a cloud-connected Android app, and learn best practices of mobile development, and Android development in particular.
Android Development for Beginners, Jan 2016
We will walk you through the process of making Android apps, but to get the most out of this course, you must bring your enthusiasm for learning, and budget time on your calendar to learn with us. By the end of the course, you'll build two simple (but powerful) apps that you can share with your friends.
UX Design for Mobile Developers, Jan 2016
This course is optimized for the developer who is looking to efficiently learn the most important design techniques that will help them make better apps (with a focus on mobile/Android). This is a UX design course built for current (and aspiring) mobile developers. In this short course, you'll step back from your IDE and dive into the techniques that great designers use to plan and prototype amazing apps before any code is written.