John Hedges, Developer in Monmouth, United Kingdom
John is available for hire
Hire John

John Hedges

Verified Expert  in Engineering

Software Developer

Location
Monmouth, United Kingdom
Toptal Member Since
June 3, 2021

John is an enthusiastic developer with a deep understanding of distributed applications and network protocols. He has a strong and wide-ranging set of skills, including the traditional languages, C and C++, languages of the internet such as Python and JavaScript, and the more modern Rust and Go. Whether working as a part of a team or on a solo project, John will strive to produce clean, ergonomic, and reliable code.

Portfolio

Outreal Interactive Entertainment Ltd.
Rust, WebSockets, C++, HTTPS, SSL, Windows, Git, GitHub...
Spotify
Go, Kubernetes, Google Cloud, BigQuery, Cloud Dataflow, Elixir, Grafana...
Growth Lab Inc.
Go, Git, GitHub, Slack, Blockchain, Unit Testing

Experience

Availability

Full-time

Preferred Environment

Git, Linux, Go, Rust, C, JavaScript

The most amazing...

...project I've worked on was a network assurance product, developed by a small company of around 40 employees and used by telcos such as Orange and Rakuten.

Work Experience

Senior Software Engineer

2023 - 2023
Outreal Interactive Entertainment Ltd.
  • Adapted an open-source ALVR game streaming project to run over WebSockets.
  • Developed an MVP for a gaming startup looking for seed funding.
  • Provisioned AWS instances with GPU capabilities to run compute-intensive applications in the cloud.
  • Used Rust and WASM for front end rendering of video and audio.
Technologies: Rust, WebSockets, C++, HTTPS, SSL, Windows, Git, GitHub, Amazon Web Services (AWS), NVIDIA Codec SDK, HTTP, Video Encoding, WebGL, WASM, Web Audio, Video Processing, Streaming, Cloud, Microservices Architecture, Unit Testing

Senior Software Engineer

2021 - 2023
Spotify
  • Led the effort to convert the Elixir forecasting application to Go, including multiple functional and efficiency improvements, documentation, unit and integration tests, and infrastructure as code.
  • Divided necessary work into tickets and sprints using Jira.
  • Created integration tests to generate listener data and test forecasted placements using a Docker Compose setup.
  • Created a Jenkins build and test scripts to supplement builds.
  • Implemented continuous delivery of the product, creating a new version with each merged pull request.
  • Mentored team members in good coding practice and instituted the use of a linter in our build pipeline.
  • Did constructive code reviews and pair programming to communicate ideas with other team members.
  • Submitted a fix required for the open-source linter golangci-lint.
Technologies: Go, Kubernetes, Google Cloud, BigQuery, Cloud Dataflow, Elixir, Grafana, Prometheus, Jira, Docker, Docker Compose, Git, GitHub, Jenkins, Kustomize, Druid.io, PostgreSQL, SQL, Google BigQuery, Cloud Storage, JUCE, Cloud Architecture, System Design, Bash, Bash Script, APIs, HTTP, Cloud, Microservices Architecture, Regression Testing, Unit Testing

Senior Software Engineer

2022 - 2022
Growth Lab Inc.
  • Developed a crypto-hashing module in Go to hash binary data using a seed.
  • Wrote a Go module and comprehensive tests to ensure reliability and correctness.
  • Collaborated with a distributed team of crypto experts using Slack.
Technologies: Go, Git, GitHub, Slack, Blockchain, Unit Testing

Senior Software Engineer

2021 - 2021
Arctoris
  • Worked 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.
Technologies: Rust, LaTeX, PDF, SVG, Open Babel, Git, NixOS, Microservices, Software Architecture, Back-end, ASCII, UTF-8, Robotics, Bash, Bash Script, Unit Testing

Staff Software Engineer

2020 - 2021
Juniper Networks
  • Worked 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 the Go microservice implementation to serve downloadable plugins.
  • Collaborated with two teams of about six people each, using Scrum and Jira for issue tracking.
  • Awarded a patent for innovative software architecture of test agents: Namespace-aware test agents for network performance measurement. https://patents.justia.com/patent/11546244.
