Russell Stuart, Software Developer in Waterford West, Queensland, Australia
Russell Stuart

Software Developer in Waterford West, Queensland, Australia

Member since October 15, 2021
Russell has enjoyed solving complex problems using software and hardware for decades. He paid his way through university, writing accounting systems for hospitals. Russell then formed a company to develop cash registers, writing the BIOS, the operating system, a distributed database, and networking. After selling the firm, he discovered the open-source and used it to build a computer system covering 20 sites across Australia for a firm that grew into the world's largest employer of mechanics.
Russell is now available for hire

Portfolio

  • Aliyoop
    Python, Django, Django ORM, Django REST Framework, Celery, Elasticsearch, AWS...
  • Lube Mobile PTD LTD
    Linux Administration, Networks, AngularJS, Vue.js, TypeScript 3...
  • SET Technologies
    C, Assembler x86, SQL, Team Leadership, Embedded Systems...

Experience

Location

Waterford West, Queensland, Australia

Availability

Full-time

Preferred Environment

Debian Packaging, PHP, TypeScript, Bash Script, Embedded C, Asterisk, SQL, Linux Network Stack, Python

The most amazing...

...thing I've built is a distributed, replicated, sharded database and the LAN protocols if ran on, long before any of those named became commonplace.

Employment

  • Back-end Developer

    2022 - 2022
    Aliyoop
    • Designed the back end for a mass email marketing platform, creating a specification. The front end was developed by a separate team, communicating with the back end solely via REST.
    • Costed the specification in man-hours and developed an implementation schedule. The specification was handed over to the front-end developers so the front and back end could be developed in parallel.
    • Wrote the back end according to the specification.
    • Developed a unit test framework for the module running on AWS to ensure it was tested against the actual AWS API. The REST API had 100% unit test coverage, tested against mocked AWS requests and responses collected by the AWS unit test framework.
    Technologies: Python, Django, Django ORM, Django REST Framework, Celery, Elasticsearch, AWS, AWS STS, AWS IAM, AWS SES, AWS Push Notification Service (AWS SNS), AWS SQS, Pytest, AWS EC2, Boto 3, Cloud, Back-end Development, CI/CD Pipelines, GitLab CI/CD
  • Technical Lead

    2001 - 2021
    Lube Mobile PTD LTD
    • Created a VPN (GRE/IPSec/IPv4/IPv6) with 30 Linux machines spanning Australia. The VPN did automatic failover to redundant links.
    • Developed REST and SOAP APIs for vendors in Java and Python, implementing real-time stock on hand lookup to find the nearest store with all the required parts, real-time ordering, pick-up notification when packed, invoicing, and credit notes.
    • Designed and wrote the Android application.
    • Created a distributed digital PABX spanning 20 servers and 250 mobile machines, with IVR's, centralized call logging from all of the 20 servers, a call center queues serviced by 12 people, later making the queues work over softphones during COVID-19.
    • Read the Kernel source of the undocumented Linux traffic control engine to produce Linux-tc-notes. This was so real-time traffic, such as VoIP streams and keyboard-interactive, ran smoothly on slow ADSL links. It was of some Linux man pages.
    • Created a tracking system using GPS units I sourced from China, providing real-time tracking, driver behavior monitoring, geofences, and a customer-facing web page providing real-time tracking of the mechanic on their way to the job.
    • Made a dynamic PHP website static with remaining dynamic bits done as SPA’s by developing a simple CMS compiler in PHP. It did static checking like dangling links. I wrote a WebGUI for it in TypeScript, enabling it to grow from 50 to 3,000 pages.
    • Developed a multilingual Postgres and SQLite replicator for SQL in Python. It isolated the main database by replicating a tiny subset of the webserver. Sensitive data was encrypted with a 256 bit AES key, split between the server and the customer.
    • Took over maintenance of iBCS, a set of open-source kernel modules that let SysV and other old variants of Unix run natively on Linux to support an SCO Unix application. Later, I ported it to 64-bit kernels, then userspace.
    • Developed Pam-python and python-pcsclite, open-source Python C modules that interface to PAM and PCSClite, a smart card library. The PAM modules made implementing roving Linux logins easier, pcsclite was used to lock down mobile phone SIMs.
    Technologies: Linux Administration, Networks, AngularJS, Vue.js, TypeScript 3, Android Development, SOAP, PHP, TypeScript, Bash, Python, Asterisk, HTML, CSS, IPsec, SQL, Java, IPv6, C, C++, C#, Apache, Python 2, PHP 7, PHP 5, REST APIs, HTML5, Android SDK, Android, Full-stack, Mobile Development, Front-end, Back-end, Team Leadership, JavaScript, Python 3, Linux, Embedded Linux, APIs, REST, Asyncio, Software Architecture, Debian, Debian Linux, Open Source, Architecture, PostgreSQL, Web Development, Shell Scripting, Linux Internals, JSON, Asynchronous Programming, Full-stack Development, Front-end Development, Networking, Databases, OpenWRT, Scripting, Back-end Development, Scraping
  • Senior Programmer

    1990 - 1999
    SET Technologies
    • Wrote an x86 BIOS in assembler and C for a new board destined to become a cash register.
    • Designed and wrote a protected mode multitasking operating system for x86, mostly in C, which included power on resume from SRAM, video drivers, printer drivers, and network drivers.
    • Created the file system the OS used and layered an AVL tree-based database on top of it.
    • Designed and wrote the networking stack from layer three up; layer four was built to produce consistent results from redundant nodes. (Think Paxos, but done very differently.) The first attempt wasn’t reliable; the second attempt implemented a mathematical model.
    • Created a sharded, replicated, database on top of the AVL trees that typically spread its data across 10 to 50 nodes and moved it in real-time to ensure fast local access.
    • Worked in and led the team that developed the back end for the cash registers running on Windows using Delphi (Pascal) and SQL.
    • Designed and developed a time and billing system for accountants, lawyers, and similar professions built around the Psion 3 and along with some custom hardware to create a cheap RS485 network. The back end ran on a PC, developed in C.
    • Implemented an EFTPOS interface for the cash registers, certified by multiple banks.
    • Did all the accountancy work for the firm, including preparing balance sheets, cash flows for the banks, tax returns, designed the G/L, wrote a procedure manual for daily tasks such as invoicing and purchase orders.
    Technologies: C, Assembler x86, SQL, Team Leadership, Embedded Systems, Software Architecture, Architecture, Low-level Programming, Asynchronous Programming, Databases, Scripting, Embedded Software, Firmware

