The best thing about working in technology is how there is always something new to learn. Finding ways to improve how I work, how my team works, and solving hard engineering and business problems is great fun. As I continue to try new languages, frameworks, technologies, development principles and methodologies, I find that my university degree has given me a solid foundation in theory to benefit the practical experience I gain in every project I undertake at work, and in personal projects.
Thread - Software Engineer, June 2014 - Present
As part of a product-focused engineering team at Thread, much of my role involves projects designed to address key business metrics such as margin, conversion or revenue growth, although a core part of my job is to help create a great engineering culture in which to work.
I’m frequently involved in the rapid development of new product features designed to address user feedback, and work closely with designers, stylists, copy-writers, and marketers to achieve this. I also work on pure engineering projects, such as our build processes, automation, and continuous delivery to help the team work faster and more effectively. I take part in code review on a regular basis, pair programming where appropriate, and participate in hiring for new engineers.
MWR InfoSecurity - Security Research and Development Intern, Summer 2013
At MWR I was given the task of taking a new security product from the prototype stage to a fully featured working system. At the end of my internship I helped another developer to get up to speed on the project so that development could continue.
During my time at MWR I also participated in a penetration test against a client’s iOS application, finding vulnerabilities and verifying the client’s fixes in a code review, and I assisted on an incident response job where I analysed a piece of malware to reverse engineer the cryptography being used by it. I also learnt about some of the current threats to businesses, particularly Advanced Persistent Threats, and different forms of attack that have been identified.
GoSquared - Software Developer, Summer 2012
At GoSquared I spent 4 months working on re-engineering the backend services that handle incoming web analytics data, making use of Node.js, Redis, Cassandra and more. I investigated the use of Amazon Elastic Map Reduce and competing products, and helped to set up the continuous integration and deployment systems used in the company.
Realmac Software - Software Developer Intern, Summer 2011
At Realmac Software I worked on improving an existing app, Courier, contributed to in-house frameworks that were shared between several applications, and helped put the finishing touches on Analog (since sold to Appuous) prior to its release at the end of my internship. Through code review and mentoring, I learnt a lot about the structure of larger applications, dealing with web services and APIs, and about making very high quality, user-experience focused apps.
- MEng Computer Science with Mobile and Secure Systems
at the University of Southampton (2010-2014)
- Programming Principles: 92%
- Secure Systems: 82%
- Winner of 3rd Year Netcraft Prize
- A-Levels: Maths A, Physics A, Computing A*, Economics (AS) A
I make an effort to attend industry events, as I find them a great way of learning new skills, finding alternate points of view, and getting critical feedback on ideas. Events I’ve been to include Many to Many, Hackunamatata, National Hack the Government (multiple years), NSConference, Southampton Appathon, Random Hack of Kindness (multiple times), Rewired State: Parliament, Barcamp Brighton and Barcamp Southampton. I have won multiple hackathons (with some help from friends!).
I have also presented at PyConUK and the London Django Meetup Group.
- Experience using Postgres and Redis in production
- Previously worked on Objective-C, C# .NET MVC and Node.js codebases on professional projects
- Some experience with Haskell and Elm for personal projects
- Used Java, C and Io in university projects
- Knowledge of, and interest in, computer security issues.
- Basic knowledge, and interest in penetration testing and malware analysis.
- Experience with good software design practices.
- Extensive experience with code review.
- Experience with project management tools, bug tracking and testing feedback.
- Excellent written and spoken communication.
- Experience working in an environment with constant re-prioritisation of work.
- Always learning.