Technologies: C++, Go, Agile, Virtualization, Jira, Git, OpenAPI, Python, TCP/IP, Junos OS, Scrum, Microservices, C, Back-end, Google Cloud Platform (GCP), Cloud Architecture, System Design, Embedded Linux, Embedded Systems, WebSockets, APIs, Bash, Bash Script, Linux, HTTP, Cloud, Microservices Architecture, Regression Testing, Unit Testing

Consultant | Senior Software Engineer

2018 - 2020
Netrounds
  • Provided consultancy for Netrounds to work with the back end of their network test and assurance product. The back end was built with 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 to incorporate a core C library into Python projects.
  • Located and fixed bugs in C/C++, Go, Python, and Bash scripts. Tested the product in each release cycle using Jira Test Case Management software.
  • Participated in two teams of five or six people using Scrum methodology.
Technologies: C, Python, Go, Docker, Git, Jira, Confluence, Slack, Bash, Linux, Protobuf, Apache Kafka, C++, REST, Quick EMUlator (QEMU), GitHub, Shell, Slack App, Amazon Web Services (AWS), Scrum, Scrum Master, Amazon S3 (AWS S3), Amazon EC2, Amazon EC2 API, Confd, Microservices, Software Architecture, Django, PostgreSQL, Back-end, Google Cloud Platform (GCP), Embedded Linux, Embedded Systems, WebSockets, APIs, Bash Script, HTTP, Cloud, Microservices Architecture, Regression Testing, Unit Testing

Consultant | Software Developer

2016 - 2018
Ribose, Inc.
  • 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.
Technologies: Rust, Git, Jenkins, C, Travis CI, Linux, Open Source, Docker, GitHub, Software Architecture, Software Design, System Design, Unit Testing

Consultant | Software Engineer

2014 - 2018
Croesyceiliog School
  • Developed Attainment Summary reporting for the Croesyciliog School to generate year-on-year reports for grades across each year group.
  • Used a JavaScript and React front end to upload Excel spreadsheets of student attainments and download the corresponding PDF reports.
  • 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.
Technologies: JavaScript, Haskell, LaTeX, PDF, CSS, Docker, Excel 365, CSV, Shell, Bash, Debian Packaging, Linux, DevOps, NGINX, React, Software Architecture, Requirements, Software Design, Front-end, Back-end, Full-stack

Freelance Consultant | Full-stack Software Engineer

2014 - 2016
Drystone
  • Worked on Ella for BMAT using Python and C. Ella is a Shazam-like system for detecting which songs are playing and then collecting and forwarding the recording rights to the respective artists.
  • Scripted Blender, a 3D modeling system, to generate a series of images for an online game using Python and Blender.
  • Created an HTML template system in Haskell for a dashboard using rdash-ui and a responsive email in the style of MJML using Haskell combinators instead of custom Markup.
  • Implemented a system to queue incoming emails and forward 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.
Technologies: Python, C, Blender, Haskell, JavaScript, HTML, Shell, Exim4, Node.js, MongoDB, RabbitMQ, ActiveMQ, Lua, Raspberry Pi, Requirements, Software Architecture, Software Design, CSS

Consultant | Full-stack Developer

2000 - 2015
Taskworthy
  • Worked as an IT consultant and developer for Taskworthy, a high-end bespoke interior joinery manufacturing company.
  • Designed and built bespoke wardrobe design software with JavaScript and Ajax on the front end and Python, XML, and XSLT on the back end. Customers could design a wardrobe and a precise cutting list and workshop schedule were generated as a PDF.
  • 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 a PDF.
  • Hosted websites and email using Apache, Nginx, and Exim4 on Debian Linux.
Technologies: Perl, Apache, CGI, NGINX, XML, XSLT, PDF, HTML, JavaScript, Ajax, Python, DevOps, CSS, Back-end, Front-end, Full-stack, ASCII, UTF-8

Consultant | Back-end Developer

2013 - 2014
Blurrt
  • 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.
  • Contributed to defining the technology stack used by this startup.
Technologies: C, X (formerly Twitter) SDK, Back-end, Big Data

Consultant | Full-stack Developer

2008 - 2013
Percol 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.
Technologies: JavaScript, XML, HTML, NGINX, DevOps, XHTML, XSLT, CSS, Linux, Front-end, Back-end, Full-stack

Consultant | Full-stack Developer

