Senior Software Engineer2021 - 2021Arctoris
Technologies: Rust, LaTeX, PDF, SVG, Open Babel, Git, NixOS, Microservices, Software Architecture
- Employed as a senior developer to help improve the engineering delivery for Arctoris's robotic drug discovery laboratory; diagnosed and made recommendations to remove bottlenecks in the adopted development process.
- Integrated SMILES chemical compound SVG images into PDF/LaTeX report generation in Rust; upgraded existing Rust software from Tokio v0.2 to Tokio v1.3.
- Worked in a distributed team of five using Jira for issue tracking.
- Researched the migration of build scripts from Rust native to Nix.
Staff Software Engineer2020 - 2021Juniper Networks
Technologies: C++, Go, Agile, Virtualization, Jira, Git, OpenAPI, Python, TCP/IP, Junos OS, Scrum, Microservices, C
- Employed as part of a team to integrate network test and assurance products into Juniper's routers and wireless devices. This involved a deep dive into Juniper runtime, Junos configuration, and libvirt virtualization.
- Adapted the existing network assurance device image for availability as VNF on NFX-150 series routers.
- Added download plugin support to C network assurance software. This enabled a remote orchestration of many assurance instances.
- Worked on Go microservice implementation to serve downloadable plugins.
- Worked in two teams of about six people each using Scrum and Jira for issue tracking.
Consultant | Senior Software Engineer2018 - 2020Netrounds
Technologies: C, Python, Go, Docker, Git, Jira, Confluence, Slack, Bash, Linux, Protobuf, Apache Kafka, C++, REST, Quick EMUlator (QEMU), GitHub, Shell, Slack App, AWS, Scrum, Scrum Master, AWS S3, AWS EC2, AWS EC2 API, Confd, Microservices, Software Architecture, Django, PostgreSQL
- Employed as a consultant by Netrounds to work with the back end of their network test and assurance product. The back end was built Go and Python and test probes with C/C++ and Python.
- Implemented a Go microservice to receive Protobuf messages from test probes over a WebSocket and published them to Kafka.
- Implemented an HTTP assurance product in C to repeatedly download content and trigger alarms on failure.
- Worked with a Python Django front end to integrate new models.
- Added multi-threading support to C++ UDP network monitoring software.
- Wrote an FFI adapter so a core C library could be incorporated into Python projects.
- Located and fixed bugs in C/C++, Go, Python, and Bash scripts. Tested the product each release cycle using Jira Test Case Management software.
- Participated in two teams of five or six using Scrum methodology.
Consultant | Software Developer2016 - 2018Ribose, Inc.
Technologies: Rust, Git, Jenkins, C, Travis CI, Linux, Open Source, Docker, GitHub, Software Architecture, Software Design
- Hired by Ribose as a consultant software developer to work on their award-winning secure collaboration platform.
- Designed and implemented Riffol, an open-source minimal init system in Rust to manage a small number of processes and aimed at docker containers.
- Designed and implemented Nereon/Nereond (an open source configuration library) and the configuration utility in Rust.
- Worked on Retrace, an open-source utility to test ELF binaries. It used the LD_PRELOAD technique to intercept C calls into the standard library.
- Maintained projects on GitHub using Travis and Jenkins CI/CD.
Consultant | Software Engineer2014 - 2018Croesyceiliog School
- Developed Attainment Summary reporting for the Croesyciliog School to generate year-on-year reports for grades across each year group.
- Wrote a back end in Haskell to convert the Excel spreadsheets to CSV, calculate the statistics required, and generate graphical reports using PDFLatex.
- Hosted, maintained, and managed a docker instance and Nginx proxy server to make the system available to the school's administration to generate the reports.
Consultant | Full-stack Software Engineer2014 - 2016Freelancing as Drystone
- Worked on Ella for BMAT. Ella is a Shazam-like system for detecting which songs are playing and then collecting and forwarding the recording rights to the respective artists (used Python and C).
- Scripted Blender, a 3D modeling system, to generate a series of images for an online game (used Python and Blender).
- Created an HTML template system in Haskell for a dashboard using rdash-ui and for a responsive email in the style of MJML but using Haskell combinators instead of custom Markup.
- Implemented a system to queue incoming emails and forwarding them to different email addresses at specific times. This was accomplished using Haskell, shell scripts, and Exim.
- Created a variety of monitoring plugins for a system overview dashboard collecting various metrics from MongoDB, Node.js, Conntrack, ActiveMQ, and RabbitMQ. The plugins were written in Lua.
- Wrote a C program to gather metrics over RS232 from a SATEK solar controller using a Raspberry Pi.
Consultant | Full-stack Developer2000 - 2015Taskworthy
- Worked as an IT consultant and developer for Taskworthy, a high-end bespoke interior joinery manufacturing company.
- Designed and implemented at least three versions of Taskworthy's website, including an admin facility to upload images. This used Python, XML, XSLT, and XML-FO to generate PDF.
- Hosted websites and email using Apache, nginx and exim4 on Debian Linux.
Consultant | Back-end Developer2013 - 2014Blurrt
Technologies: C, Twitter SDK
- Helped to develop an algorithm to measure sentiment in social networking posts.
- Wrote a C program to use Twitter's API to gather sentiment from their "Firehose" of Tweets based on simple search terms.
- Helped to define the technology stack used by this startup.
Consultant | Full-stack Developer2008 - 2013Percol Coffee
- Redesigned Percol's website using static XHTML templates, XML data, and XSLT stylesheets.
- Created a Python CGI back end for the interactive portions of the site.
- Maintained, monitored, and hosted the Percol.co.uk website using Nginx on Debian Linux.
Consultant | Full-stack Developer2000 - 2011The Real Adventure
- Co-created Q-points, a web and IVR sales inventive scheme procured by Black Horse Finance. Salespeople earned virtual Q points which they could gamble on the system and then redeem with high street vouchers.
- Worked on a Perl back end which daily imported hundreds of thousands of financial records to be redeemed by Q-points players. This system also hosted the game logic for the incentive gambling games. It ran on Linux with an Apache webserver.
- Developed a full C++ drag-n-drop IVR (telephone) system on Windows to manage voice calls to take callers through telephone games (such as a penalty shootout and blackjack), buy vouchers, order statements, and so on.
- Maintained and managed the Q-point system for many years, monitoring logs, fixing bugs, and dealing with customer-support requests.
IT Consultant2003 - 2009Watts of Westminster
Technologies: HTML, CSS, Exim4, Apache, DevOps, Linux
- Employed as a contractor for Watts, a textile company.
- Maintained a mixed network of Mac, Linux, and Windows PCs.
- Redesigned their website and hosted it along with the company's email on Linux, Apache, and Exim.
Consultant | Software Developer1987 - 2000Various Companies
Technologies: C++, C, Visual Basic, MS-DOS, Perl, HTML, Assembler x86, BASIC, RISC Assembly
- Co-founded Renwah, a consulting startup, after college. Projects included production scheduling software for Target Furniture in Northampton using BBC basic and C.
- Worked at Computasoft on their range of financial products, mainly converting their Noteware database system from BASIC into C and x86-assembly. Most notably I wrote a new disk sorting algorithm, boosting their sorting speed by a factor of ten.
- Wrote, for Cinteract Systems, a membership database system for sports centers in C using the now obsolete B-tree and R-tree libraries.
- Developed a number of websites among which were a contract vehicle hire system and an online bookshop (sadly not Amazon!). Both use HTML templating and Perl CGI back ends.
- Contributed to the implementation of Homework High, a BAFTA award-winning website commissioned by Channel 4; mainly Perl and HTML templates.