Experience

  • iBCS-US
    https://ibcs-us.sourceforge.io/

    I took over the maintenance of iBCS (Intel Binary Compatibility System) to allow my employer to run an SCO Unix application running under Linux. iBCS supports running many different Unix personalities under Linux. Initially, I packaged it for Red Hat (produced a .rpm) and later for Debian (a .deb package).

    I ported the original 32-bit kernel modules to the 64 bit Linux kernel. Later, when the ever-changing kernel ABI made continued maintenance of the kernel modules difficult, I figured out how to intercept the foreign syscalls and emulate them purely in userspace. As I had no way of testing most of the personalities the kernel modules emulated, their code had to remain largely untouched, so iBCS-US had to reproduce the Linux 2.6 kernel environment they thought they were running in, in userspace. They required replicating many kernel data structures such as inodes, file descriptors, and functions such as kernel mode to user mode copying, the kernels memory management, and loading executables into RAM.

  • Pam-python
    http://pam-python.sourceforge.net/

    Native Linux user authentication uses an API/library called PAM (Pluggable Authentication Modules). PAM is middleware enabling programs such as login, XDM, and SSH to authenticate a user or session without knowing how the administrator wants that authentication and session management done. The administrator is free to select one or more of the canned authentication and session modules supplied with PAM such as passwords, FIDO2, Kerberos, or write their own.

    Until Pam-python arrived, a custom PAM module had to be written in C, and that C module would then be loaded into the most security-sensitive programs in the system—the ones that authenticated and authorized the users. With Pam-python, these modules could be written in Python, thus eliminating whole classes of security problems endemic in C programs such as buffer overruns, dangling pointers, and since Python destroys all objects on exit—most resource leaks.

    Pam-python works by dynamically loading the Python interpreter library into the program when a Python PAM module is referenced and mediates the interface between the Python program and the rest of the system, which is typically written in C. Pam-python is written in C itself and comes with 100% unit test coverage.

  • lrparsing
    http://lrparsing.sourceforge.net/

    Python-lrparsing is an LR(1) parser generator, augmented so some tasks LR(1) makes difficult, like processing lists, associative operators, and prioritizing some productions, are easy to do.

    To the best of my knowledge, it produces the faster parsers out of all the Python parser generators, beating most of the competition by an order of magnitude. It hijacks the Python expression syntax so that LR productions can be written in native Python, with syntax checked by the Python interpreter, rather than demanding its input be supplied by strings. It includes error recovery, a tokenizer that can be replaced, and very atypically for a parser generator user-friendly error messages. It comes with extensive documentation, I suspect the most extensive of any parser generator out there. Examples provided include a Lua 5.2 interpreter and a parser for all SQLite3 syntax. It has 100% unit test coverage.

  • Solifidy
    https://solidify.sourceforge.io/

    Solidify turns dynamic websites into static ones. The process is sometimes called "flat filing" and is often done with a tool like Wget. Solidify was written to flat-file a poorly maintained WordPress site that was becoming a security risk.

    Unlike simple tools like Wget, Solidify converts all URLs within a site to be relative, and it also processes URLs discovered in CSS and JavaScript. It can also edit the site as it is downloaded to remove parts that make it difficult to handle, for example, the "compare revisions" feature on Wikis.
    Allowing you to compare any two revisions of a single page with 100 revisions, the number of ways of viewing that page explodes from 100 to 9900. It can also handle local copies of assets the original site loaded from foreign servers, so random internet outages are less likely to cause the result to break.

    To speed the process up, Solidify typically downloads six pages concurrently in background threads and processes the results in another thread when gives it another advantage over Wget and similar tools: it's much faster.

  • Driver for the LaCrosse WS2300
    http://ws2300.sourceforge.net/

    LaCrosse WS-2300 was a weather station with a proprietary windows driver to collect the data. I wanted my home Debian web server to have a page displaying the local weather, both current and historical, so with the aid of other open-source developers, I reverse-engineered the RS232 protocol and wrote a Python driver for it.

    The driver could be run interactively to see current readings and program the device. It could also be run as a background daemon, continuously collecting data and summarising it into snapshots of what happened over configurable time intervals like five minutes, an hour, or whatever, writing the summary to disk.

    The web front end was a GUI for that summaries data, presenting it in various ways. It handled unexpected interruptions such as power failures by saving partially collected data and resuming from where it left off when next started.

    The driver can be imported as a standard Python module, so the protocol deciphering and data collection could be used without the rest of it. I ceased work on the driver when the LaCrosse was retired, but its modular nature has meant other open-source projects such as WeeWX could use it as their driver, so it lives on.

  • Scaper-helper
    http://scraper-helper.sourceforge.net/

    I wrote scraper-helper in Python 2 and 3 when I discovered that most websites don't supply APIs for the data they house.

    Scraper-helper is a web proxy that records every aspect of interactions of a website, including every detail in the HTTP requests and responses, the details of SSL certificates, and the timing. It writes every asset it sees to a separate file. It also generates X.509 certificates needed to perform the necessary man-in-the-middle (MITM) attack on SSL sites to make this possible.

    A novel feature of scraper-helper is it can playback to the website the browser interactions recorded earlier. In other words, it can send the post's and other interactions and record the site's responses just as if the browser sent them, including the timing between requests. The developer can edit the recorded script, reducing it to a minimal set of steps and eliminating timing pauses if they aren't relevant. The recorded script can then be translated to code to produce the web scraping application.

  • DotGnu – a C# and .NET Implementation
    https://www.gnu.org/software/dotgnu/

    DotGnu is an open-source C# implementation, now defunct.

    I used it as an open-source version of C# under Linux to interface to a new device that was being developed using Windows CE's C# implementation.

    Using C# meant the protocol implementation could be shared, saving time for both sides. The vendor's protocol driver used multiple threads and timers and unfortunately had to be rewritten and the rewrite was given back to the vendor so their side would work too. Sadly, it wasn't just the driver implementation that was buggy, DotGnu's mutex's and locking deadlocked or didn't lock at all on rare occasions.

    My contribution to DotGnuwas was rewriting the CLI's threading, mutex, and timer implementations which was done in C.

  • Rdiff-image
    http://rdiff-image.sourceforge.net/

    Rdiff-image is a backup solution aimed at open-source VM's. It creates full and differential backups to Amazon S3 and local storage. It splits the backup into two sections—secret and public. Used together, a restore from the secret and public backup completely restores the VM. The public portion contains the bulk of the VM image—everything from the bar, the keys, passwords, and private information.

    The public version can be restored without the secret part. You get a working VM with all passwords and keys set to a well-known value like "x" when you do that. The objective is to let open-source developers download the VM and maintain it collaboratively.

    Rdiff-image handles when to automatically create full and differential backups and prunes older backups as they become less relevant. It does it in a way that optimizes both safety, like the differential is always off a full, never another differential, and space. A backup of a 500GB VM is currently handling email, blogs, and a website for a club, with hourly backups during a week, weekly backups for a few months, and monthly backups for a couple of years; going back seven years costs around $0.20 per month.

