John Hedges, Software Developer in Hereford, United Kingdom
John Hedges

Software Developer in Hereford, United Kingdom

Member since May 13, 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 which include 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.
John is now available for hire

Portfolio

  • Arctoris
    Rust, LaTeX, PDF, SVG, Open Babel, Git, NixOS, Microservices...
  • Juniper Networks
    C++, Go, Agile, Virtualization, Jira, Git, OpenAPI, Python, TCP/IP, Junos OS...
  • Netrounds
    C, Python, Go, Docker, Git, Jira, Confluence, Slack, Bash, Linux, Protobuf...

Experience

Location

Hereford, United Kingdom

Availability

Part-time

Preferred Environment

Debian Linux, Vim Text Editor, Git

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.

Employment

  • Senior Software Engineer

    2021 - 2021
    Arctoris
    • 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.
    Technologies: Rust, LaTeX, PDF, SVG, Open Babel, Git, NixOS, Microservices, Software Architecture
  • Staff Software Engineer

    2020 - 2021
    Juniper Networks
    • 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.
    Technologies: C++, Go, Agile, Virtualization, Jira, Git, OpenAPI, Python, TCP/IP, Junos OS, Scrum, Microservices, C
  • Consultant | Senior Software Engineer

    2018 - 2020
    Netrounds
    • 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.
    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
  • 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
  • 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 to 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
  • Consultant | Full-stack Software Engineer

    2014 - 2016
    Freelancing 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.
    Technologies: Python, C, Blender, Haskell, JavaScript, HTML, Shell, Exim4, Node.js, MongoDB, RabbitMQ, ActiveMQ, Lua, Raspberry Pi, Requirements, Software Architecture, Software Design
  • 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 a JavaScript-and-Ajax 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 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
  • 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.
    • Helped to define the technology stack used by this startup.
    Technologies: C, Twitter SDK
  • 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
  • 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 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.
    • 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 Class Library (MFC), Berkeley DB, Integrated Services Digital Network (ISDN), DevOps, Software Analysis, Software Architecture, Software Design
  • IT Consultant

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

    1987 - 2000
    Various Companies
    • 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.
    Technologies: C++, C, Visual Basic, MS-DOS, Perl, HTML, Assembler x86, BASIC, RISC Assembly

Experience

  • 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.

Skills

  • Languages

    C, Rust, JavaScript, HTML, Bash, Go, Python, C++, XSLT, XML, SQL, Haskell, Java, Lua, Visual Basic, Perl, Assembler x86, BASIC, XHTML, CSS
  • Libraries/APIs

    Protobuf, OpenAPI, Node.js, Twitter SDK, Microsoft Foundation Class Library (MFC), jQuery, React, AWS EC2 API
  • Tools

    Git, Jenkins, LaTeX, Vim Text Editor, Jira, Confluence, Slack, Travis CI, Blender, Shell, Exim4, RabbitMQ, ActiveMQ, GitHub, Nginx, Apache, Flash, Confd
  • Platforms

    Linux, Docker, Raspberry Pi, Debian, Debian Linux, Apache Kafka, MS-DOS, Quick EMUlator (QEMU), AWS EC2
  • Other

    TCP/IP, Open Source, CI/CD Pipelines, Software Development, Software Design, Virtualization, PDF, SVG, Open Babel, NixOS, Ajax, RISC Assembly, Slack App, AWS, Integrated Services Digital Network (ISDN), Junos OS, CGI, Scrum Master, Excel 365, CSV, Debian Packaging, Software Architecture, Requirements, Software Analysis
  • Paradigms

    REST, Agile, DevOps, Scrum, Microservices
  • Frameworks

    Django
  • Storage

    MongoDB, Berkeley DB, AWS S3, PostgreSQL

Education

  • Bachelor's Degree in Computer Science
    2000 - 2010
    Open University - Milton Keynes, UK

To view more profiles

Join Toptal
Share it with others