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.
ExperienceEmbedded C - 20 yearsLinux Administration - 20 yearsPython - 20 yearsLinux Network Stack - 20 yearsSQL - 20 yearsWeb Development - 15 yearsPHP - 10 yearsTypeScript - 2 years
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.
- 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.
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.
- 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.
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.
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.
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.
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 WS2300http://ws2300.sourceforge.net/
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.
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 Implementationhttps://www.gnu.org/software/dotgnu/
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.
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.
Asterisk, Apache, Boto 3, OpenVPN, GitHub, Git, Celery, AWS IAM, Amazon Simple Email Service (SES), AWS Simple Notification Service (SNS), Amazon Simple Queue Service (SQS), Pytest, GitLab CI/CD
Asynchronous Programming, REST, REST API Architecture, Unit Testing, Mobile Development
Linux, Debian, Debian Linux, Embedded Linux, Amazon Web Services (AWS), OpenWRT, Android, AWS STS, Amazon EC2, Raspberry Pi
JSON, Databases, Amazon S3 (AWS S3), PostgreSQL, Elasticsearch
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, System Architecture, Data, IPsec, Front-end, Full-stack, APIs, Cloud, Full-stack Development, Front-end Development, Back-end Development, Firmware, Distributed Systems, System Architecture Design, Technical Documentation, 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, CI/CD Pipelines, Linux Kernel Programming, Linux Kernel
AngularJS, Sphinx Documentation Generator, Android SDK, Django, Django REST Framework
Vue, REST APIs, Asyncio, Django ORM, OpenAPI
Bachelor's Degree in Computer Science
University of Queensland - Brisbane, Australia