Camels Dressed As Unicorns

Stop trying to hire with titles like ‘DevOps Engineer’ or ‘Cloud Engineer’ “DevOps is … not a job title” “It’s more of a cultural practice, like innovation, and it makes just as little sense hiring “innovation engineers” and expecting your organisation to be innovative, without also creating the culture to foster innovation.” (Joel Shea when responding to this posted on LinkedIn) In most cases it’s clear the organisation doesn’t truly know what they want or need and likely don’t understand the nuances of the aspects of engineering. ...

August 8, 2019 · 2 min · 328 words · Sam McLeod

Looking For New Opportunities

As stated in my announcement post - after 7~ years, I resigned from Infoxchange several months ago. I planned on taking a holiday, relaxing, decompressing, dipping my toes in some off-the-shelf tech I haven’t spent a lot of time with and performing some personal growth through reading a number of books that have been sitting on my ’to read’ shelf. This is exactly what I’ve done. I’m now open to new opportunities I’d rather find a workplace that I can add great value too and be happy to work with than rush into a new role quickly, obviously if something great turns up right away - I’ll pursue it. ...

August 6, 2019 · 4 min · 763 words · Sam McLeod

Leaving Infoxchange

After 7~ years, I have resigned from Infoxchange. In 2012 I was hired to work with Infoxchange to “shake things up” (in the Systems Operations team) and stabilise the hosting environment. As Team Lead of Systems Operations I was tasked with melding the team and then for us to work to provide a stable, robust, modern and scalable platform for Infoxchange developed application hosting and product delivery and in a short time, with a small budget - we did just that. ...

June 29, 2019 · 3 min · 470 words · Sam McLeod

Goodbye XenSever - Hello XCP-ng

In 2018 I set out to replace our XenSever 7.2 based virtualisation after Citrix essentially screwed over free / open source users. This project was to directly replace XenServer 7.2 with something supported and manageable for our traditional virtualisation needs. High Level Selection Considerations I evaluated a number of options, with the primary candidates below. Key criteria (at a high level) I was evaluating: Ease of moving from our existing XenServer 7.2 based hypervisor clusters. Security (architecture, hardening, monitoring, logging). Cost (both licensing if any and self-support / management costs). VM Performance (Storage IOPs and throughput, Network latency and throughput, Processing latency, steal from over-provisioned workloads). Management UI/UX and performance (for BAU activities). Management / Cluster SPOFs, fail-over and redundancy. Installation and upgrade process. Update and security patching frequency. Networking design and complexity. Community (size, engagement, acceptance of suggestions / MRs). Reliable live VM migrations. Ease of management for a small team (Part of a low TCO). Risk of vendor and technology lock-in. Risk of survival (will it still be well maintained over the next 1-3 years). Stability and reliability above practically all else. XenServer 7.6 (w/ Paid License) For Potentially priority support from Citrix for issues. Easy upgrade from 7.2. Fresh installs and upgrades are simple, painless and easy to pxeboot, licensing can be a pain after install however. Against Slow moving development. Incredibly expensive, it would cost us something like $140,800 AUD per year (shelf price) for our 32 hosts (each with 2 sockets). Features heavily restricted by licensing model. Mostly older-fashioned enterprise users. No web management interface (although you can use Xen Orchestra from the folks behind XCP-ng). Diminishing community since XenServer licensing changes in 7.3. Poor storage performance compared to KVM based solutions. Many outdated packages, while kind of based on CentOS 7, there are a great deal of packages from older releases or completely custom rebuilt. Uses old technologies like EXT3 and doesn’t support SSD/Flash TRIM/DISCARD functions. SELinux not enforcing or supported. OpenvSwitch still uses a lot of Dom0 CPU (same as XenServer). Dom0 often ends up limiting VM storage operations (tapdisk maxing out Dom0 CPU). Applying updates can be painful or at least slow, requiring binary ISO files to be downloaded from Citrix. Uses Jira for bug tracking (I just can’t stand the thing, it’s painfully laggy, give my GitLab or Github over it any day). XCP-ng XCP-ng is a relatively recent fork from XenServer after it was open sourced, tracking upstream but clearly prioritising modernisation and community. ...

