Section About
Start Game
Craig Walker
Software Engineer and Full Stack Developer
Craig Walker
Software Engineer and Full Stack Developer
It's only hard until it's done, but if it's shit it's shit forever. ..more
- Tim Schafer

Even while an active member of New Zealand's Fitness Industry, I dabbled in computer programming and web design to market myself and automate my surroundings. From the fitness industry, I transitioned into web design, focusing on the magic that can be created with a little javascript in the right place, pulling something that looked a little "flat" into something that popped.

From there I stumbled over the Linux operating system and was pulled back to my childhood playing with my Sega 3000. I was transformed. I learned to script in Bash, automating my everyday tasks, used Php to really ramp up the usefulness of my websites and thought I'd better formalise this information.

Massey University opened my eyes for a second time. This time to languages, algorithms, and data manipulation techniques. I realised that while the syntax of languages change, they mostly boil down to the same basic functions and at that point I started picking languages to suit the project, not forcing projects to suit my favourite language.

Portfolio

iQualify LMS

iQualify is a LMS serving many New Zealand education providers and commercial partners, such as Open Polytechnic Wellington (now under the Te Pukenga umbrella).

Full Stack Lead: Engineering, Architecture and Availability

    Skills for this role:
  • Team Leader
    • Work with Project Manger to define the scope of work
    • Guide my team to finish the tasks required to complete the work
    • Be available to quickly answer questions to keep the project moving forward
    • Critically Code Review each piece of work
    • Provide technical opinions to PM and Design Lead
  • Feature Development
    • Implement Storybook in the project
    • Creation of Education focussed Messaging components in Storybook
    • Creating APIs for Education focussed Messaging plugin/application
  • Technical Debt Reduction
    • Updating package dependencies
    • Replacing poorly maintained / abandoned packages
    • Reviewing and removing unused deployed assets

    Languages, Frameworks and Tools
  • Team Leader,
  • NestJS APIs
    • Mongo
    • Express
    • Angular2 and AngularJS
    • Node
  • M.E.A.N Stack
  • Azure, Heroku
  • Karma, Jasmine, Mocha
  • Swagger
  • Angular Material / Storybook
  • Typescript / Less / Scss
  • C# and MSSQL
  • Pug / Jade
  • LEAN methodology

Current Hobby - Marsupial

Fascinated by the information I can pull from my surroundings, I have slowly built and scrapped data to make the information I care about be available at my fingertips

I added NodeMCU platforms with temperature and humidity sensors after I purchased a Tuya sensor that required connection to an overseas server and was only accessable with a smartphone. I wanted more quality access to my data.

    Languages and Tools:
  • Postgres
  • Express (to capture Udp packets)
  • NestJS
  • Angular
  • Storybook
  • Less
  • Node
  • Python
  • Cordova (Running in VM)
  • Git

    Platforms:
  • 7 x boards with ESP8266
    • NodeMCU
    • Wemos D1
  • Raspberry Pi Server
    • NestJS APIs
    • Cron Jobs (python scripts)
    • Git repos
    • Platform for next interface
  • 12 year old Acer tablet

Council Submissions Tool

Current methods for making Submissions and Further Submissions are time consuming for staff and the public.

This project is designed to collect user Submissions and provide them to Local Government staff for review and acceptance. Upon acceptance, documents can be prepared for the Panel.

Project life cycle was 18 months

    Skills for this role:
  • Team Leader / Project Manager
  • Postgres
  • Python, Django
  • React
  • GraphQL
  • Scss
  • Node

Settlers of Catan

The brief for this project was to take a board game where each player takes turns and change it so that all players play at the same time.

This was the Massey Universtiy Capstone Project. I was paired with 4 other extramural students, each of us was working full time and 3 of us had families as well.

Project life cycle was 12 WEEKS

    Skills for this role:
  • API Design and Documentation
  • Test runner and Quality Assurance
  • Backend game management.

My grade for this project: A+ (see Downloadable CV for transcript)

Linux

I switched over to Linux 15 years ago, loading Xubuntu on an ailing XP laptop and was instantly converted.

    I now run:
  • Office Dev Machine (Ubuntu 23.04)
  • Office Server (Ubuntu 20.04, RAID 1)
  • Digital Ocean Servers (mix of Ubuntu 20.04 and 22.04)
  • 4 x Raspbian (for Raspberry Pis)
    • v4: Kodi Media Center
    • v3: Home server
      • NestJS Apis
      • Python scripts
    • v2: PiHole
    • v1: Dev board
  • 3 x laptops (Ubuntu 23.04)
    • My runabout
    • Kids BYOD laptops
  • VirtualBox (multitude of distros)

