John Hedges
Verified Expert in Engineering
Software Developer
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
Experience
Availability
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
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.
Senior Software Engineer
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.
Senior Software Engineer
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.
Senior Software Engineer
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.
Staff Software Engineer
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.
Consultant | Senior Software Engineer
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.
Consultant | Software Developer
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.
Consultant | Software Engineer
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.
Freelance Consultant | Full-stack Software Engineer
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.
Consultant | Full-stack Developer
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.
Consultant | Back-end Developer
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.
Consultant | Full-stack Developer
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.
Consultant | Full-stack Developer
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.
IT Consultant
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.
Consultant | Software Developer
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.
Experience
Production Scheduling for CNC Furniture Manufacturer
Patented Technology for Juniper Networks
https://patents.justia.com/patent/11546244Skills
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
Libraries/APIs
Protobuf, OpenAPI, Node.js, 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, Cgroups
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
Other
TCP/IP, Open Source, Back-end, System Design, CI/CD Pipelines, Networking, 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, Kustomize, 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
Paradigms
REST, Agile, DevOps, Scrum, Microservices
Frameworks
Django, JUCE
Storage
MongoDB, Berkeley DB, Amazon S3 (AWS S3), PostgreSQL, Google Cloud, Druid.io
Education
Bachelor's Degree in Computer Science
Open University - Milton Keynes, UK
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring