About

Me

My name is C J du Preez. I currently live in Adelaide, South Australia. I am available for hire. This is a page about my skills and work experiences you may find useful. My GPG key fingerprint is:

'618F 1C01 B9C6 C04F 851F A753 6AFA E20D 731A CD16'

Skills

I have more than eight years of experience in software development and system administration. I have experience in the following programming languages:

  • Go (the logic for this site is written in Go)
  • C
  • Python (versions 2 and 3)
  • Java (versions 7 and 8)
  • Ruby
  • Perl
  • PHP

I am very experienced with standard development tools such as Gradle (build configuration), Git, Mercurial and Fogbugz (bug tracker similar to Jira). I have used Eclipse (Integrated Development Environment) although I've been using Emacs lately and I'm loving it. I am very comfortable using MySQL and Postgresql for database management.

I have extensive GNU/Linux experience. I have maintained servers running CentOS 6 & 7 (based on Red Hat Enterprise Linux), Debian and Ubuntu and developed and supported the applications running on these servers. My operating system of choice for day-to-day development work is Arch Linux.

I have a Bachelor's degree in Engineering (B.Eng.), Electrical and Electronic from Stellenbosch University, South Africa.

I completed a free online course (Cryptography I by Dan Boneh) on www.coursera.org to learn more about cryptography as I find it quite interesting.

Some fun (usually also useful) things I have done

Wrote this site using Go, Bootstrap (incredibly useful), HTML (who would have guessed it) and a bit of cyberpunk-inspired CSS. I had heard good things about Go - so I decided to give it a go (see what I did there ;) and I must say it has definitely become one of my favourite programming languages. The site provides Subresource Integrity hashes for third party content references (bootstrap, google fonts, jquery) in <link> and <script> elements in an attempt to prevent tampering - this does not apply to normal <a> links. The site itself is secured using HTTPS for free thanks to the awesome people behind the Let's encrypt project.

Automated the base installation of servers using Kickstart files (CentOS) or Preseed files (Debian). These base images were then automatically provisioned for various roles using Ansible (the VPS running this site was provisioned using Ansible). I learned a few things about working with SELinux along the way to help secure your servers. Most of the servers I provisioned were virtual machines running in either VirtualBox or QEMU/KVM. I automated the creation of new QEMU/KVM virtual machines using Libvirt commandline tools.

Created Debian packages to enable secure application deployment using Debian package repository infrastructure. I was able to create the Debian packages Linux-platform agnostically by using a Debian Docker image to build the packages within a container using native Debian package build tools. I used this to build Debian packages natively on my Arch Linux machine. Reprepro was used to host a custom Debian package repository.

Set up VPN infrastructure using the Libreswan implementation of IPSec with X.509 machine certificates for improved security.

Projects I have worked on

Development and maintenance of a data aggregation tool developed using the Perl Catalyst framework and Ruby for batch job scripts. The Catalyst framework provides a web interface to the data aggregation tool. The Ruby scripts fetch data from various sources. The database system used is Postgresql. I was also responsible for installation, maintenance and provisioning of CentOS servers used for development testing, Git server hosting, virtual machine hosting and production. Migrated the company's source code version control system from Subversion to Git.

Payment system providing EFT (Electronic Fund Transfer) and VAS (Value Added Services) to customers at retail outlets. EFT involves processing electronic payments via card (both magstripe and EMV cards). VAS involves services such as the purchase of prepaid electricity, prepaid airtime and facilitating bill payments. EFT payments use the ISO8583 standard for communication. The main product application is written in Java. There is also a web interface written in PHP. The database used is MySQL. Various supporting scripts written in both BASH and Python are used. The operating system is Debian. Added functionality to allow fuelling of fleet vehicles using a tag-based system as a substitude for cards to help combat fraud. Upgraded existing operating system from Mandrake Linux 10.0 to Debian Wheezy. I am familiar with PCI DSS (Payment Card Industry Data Security Standard) including P2PE (Point to Point Encryption) as part of securing a payment application.

Development of a traffic controller according to the NEMA TS2 specification using the C programming language.