Maps and API's

This project required we build two independent mapping solutions. The first map was to demonstrate the major attactions on the West Coast of the South Island and difficulty getting to those areas posed. Most tourists saw the 130km distance but didn't appreciate the winding roads that would get them there.

The second map was part of an Itinerary building plugin we developed. It connects to BookIt servers, grabs all the available accommodation, dining and activities and places them on the map. Users can then build an itinerary and book from it.



Please Note
They have chosen their own hosting and it is starting to suffer performance issues.

    Skills for the role:
  • PHP
  • Wordpress Integration
  • Ajax api queries
  • Data management (to reduce multiple queries when variables hadn't changed)

Project life cycle was 12 months

Multi seller eCommerce

This project was initally slated to be an online portal where multiple retailers could sell their goods from a single "online mall". It's point of difference was that it would allow local retailers to compete against larger corporate entities while retaining their independence.

    Skills for the role:
  • Full DevOps lifecycle
  • Project Management / Team Leader
  • Test runner
  • Stripe Checkout integration for multiple sellers at once
  • Python 3 with Django
  • Postgres
  • Sass, Js, Html

Project life cycle was 9 months

They have chosen their own hosting and it is starting to suffer performance issues.

Small projects

These are small projects that keep the lights on:



I realised I lack the visual design skill but I can make a website do just about anything you want which is why I prioritise White Label work for other developers / graphic designers rather than

Local Government Submissions Software

    Software Used:
  • Docker
  • Python (3)
  • Django
  • Postgres
  • Git (local Gitlab install)
  • Bash scripts for automated deployment
  • html, js, sass
  • Ubuntu Servers (Digital Ocean and local)

Requirements:
Allow the general public to make digital submissions on upcoming Plans.
Current Situation:
Council staff take submissions by post, transcribe them into software, copy to Excel Spreadsheet to create emailing and Panel lists.
Goal:
All in one Saas package to easily provide required functionality.

Next

Local Government Submissions Software

    Database Notes:
  • Standarised to Boyce-Codd 3NF
  • Deployed in Postgres (Separate Docker Container)
  • Django interactions
  • Bash scripts to drop and rebuild during testing

Requirements:
Hold all information separately from core Django code to insulate data from code bugs / upgrades
Goal:
Allow bugs in code to be fixed, upgrades to run and All in one Saas package to easily provide required functionality.

Back
Next

Local Government Submissions Software

    DevOps Notes:
  • Agile development, short sprints, monitored with burndowns.
  • Small commits, tests written to confirm accuracy, automated testing with GitLab to protect the master.
  • Major releases tagged for easy revisions
  • Bash scripts to automate Docker builds anbd deployment.

Goal:
Create a rapid development environment with small goals tracked using burndown charts. We set up testing and CI/CD first so that all development would benefit from consistent and automated protection of the master branch. All merge requests require testing notes. Those notes are used test the merge request along with any other tests that the merger can think of before a request is merged.

Back
Next

Local Government Submissions Software

    A quick run through of the less sensitive areas:
  • A staff member can load a Plan for revision by the public
  • - The plan is split into it's nested parts
  • - i.e. 1. Introduction, 1.1. Subheading 1 .....
  • A signed in user can make a submission on that plan.
  • A staff member can check that submission and accept or reject it.
  • The signed in member can see the submission results.
  • Further submissions can be made on the original submissions
  • Hearings documents can be drawn up based on the submissions process

Conclusion:
Building custom SaaS using Python, Bash, Docker and Postgres on an Ubuntu 20.04 LTS server will be listed as one of my favourite projects. The opportunity to build a custom 3NF database, write the Tests that govern functionality and then to deploy it to a custom server configured to run the project optimally was an experience I wish to repeat.

Back

Settlers of Catan

    Software Used:
  • Node - Server Side
  • HTML, CSS, JS, jQuery - Client Side
  • Git (Github with ZenHub)
  • AVA - Server side testing
  • Python and Selenium - Client side testing

Requirements:
Take 5 extramural students and bring them together to pick and build a video game based on a current board game.
Current Situation:

  • 4 students had full time employment at the time (including me)
  • 3 students had young families (including me)
Goal:
Our surpervisor for this project advised us to choose a different game as the complexities of Settlers of Catan would prove to be to difficult to develop inside the timeframe.
We had sketched out all the required modules and rough timelines to completion inside the first week and were confident in successfully building out the entire project in the 11 weeks we had left. We chose the languages we would use with blind voting software, where each student anonomously picked their top 5 languages and the results were collated to form a list of top languages for the project. The same was used to pick the game initially.

Next

Settlers of Catan

    Game API:
  • I created, maintained and defended the API through development
  • All request / responses for information from client and server must pass through API (no extra requests)
  • Add the minimal amount of information in the packet to achieve desired result
  • I received most of the Merge Requests associated with data across the API

Goal:
Maintain an efficient (and stable) API with all data being passed for each round inside a single packet. Keep the API as lean as possible and reduce bloat where applicable.
In the last 2 weeks, we added an extra data channel in to allow in round trading which was separate from the API itself.
Successfully maintaining the API was a cornerstone of our success as everyone was on the same when passing data in a loosly typed language.

Back
Next

Settlers of Catan

Notes:
Apart from the Home wiki, which was a collaborative effort, I maintained the documentation for the project making sure they were up to date as the models changed (especially the API).
We constantly reinforced checking the wiki before starting each Issue to see how it would tie in gracefully into the existing layout.

Back
Next

Settlers of Catan

Goal:
Protect the master branch. The master should always be a stable and well managed branch and it is the "mergers" job to preserve that stability. Therefore any errors on the master would be traced back to the person that merged the code and a review made of why it was accepted initially.

Back

Linux - Office Server

The office server backs up all the Digital Ocean servers with a custom bash script executing Duplicity. Further bash scripts take 3 hourly SQL backups from each DO server.

For data protection I used RAID 1 to allow for a complete drive failure without affecting performance.

    Server Purpose:
  • Backups of Digital Ocean Servers
  • Local Gitlab instance
  • Local Mattermost instance
  • Local Nextcloud instance
  • running InvoiceNinja

Reasoning
I have an uneasy feeling about trusting my data (files, pictures, communication) to large multi-national corporations that use my data to generate income. I'm not a tin foil hat wearing conspiracy theorist, I just like to be responsible for the safety and security of my own work product and documentation.

Next

Linux - Digital Ocean

    Purpose:
  • Hosting a multitude of projects for public access.
  • One project requires a separate PostgreSQL server to prepare for rapid scaling
  • The same project requires a separate "Spaces" droplet to offload server traffic from core droplet, again in anticipation of scaling.
  • Hosting 45 domain names maintaining and monitoring A, CNAME, MX, SPF, DKIM and DMARC records etc...

Reasoning:
Digital Ocean provide a solid price to performance metric for hosting projects. There is the ability to scale droplets to meet demand and offload core function to another provider while retaining database and Spaces functionality in the platform.
As each droplet is a full linux VM, performance tweaks can be made to improve the user experience.
SSH access to each droplet allows for rapid updating, deployment and debugging.

Back
Next

Linux - Office Dev Machine

For every new release of Ubuntu, I create a separate partition and run my custom bash script from my local gitlab instance. Within 20 minutes, I have all my tools and softlinks to the Storage folders loaded. This keeps bloat to a minimum and gets rid of those pesky bugs that creep in while I test new projects and software.

    My base toolkit that has me operational includes:
  • SpaceMacs (Emacs / vim hybrid) (Code editor)
  • OpenSSH
  • Git
  • Nginx
  • Python3 and pip
  • Node
  • Mysql and Postgres
  • zsh
  • Virtualbox
  • thunderbird, firefox, chrome, lastpass, wpcli, gimp, spotify, mattermost, nextcloud, gparted, curl, peek, flameshot, etc...

Notes:
I run virtualbox for testing Linux distros, if I need to test using Windows specific software(Windows 8 and 10), or open my digital wallets (on separate VM's).

Back
Next

Linux - Wrapup

I am happy as a pig in muck ducking in and out of servers and docker containers using ssh. I back up files before I edit them. I don't mind if vim or nano are available, I'll use what's there and I won't "fluff" about making the environment "nicer" to use. I like to get in, make it work efficiently and get out (documenting as I go of course).

I run zsh, spacemacs and nvim on my local machine but all servers run stock bash, vim and nano as the less third party interference the better.

The tip of my cli tools are: cat, grep, less, man, ls -la, chown, chmod, scp, git xxxx, ssh xxxx, rm (-r), rmdir, mkdir, touch, cd, tail and piping together makes them more efficient again.

I generally find it quicker to open a terminal and do what I need to do than use the GUI interface with the majority of programs. If there is an opportunity to automate the terminal commands for later use, I'll add that to my bin folder and if not, I'll add it to my markdown library of commands or the appropriate wiki.

Back

Marsupial

    Server Purpose:
  • Backups of Digital Ocean Servers
  • Local Gitlab instance
  • Local Mattermost instance
  • Local Nextcloud instance
  • running InvoiceNinja

Reasoning
I have an uneasy feeling about trusting my data (files, pictures, communication) to large multi-national corporations that use my data to generate income. I'm not a tin foil hat wearing conspiracy theorist, I just like to be responsible for the safety and security of my own work product and documentation.

Next

Marsupial

    Purpose:
  • Hosting a multitude of projects for public access.
  • One project requires a separate PostgreSQL server to prepare for rapid scaling
  • The same project requires a separate "Spaces" droplet to offload server traffic from core droplet, again in anticipation of scaling.
  • Hosting 45 domain names maintaining and monitoring A, CNAME, MX, SPF, DKIM and DMARC records etc...

Reasoning:
Digital Ocean provide a solid price to performance metric for hosting projects. There is the ability to scale droplets to meet demand and offload core function to another provider while retaining database and Spaces functionality in the platform.
As each droplet is a full linux VM, performance tweaks can be made to improve the user experience.
SSH access to each droplet allows for rapid updating, deployment and debugging.

Back
Next

Marsupial

For every new release of Ubuntu, I create a separate partition and run my custom bash script from my local gitlab instance. Within 20 minutes, I have all my tools and softlinks to the Storage folders loaded. This keeps bloat to a minimum and gets rid of those pesky bugs that creep in while I test new projects and software.

    My base toolkit that has me operational includes:
  • SpaceMacs (Emacs / vim hybrid) (Code editor)
  • OpenSSH
  • Git
  • Nginx
  • Python3 and pip
  • Node
  • Mysql and Postgres
  • zsh
  • Virtualbox
  • thunderbird, firefox, chrome, lastpass, wpcli, gimp, spotify, mattermost, nextcloud, gparted, curl, peek, flameshot, etc...

Notes:
I run virtualbox for testing Linux distros, if I need to test using Windows specific software(Windows 8 and 10), or open my digital wallets (on separate VM's).

Back
Next

Linux - Wrapup

I am happy as a pig in muck ducking in and out of servers and docker containers using ssh. I back up files before I edit them. I don't mind if vim or nano are available, I'll use what's there and I won't "fluff" about making the environment "nicer" to use. I like to get in, make it work efficiently and get out (documenting as I go of course).

I run zsh, spacemacs and nvim on my local machine but all servers run stock bash, vim and nano as the less third party interference the better.

The tip of my cli tools are: cat, grep, less, man, ls -la, chown, chmod, scp, git xxxx, ssh xxxx, rm (-r), rmdir, mkdir, touch, cd, tail and piping together makes them more efficient again.

I generally find it quicker to open a terminal and do what I need to do than use the GUI interface with the majority of programs. If there is an opportunity to automate the terminal commands for later use, I'll add that to my bin folder and if not, I'll add it to my markdown library of commands or the appropriate wiki.

Back

Marsupial

    Server Purpose:
  • Backups of Digital Ocean Servers
  • Local Gitlab instance
  • Local Mattermost instance
  • Local Nextcloud instance
  • running InvoiceNinja

Reasoning
I have an uneasy feeling about trusting my data (files, pictures, communication) to large multi-national corporations that use my data to generate income. I'm not a tin foil hat wearing conspiracy theorist, I just like to be responsible for the safety and security of my own work product and documentation.

Next

Marsupial

    Purpose:
  • Hosting a multitude of projects for public access.
  • One project requires a separate PostgreSQL server to prepare for rapid scaling
  • The same project requires a separate "Spaces" droplet to offload server traffic from core droplet, again in anticipation of scaling.
  • Hosting 45 domain names maintaining and monitoring A, CNAME, MX, SPF, DKIM and DMARC records etc...

Reasoning:
Digital Ocean provide a solid price to performance metric for hosting projects. There is the ability to scale droplets to meet demand and offload core function to another provider while retaining database and Spaces functionality in the platform.
As each droplet is a full linux VM, performance tweaks can be made to improve the user experience.
SSH access to each droplet allows for rapid updating, deployment and debugging.

Back
Next

Marsupial

For every new release of Ubuntu, I create a separate partition and run my custom bash script from my local gitlab instance. Within 20 minutes, I have all my tools and softlinks to the Storage folders loaded. This keeps bloat to a minimum and gets rid of those pesky bugs that creep in while I test new projects and software.

    My base toolkit that has me operational includes:
  • SpaceMacs (Emacs / vim hybrid) (Code editor)
  • OpenSSH
  • Git
  • Nginx
  • Python3 and pip
  • Node
  • Mysql and Postgres
  • zsh
  • Virtualbox
  • thunderbird, firefox, chrome, lastpass, wpcli, gimp, spotify, mattermost, nextcloud, gparted, curl, peek, flameshot, etc...

Notes:
I run virtualbox for testing Linux distros, if I need to test using Windows specific software(Windows 8 and 10), or open my digital wallets (on separate VM's).

Back
Next

Linux - Wrapup

I am happy as a pig in muck ducking in and out of servers and docker containers using ssh. I back up files before I edit them. I don't mind if vim or nano are available, I'll use what's there and I won't "fluff" about making the environment "nicer" to use. I like to get in, make it work efficiently and get out (documenting as I go of course).

I run zsh, spacemacs and nvim on my local machine but all servers run stock bash, vim and nano as the less third party interference the better.

The tip of my cli tools are: cat, grep, less, man, ls -la, chown, chmod, scp, git xxxx, ssh xxxx, rm (-r), rmdir, mkdir, touch, cd, tail and piping together makes them more efficient again.

I generally find it quicker to open a terminal and do what I need to do than use the GUI interface with the majority of programs. If there is an opportunity to automate the terminal commands for later use, I'll add that to my bin folder and if not, I'll add it to my markdown library of commands or the appropriate wiki.

Back
Skills
Professional
  • DevOps - Software Engineering
  • Full Stack Development
  • Web Application
  • Mobile Application
  • Writing (Copy)
Personal
  • Communication
  • Team Work
  • Leadership
  • Singing in tune
  • Self driven
Experience
2021-Current
iQualify
Intermediate Fullstack Developer

Part of a tight knit team and an even tighter ...

2011-2021
CODED!
Director / Code Monkey

From soliciting work to invoicing clients, running servers to bugfixing code. At Coded, we take Full Stack to it's broadest terms, short of running physical cable door to door. We run our servers through Digital Ocean with an inhouse backup, maintain the servers and troubleshoot performance issues, build the projects, maintain the paperwork and follow good record keeping practices.

2008-2017
Domicile Administrator
a.k.a. House Husband

From changing nappies through to counting up to 10, the stresses invlolved with such a unique role have been evident on the colour of my hair and the lines on my face. Raising twins, balancing the books of my wifes business, studying at Massey and working part time designing websites (a very young CODED) pushed me to work on my biggest personal flaw, perseverance.

2005-2008
Sport Marlborough
Active Workplace Manager

I had 3 main roles at Sport Marlborough. Get employees moving, get patients moving and get community members active. Apart from the paperwork, I thoroughly enjoyed my time there.

Services
Web Application

From a full custom build from the ground up to a custom modification of an existing system, I'm equally at home driving forward the project to it's completion.

Whether it's in PHP or Python, Java or Javascipt, C# or Sass, I will apply my skills for planning, building, testing and deployment to get the job over the line on time.

Software Engineering

Now this is where I enjoy myself. When the project requires more than just a shiny interface and some animations, I get excited.

Pulling data from multiple sources and displaying it in a way that allows for sound business decisions is where I thrive.

Give me a challenge that includes databases, apis and a well planned timeline and you might as well adopt me ... because this is where I will be living from now on.

Android Application

All of my android experience has been through projects for myself and my family, mainly repurposing old android equipment to use after it has reached it's useful EOL. See below for my android projects.

IOS Application

Not a clue.

Please don't ask me to write for IOS unless you factor in a bit of learning time. Swift doesn't scare me, just never used it.

Writing

The BS that flows from my keyboard should be quite evident by now but if there is still some doubt, came and have a look at some of the 200 articles I have written for the Marlborough Express daily newspaper. There you will see that I can turn my hand to any topic, after a bit of research.

Singing In Tune

Much to my extended family's disgust (or indifference), I have never had the inclination to try and hold a tune. I'll sing in the shower and in my office when the other businesses are closed for the day but provide lip service to the family gatherings that require a tune to be sung. Lip service is better than the the alternative so I believe in this regard I am providing a valuable service.

Education
2010-2018
Massey University
Distance Learning

BSc - Computer Science Major

1998
Christchurch Polytechnic
Christchurch Campus

Cert. Fitness Industry Training

  • With a focus on the fitness industry, this certificate was designed to educate students to be able to competently dispense training advice along with basic nutrition.

1995
Canterbury University
Christchurch Campus

BSc - Double Major, Physics and Mathmatics

  • Dropped out after one year
  • Advised by my High School to follow my best grades
  • They also advised that I not go into Fitness Industry or Computer Programming
  • I'm not bitter ...much

Tool Kit

Here's my base tookit...

Contact Me

Write a message:

Send Message

Thanks, your message is sent successfully. We will contact you shortly!