February 5, 2019 · 8 min · 1550 words · Sam McLeod

New Zealand Otago Trip in a 2019 Mustang GT

In late November of 2018 I was lucky enough to get my hands on the upcoming 2019 Sport spec Mustang GT v8 to be its first driver. I’m not usually an American Muscle enthusiast, but the new 2019 GT really is quite different from its slightly older counterparts, with a new specially developed 10 speed gearbox (yes, 10 gears - because more is better right?), tuned up suspension and so seemed like it would make for a pretty fun trip. ...

December 20, 2018 · 1 min · 207 words · Sam McLeod

Run youtube-dl (or similar) in the background

I wanted an alias or function to use youtube-dl in the background. Looking around the web lots of people seemed to want this and most of them were banging their heads against a wall due to: A) bash quoting B) backgrounding dying when their terminal closed C) passing the argument (url in my case) to the function Here’s a simple function I whipped up that seems to ‘just works’™: function yt { nohup youtube-dl "$1" --no-progress 2>&1 > youtube-dl-"$(date +%Y%m%d-%H%M%S)".log & } And if you don’t want logs, simply send the output to /dev/null: ...

July 30, 2018 · 2 min · 231 words · Sam McLeod

Disabling scroll-wheel zoom in Firefox

This feature annoys me endlessly, I end up zoomed in and out of websites all over the internet. … But the fix is easy and there’s no addons required. Navigate to about:config (in Firefox’s URL bar) Change the value of the following two properties to 0: mousewheel.with_control.action mousewheel.with_meta.action If you use Firefox sync and want these settings to sync between your machines, also add the following properties: Create two new properties both of type boolean and set them to true: ...

July 16, 2018 · 1 min · 83 words · Sam McLeod

Highlands Festival of Speed 2018

Last weekend I headed to New Zealand and marshalled at the Highlands Festival of Speed. The Highlands Festival of Speed is a weekend packed with some of the best modern classic racing you will see in New Zealand. Featuring the Pre 65 Racing, Mainland Muscle, Formula Libre, South Island Porsche, OSCA, Highlands Modern Classics/Nostalgic Classics and the Highlands Sprint Series. This is a weekend of true blue Kiwi racing starring some of New Zealand’s most well known racing legends. ...

April 11, 2018 · 1 min · 140 words · Sam McLeod

Flash Storage and SSD Failure Rate Update (March 2018)

It was almost 3 years ago that my open source storage project went into production. In that time it’s been running 24/7 serving as highly available solid state storage for hundreds of VMs and several virtualisation clusters across our two main sites. I’m happy to report that the clusters have been operating very successfully since their conception. Since moving away from proprietary ‘black box’ vendor SANs, we haven’t had a single SAN issue, storage outage. ...

March 20, 2018 · 2 min · 326 words · Sam McLeod

Theory of constraints

“A chain is no stronger than its weakest link” Any improvement made anywhere besides the bottleneck is an illusion. Any improvement made after the bottleneck is useless because it will always remain starved waiting for work from the bottleneck. Any improvement made before the bottleneck merely results in more ‘work’ piling up at the bottleneck. Identify the system’s constraint(s) (that which prevents the organisation from obtaining more of the goal in a unit of time) Decide how to exploit the system’s constraint(s) (how to get the most out of the constraint) Subordinate everything else to the above decision (align the whole system or organization to support the decision made above) Elevate the system’s constraint(s) (make other major changes needed to increase the constraint’s capacity) Warning! If in the previous steps a constraint has been broken, go back to step 1, but do not allow inertia to cause a system’s constraint. References The Phoenix Project Wikipedia - Theory of Constraints

January 17, 2018 · 1 min · 159 words · Sam McLeod