- 250 upstream Linux kernel patches (as of v5.0)
- Linux kernel maintainer (scripts/leaking_addresses.pl).
- 9 months commercial Golang experience.
- Undergraduate and postgraduate degrees in computer science.
- 4 years software development experience.
- Upstream Linux kernel contributor since 2016.
- 12 years experience using Linux.
- 24 month software apprenticeship.
- Founder of Central Coast Linux Users Group.
- Founder of Crowd Coded Pty Ltd.
Open Source Experience
Open source contributions made to the following projects, among others:
- Linux Kernel (C ).
- ZFS (C ).
- Kubernetes (Go)
- Mystereum (blockchain, Go).
- Gonum graph library (Go).
- OpenBazaar-Server (Python).
- Guile Scheme (Scheme, C).
- Binutils, GNU Assembler (Documentation).
Linux kernel contributor since May 2016. Author and maintainer of intree kernel
scripts/leaking_addresses.pl. Responsible for hashing
%p, landed in
v3.15. Involved in the removal of Variable Length Arrays
from the kernel tree, enabling
make -Wvla. Worked on layer 2 networking
code. Focus on the KS7010 SDIO Wi-Fi driver. PowerPC contributions; while resolving
PowerPC kernel issues contributed documentation patches to the GNU Assembler, as
well as assembly code. Various other contributions to: device drivers (staging),
networking (including wireless), Kernel Self Protection Project, storage, and
memory management. 200+ patches merged into the mainline.
While studying data structures and algorithms contributed code, and design test implementation, to the Gonum graph library written in Golang. Utilized graph library as reference while implementing solutions to graph problems on HackerRank.
Contributed to the Free Software Foundation Guile project. Interacted with Guile community via public mailing list. Iterated multiple revisions in order to assimilate a personal fix into a patch that was acceptable by the community. Produced a solution to a known outstanding issue requiring a multi- language patch set in C and Scheme.
Contributed to the OpenBazaar Server project, codebase in Python. First non-company contributor to the project. Most patches were unit testing and code refactoring. Some work on the command line interface and interoperability between operating systems.
October 2018 – present: Software Developer Crowd Coded Pty Ltd
Contract software developer. Role involves:
- Development and maintenance of userspace applications in Golang and Python.
- Upstream Linux kernel development (memory management).
January 2018 - October 2018: Software Developer AppOrbit Incorporated
Role involved debugging and developing new features. Code base is predominantly Golang but also includes userspace C code and an out of tree kernel module.
Testing done in Python, Bash, C, and Golang. Responsible for writing and maintaining end to end tests (written in Python and shell) utilizing docker in docker.
Assisted in building release images using Packer targeting AWS and Google Cloud. Project is developed and released as a docker image. Development environment is docker running in Centos on top of Vagrant.
February 2017 – December 2017: Junior Kernel Developer Crowd Coded Pty Ltd
Started out doing code clean up in drivers/staging. Worked on the KS7010 SDIO
WiFi driver. Hashed
%p. Authored and became maintainer
April 2015 – March 2017: Software Development Apprenticeship
Two year self directed and funded software development apprenticeship. See below for details.
January 2013 – March 2015: Sales Manager Black Swan Trading Company Pty Ltd
Sales and logistics. Managed a staff of 5.
January 2007 – December 2012: Support Technician Sydney City Networks
Mac OSX support technician. Residential and small office network design, installation, and support.
24 month software development apprenticeship. Worked assiduously on becoming a competent, professional programmer. Maintained a minimum 40 hour working week (typically 50+). Logged hours and topics worked. Topics include; computer architecture, programming languages and theory, operating systems, data structures and algorithms, professional software development methodology and practices. See below ‘code written in last 12 months’ and ~/books. Text highlights include;
- The Art of Computer Programming (volumes 1 and 2) Donald E. Knuth
- Advanced Programming in the UNIX Environment W. Richard Stevens, Stephen A. Rag
- Structure and Interpretation of Computer Programs Harold Abelson, Gerald Jay Sussman with Julie Sussman
- Applied Cryptography Bruce Schneier
- Clean Code, A Handbook of Agile Software Craftsmanship Robert C. Martin
See Github repository for code written during apprenticeship. All code worked on is open source unless explicitly requested otherwise (i.e Project Euler, Eudyptula Challenge).
Graduate Diploma in Computer Science [Pass with High Distinction]
University of New England, Australia (completed 2014).
- Parallel and Distributed Computing.
- Computer Architecture and Assembler.
- C++ Programming.
- Programming Languages for Artificial Intelligence.
- Web and Internet Programming.
- Information Technology Project (dentist patient management application in Objective C).
- Graduate Diploma in Computer Science Project (UNIX shell written in C).
Bachelor of Science
University of Sydney, Australia (completed 2008).
- Awarded Bachelor of Science majoring in computer science.
- Completed double major, software development and computer networking.
Founded the Central Coast Linux Users Group of New South Wales in February 2014. Announced the intent prior, at Linux open source conference, Linux.conf.au. Lead role in organizing and administering the group. Set up a unincorporated association for governance. Acquired sponsorship of venue to hold monthly meetings. Financially supported the group for the first three years.
Given presentations on software related topics at the Open Source Summit North America 2017, Central Coast Linux Users Group (multiple) and the Australian Computer Society (2015).
Motivation for Writing Code
- Collaborating with others to produce the best possible codebase/project.
- Continually learning and refining skills and technique (the craft).
- How good ‘clean code’ looks on the screen.
- The feeling when an insurmountable problem dissolves.
- Constantly refining.