2000 - 2011
The 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 imported hundreds of thousands of financial records daily 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.
  • Wrote several web front ends to the games using JavaScript, Java applets, and Flash.
  • Maintained and managed the Q-point system for many years, monitoring logs, fixing bugs, and dealing with customer support requests.
Technologies: C++, Perl, Apache, HTML, Flash, Java, JavaScript, Microsoft Foundation Classes (MFC), Microsoft Foundation Class (MFC) Library, Berkeley DB, Integrated Services Digital Network (ISDN), DevOps, Software Analysis, Software Architecture, Software Design, Front-end, Back-end, Full-stack, CSS

IT Consultant

2003 - 2009
Watts of Westminster
  • Worked 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.
Technologies: HTML, CSS, Exim4, Apache, DevOps, Linux

Consultant | Software Developer

1987 - 2000
Freelance
  • 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 several websites, including 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, using mainly Perl and HTML templates.
Technologies: C++, C, Visual Basic, MS-DOS, Perl, HTML, Assembler x86, BASIC, RISC Assembly

Production Scheduling for CNC Furniture Manufacturer

Using a JavaScript and Ajax front end coupled with Python and XSLT in the back end, I developed a website to drag and drop a wardrobe design from a set of components, sizes, and styles. The design was rendered and converted into a full cutting list and production schedule ready for the factory floor.

Patented Technology for Juniper Networks

https://patents.justia.com/patent/11546244
In general, the disclosure describes a method that includes partitioning resources of a computing device into a first namespace comprising a first physical network interface and a second namespace comprising a second physical network interface; creating, by a test agent executing as a process in the second namespace, a test agent child in the second namespace; migrating the test agent to execute as a process in the first namespace; communicating, by the test agent child via the second physical network interface, test packets; obtaining, by the test agent, network performance measurement data that is based at least on the test packets; and outputting, by the test agent while executing as a process in the first namespace, an indication of the network performance measurement data.
2000 - 2010

Bachelor's Degree in Computer Science

Open University - Milton Keynes, UK

Libraries/APIs

Protobuf, OpenAPI, Node.js, X (formerly Twitter) SDK, Microsoft Foundation Class (MFC) Library, jQuery, React, Amazon EC2 API, WebGL, Web Audio, Microsoft Foundation Classes (MFC)

Tools

Git, Jenkins, LaTeX, Vim Text Editor, Jira, Confluence, Slack, Travis CI, Blender, Shell, Exim4, RabbitMQ, ActiveMQ, GitHub, NGINX, Apache, Flash, Confd, BigQuery, Cloud Dataflow, Grafana, Docker Compose, Kustomize, Cgroups

Languages

C, Rust, JavaScript, HTML, Bash, Go, Python, C++, XSLT, XML, SQL, Haskell, Java, Lua, Visual Basic, Perl, Assembler x86, BASIC, XHTML, CSS, Elixir, Bash Script, WASM

Paradigms

Unit Testing, REST, Agile, Microservices Architecture, DevOps, Scrum, Microservices

Platforms

Linux, Docker, Raspberry Pi, Debian, Debian Linux, Apache Kafka, MS-DOS, Quick EMUlator (QEMU), Amazon Web Services (AWS), Amazon EC2, Google Cloud Platform (GCP), Kubernetes, Embedded Linux, Windows, Blockchain

Storage

MongoDB, Berkeley DB, Amazon S3 (AWS S3), PostgreSQL, Google Cloud, Druid.io

Frameworks

Django, JUCE

Other

TCP/IP, Open Source, Back-end, System Design, Cloud, CI/CD Pipelines, Networking, Regression Testing, Software Development, Software Design, Virtualization, PDF, SVG, Open Babel, NixOS, Ajax, RISC Assembly, Slack App, Integrated Services Digital Network (ISDN), Junos OS, CGI, Scrum Master, Excel 365, CSV, Debian Packaging, Software Architecture, Requirements, Software Analysis, Front-end, Full-stack, Big Data, Prometheus, Google BigQuery, Cloud Storage, Cloud Architecture, ASCII, UTF-8, Robotics, Embedded Systems, WebSockets, HTTPS, SSL, NVIDIA Codec SDK, HTTP, Video Encoding, APIs, Containers, Video Processing, Streaming

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring