Update CV, Post

This commit is contained in:
Daniel Mason 2021-11-03 22:15:47 +13:00
parent 05e6ef5958
commit 19b490635e
Signed by: idanoo
GPG Key ID: 387387CDBC02F132
9 changed files with 155 additions and 14 deletions

4
README.md Normal file
View File

@ -0,0 +1,4 @@
# m2.nz
Hugo
Theme: https://github.com/vaga/hugo-theme-m10c

View File

@ -1,9 +1,12 @@
baseURL = 'https://m2.nz/'
languageCode = 'en-us'
title = 'Daniel Mason'
title = 'm2.nz'
theme = "m10c"
[markup.goldmark.renderer]
unsafe = true
[menu]
[[menu.main]]
identifier = "home"
@ -15,11 +18,11 @@ theme = "m10c"
name = "Tags"
url = "/tags/"
weight = 2
# [[menu.main]]
# identifier = "about"
# name = "About"
# url = "/about/"
# weight = 3
[[menu.main]]
identifier = "about"
name = "CV"
url = "/cv/"
weight = 3
[params]
author = "Daniel Mason"
@ -29,13 +32,25 @@ theme = "m10c"
favicon = "/favicon.ico"
[[params.social]]
icon = "gitlab"
icon = "git-pull-request"
name = "GitLab"
url = "https://gitlab.com/idanoo"
url = "https://git.m2.nz/idanoo"
[[params.social]]
icon = "send"
name = "Mastodon"
url = "https://mastodon.nz/@idanoo"
[[params.social]]
icon = "camera"
name = "Pixelfed"
url = "https://pixelfed.nz/idanoo"
[[params.social]]
icon = "message-square"
name = "Matrix"
url = "https://matrix.to/#/@idanoo:mtrx.nz"
[params.style]
darkestColor = "#242930"
darkColor = "#353b43"
lightColor = "#afbac4"
lightestColor = "#ffffff"
primaryColor = "#57cc8a"
[params.style]
darkestColor = "#242930"
darkColor = "#353b43"
lightColor = "#afbac4"
lightestColor = "#ffffff"
primaryColor = "#57cc8a"

View File

98
content/cv.md Normal file
View File