Skills

  • Languages

    C, PHP, Bash Script, Embedded C, SQL, Python, Python 2, Assembler x86, HTML, CSS, Python 3, JavaScript, HTML5, PHP 5, PHP 7, TypeScript, Java, C++, C#, Domain-specific Languages (DSLs), Rust, C#.NET
  • Tools

    Asterisk, Apache, Boto 3, GitHub, Git, Celery, AWS IAM, AWS SES, AWS Push Notification Service (AWS SNS), Pytest, GitLab CI/CD
  • Paradigms

    Asynchronous Programming, REST, Unit Testing, Mobile Development
  • Platforms

    Linux, Debian, Debian Linux, Embedded Linux, Amazon Web Services (AWS), OpenWRT, Android, AWS STS, AWS EC2
  • Storage

    JSON, Databases, AWS S3, PostgreSQL, Elasticsearch
  • Other

    Debian Packaging, Linux Network Stack, Linux Administration, Web Development, Embedded Systems, Back-end, Software Architecture, Web Scraping, Open Source, Open Source Customization, Architecture, Low-level Programming, Shell Scripting, Linux Internals, Networking, Scripting, Embedded Software, Scraping, IPsec, Front-end, Full-stack, APIs, Cloud, Full-stack Development, Front-end Development, Back-end Development, Firmware, Distributed Systems, Android Development, SOAP, IPv6, Linux Kernel Modules, Compilers, Team Leadership, HTTP, HTML Parsing, Regular Expressions, Background Threading, Reverse Engineering, Document Design, HTTPS, Proxy Servers, SSL, SSL Certificates, PKI, Thread Scheduling, Locks, VM, AWS, AWS SQS, CI/CD Pipelines
  • Frameworks

    AngularJS, Sphinx Documentation Generator, Android SDK, Django, Django REST Framework
  • Libraries/APIs

    Vue.js, REST APIs, Asyncio, Django ORM

Education

  • Bachelor's Degree in Computer Science
    1979 - 1983
    University of Queensland - Brisbane, Australia

To view more profiles

Join Toptal
Share it with others