@ -0,0 +1,98 @@
+++
title = "Employment History"
+++
<div style="display: flex;">
<div style="flex-direction: row; margin-right: 20px">
<img alt="ezyVet Logo" title="ezyVet Logo" src="/ezyvet_logo.png">
</div>
<div style="flex-direction: row">
<h3 style="margin-top: 5px">ezyVet</h3>
<h4 style="margin-top:-16px; color: #afbac4">Site Reliability Engineer</h4>
<p style="margin-top:-20px;">August 2019 - Current</p>
</div>
</div>
My role at ezyVet is primarily focused on improving performance and response time across the full stack from PHP, MySQL and ElasticSearch improvements to optimizing AWS usage and cost.
- Pushing for latest versions of services to keep frameworks up to date and utilize any performance improvements (PHP, MySQL, Elasticsearch, Redis upgrades)
- Building automation pipelines through GitLab CI
- Experience building a cross-platform Go application utilizing Websockets with AWS API Gateway and SQS/SNS/DynamoDB/Lambda/Terraform
- Creating a full docker development environment for engineers to improve development workflows
- Reducing RDS load and improving SQL query response time via query restructuring to make better use of compound indexes and foreign keys
- Rebuilding Elasticsearch clusters to improve redundancy and response time with optimised indexes
- Writing custom service monitoring tools in Go that interface directly with Docker, ElasticSearch and PHP-FPM
- Optimising MySQL parameter groups to get the most out of each instance
<br/>
<div style="display: flex;">
<div style="flex-direction: row; margin-right: 20px; margin-left: 5px">
<img alt="Catalyst IT Logo" width="90" title="Catalyst IT Logo" src="/catalyst_logo.png">
</div>
<div style="flex-direction: row">
<h3 style="margin-top: 5px">Catalyst IT</h3>
<h4 style="margin-top:-16px; color: #afbac4">Devops Engineer</h4>
<p style="margin-top:-20px;">October 2018 - August 2019</p>
</div>
</div>
At Catalyst, I worked directly with several large corporate clients doing routine patching, performance improvements and general BAU. While primarily configuring CI/CD pipelines for full automated tested and deployments, I also gained experience with helm chart deployments into Kubernetes clusters hosted on OpenStack.I have also had the opportunity to gain more experience working with Puppet, Ansible and GitLab CI.
<br/>
<div style="display: flex;">
<div style="flex-direction: row; margin-right: 20px">
<img alt="ezyVet Logo" title="ezyVet Logo" src="/ezyvet_logo.png">
</div>
<div style="flex-direction: row">
<h3 style="margin-top: 5px">ezyVet</h3>
<h4 style="margin-top:-16px; color: #afbac4">Cloud Environment and Application Engineer</h4>
<p style="margin-top:-20px;">August 2017 - October 2018</p>
</div>
</div>
At ezyVet, I was primarily in charge of reviewing and merging code into our production environment as well as being our in-house DevOps/Infrastructure person. I occasionally did development work as well. In this position I gained vast experience in multiple areas as outlined below.
The position currently included the following responsibilities:
- Setting up and improving our CI/CD processes.
- Maintaining and constantly improving our environment. (AWS/Terraform)
- Setting up custom alerts / metrics with Cloudwatch & Grafana.
- Responding proactively to the above alerts to fix potential issues.
- Heavily involved in rolling out new technologies to our stack.
- Revision, escalation and resolution of tickets and other critical issues.
- Mentored Junior Developers through their induction into ezyVet.
DevOps:
- AWS: Consistently Improving our infrastructure to be efficient and reliable
- Linux: Daily experience with Debian, Ubuntu and Arch.
- CI / CD: Setting up and maintaining GitLab runners to run our Unit Tests / Automatic deploy pipelines inside docker containers.
- Packer/Chef/Vagrant: Building custom AMI images for AWS & Vagrant for our development machines.
- Terraform: Assisted migration of our AWS environments to code.
- Virtualization: Setting up Vagrant / Virtual Box environments that mock our production environment.
Programming:
- PHP: Building small features and day-to-day bug fixes as well.
- MySQL.
- Shell / Bash: Created custom scripts to achieve specific goals.
- Python / Node.js: Lambda functions in serverless.
- HTML / CSS / JS / jQuery.
Management:
- Code Review: In charge of reviewing all code before it gets merged in to our production branches.
- JIRA / Confluence / Freshdesk: Primarily used JIRA for ticket-tracking and Confluence for In-house documentation.
- Mentoring: I have taken on several junior developers over the 2 years to train them and assist them in becoming familiar with out code-base and work-flow.
<br/>
<div style="display: flex;">
<div style="flex-direction: row; margin-right: 20px">
<img alt="ezyVet Logo" title="ezyVet Logo" src="/ezyvet_logo.png">
</div>
<div style="flex-direction: row">
<h3 style="margin-top: 5px">ezyVet</h3>
<h4 style="margin-top:-16px; color: #afbac4">Full Stack Developer</h4>
<p style="margin-top:-20px;">March 2016 - August 2017</p>
</div>
</div>
Focused on building new features and improving our cloud environment. Primarily working in PHP.

View File

@ -0,0 +1,24 @@
+++
title = "Recovering from a root 'rm' and why you need backups"
tags = ["recovery", "backup", "proxmox"]
date = "2021-02-06"
description = "test"
+++
Last week I was finally getting around to fixing my backup tooling and validating the recovery procedures. I thought it would be a good idea to have rolling nightly backups on a secondary ZFS pool with weekly syncs to an external disk. I ended up using this exact command to purge the rolling backups:
> `$ find ${BACKUP_FOLDER}/* -mtime +${DAYS_TO_KEEP} -exec rm {} \;`
Before we go any further, I want to point out that I was using the variable `${BACKUP_DIR}`, not `${BACKUP_FOLDER}`.
Can you see where this is going? Yeah.. I didn't pick that up before running my new majestic backup script. Half an hour later I came back to pages of ssh logs resembling `/bin/rm: command not found`. Oops. I instantly knew what had happened, I'd completely written off my Proxmox host and I was lucky it removed the `/bin/rm` binary before removing any actual data.
Further investigation showed that I'd wiped most of /bin and the system was barely usable, I still had rsync.. yay! I quickly shutdown all of my containers/vms and rsync'd `/etc` to my primary ZFS cluster before rebooting to a fresh Proxmox install. After reformatting my root drive and reinstalling from scratch, I copied `/etc/pve/lxc` and
`/etc/pve/qemu-sever` back into place, ran zpool import `{data,storage}` and gave it one more reboot.
I have never been so relieved to check and see all of my containers booting up back to their normal state. There was one or two other small things I had to fix up post-install such as reinstall `nfs-kernel-server` and several other packages. Overal I was pretty lucky I could copy my container configs before reinstalling and total downtime was under an hour.
### Backups are important
**Test your backups.**
Don't get caught out and expect everything to be there when you really need it.

BIN
static/catalyst_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
static/ezyvet_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 93 KiB

View File