<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on smcleod.net</title>
    <link>https://smcleod.net/posts/</link>
    <description>Recent content in Posts on smcleod.net</description>
    <image>
      <title>smcleod.net</title>
      <url>https://smcleod.net/logo-painted-350.svg</url>
      <link>https://smcleod.net/logo-painted-350.svg</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en-GB</language>
    <lastBuildDate>Thu, 02 Apr 2026 14:12:42 +1100</lastBuildDate>
    <atom:link href="https://smcleod.net/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>New Apple Silicon M4 &amp; M5 HiDPI Limitation on 4K External Displays</title>
      <link>https://smcleod.net/2026/03/new-apple-silicon-m4-m5-hidpi-limitation-on-4k-external-displays/</link>
      <pubDate>Sun, 29 Mar 2026 01:00:00 +1000</pubDate>
      <guid>https://smcleod.net/2026/03/new-apple-silicon-m4-m5-hidpi-limitation-on-4k-external-displays/</guid>
      <description>A regression in external display support on Apple Silicon M4/M5 generation chips prevents full HiDPI modes on 4K monitors, limiting users to either blurry non-HiDPI or reduced workspace HiDPI.</description>
    </item>
    <item>
      <title>The advice I find myself repeating every time someone asks how to get started with Claude Code</title>
      <link>https://smcleod.net/2026/03/the-advice-i-find-myself-repeating-every-time-someone-asks-how-to-get-started-with-claude-code/</link>
      <pubDate>Thu, 05 Mar 2026 01:00:00 +1000</pubDate>
      <guid>https://smcleod.net/2026/03/the-advice-i-find-myself-repeating-every-time-someone-asks-how-to-get-started-with-claude-code/</guid>
      <description>I spend a lot of my time helping people who are getting started with Claude Code. These are the key things I find myself repeating.</description>
    </item>
    <item>
      <title>Patching NVIDIA&#39;s driver and vLLM to enable P2P on consumer GPUs</title>
      <link>https://smcleod.net/2026/02/patching-nvidias-driver-and-vllm-to-enable-p2p-on-consumer-gpus/</link>
      <pubDate>Wed, 25 Feb 2026 23:59:00 +1000</pubDate>
      <guid>https://smcleod.net/2026/02/patching-nvidias-driver-and-vllm-to-enable-p2p-on-consumer-gpus/</guid>
      <description>NVIDIA artificially restricts peer-to-peer (P2P) GPU communication to their enterprise cards. Turns out this is a software limitation, not a hardware one. I patched my drivers to remove it, hacked vLLM to take advantage of it, and got a 15-50% throughput improvement running Qwen 3.5 35b on dual RTX 3090s.</description>
    </item>
    <item>
      <title>The Role Bridging Problem</title>
      <link>https://smcleod.net/2025/11/the-role-bridging-problem/</link>
      <pubDate>Thu, 20 Nov 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/11/the-role-bridging-problem/</guid>
      <description>An observation on functional correctness without domain quality.</description>
    </item>
    <item>
      <title>Stop Polluting Context - Let Users Disable Individual MCP Tools</title>
      <link>https://smcleod.net/2025/08/stop-polluting-context-let-users-disable-individual-mcp-tools/</link>
      <pubDate>Tue, 26 Aug 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/08/stop-polluting-context-let-users-disable-individual-mcp-tools/</guid>
      <description>If you&amp;rsquo;re building MCP servers, you should be adding the ability to disable individual tools.</description>
    </item>
    <item>
      <title>MCP DevTools</title>
      <link>https://smcleod.net/2025/08/mcp-devtools/</link>
      <pubDate>Mon, 18 Aug 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/08/mcp-devtools/</guid>
      <description>A single, modular MCP server for AI coding agents.</description>
    </item>
    <item>
      <title>Agentic Coding Adoption Cost Cycle</title>
      <link>https://smcleod.net/2025/07/agentic-coding-adoption-cost-cycle/</link>
      <pubDate>Wed, 16 Jul 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/07/agentic-coding-adoption-cost-cycle/</guid>
      <description>The two common themes I see with engineers adopting agentic coding tools</description>
    </item>
    <item>
      <title>Agentic Coding Workflow &amp; Cline Demo</title>
      <link>https://smcleod.net/2025/06/agentic-coding-workflow-cline-demo/</link>
      <pubDate>Fri, 20 Jun 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/06/agentic-coding-workflow-cline-demo/</guid>
      <description>Recording of a demo and Q&amp;amp;A session on my Agentic Coding workflow and Cline use.</description>
    </item>
    <item>
      <title>Vibe Coding vs Agentic Coding</title>
      <link>https://smcleod.net/2025/06/vibe-coding-vs-agentic-coding/</link>
      <pubDate>Fri, 06 Jun 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/06/vibe-coding-vs-agentic-coding/</guid>
      <description>From Creative Exploration to Production Quality</description>
    </item>
    <item>
      <title>My Plan, Document, Act, Review flow for Agentic Software Development</title>
      <link>https://smcleod.net/2025/04/my-plan-document-act-review-flow-for-agentic-software-development/</link>
      <pubDate>Mon, 28 Apr 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/04/my-plan-document-act-review-flow-for-agentic-software-development/</guid>
      <description>An overview of my agentic coding development flow.</description>
    </item>
    <item>
      <title>LLM Sampling Parameters Guide</title>
      <link>https://smcleod.net/2025/04/llm-sampling-parameters-guide/</link>
      <pubDate>Fri, 25 Apr 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/04/llm-sampling-parameters-guide/</guid>
      <description>A practical guide to LLM sampling parameters for Ollama, llama.cpp, and MLX</description>
    </item>
    <item>
      <title>Getting Started with Agentic Systems - Developer Learning Paths</title>
      <link>https://smcleod.net/2025/04/getting-started-with-agentic-systems-developer-learning-paths/</link>
      <pubDate>Wed, 16 Apr 2025 01:10:00 +1000</pubDate>
      <guid>https://smcleod.net/2025/04/getting-started-with-agentic-systems-developer-learning-paths/</guid>
      <description>A curated learning path for engineers looking to gain practical experience with AI and agentic systems.</description>
    </item>
    <item>
      <title>The Cost of Agentic Coding</title>
      <link>https://smcleod.net/2025/04/the-cost-of-agentic-coding/</link>
      <pubDate>Thu, 03 Apr 2025 01:00:01 +1000</pubDate>
      <guid>https://smcleod.net/2025/04/the-cost-of-agentic-coding/</guid>
      <description>The cost of not leveraging agentic coding is likely far greater than you think.</description>
    </item>
    <item>
      <title>The Democratisation Paradox: What History Teaches Us About AI</title>
      <link>https://smcleod.net/2025/03/the-democratisation-paradox-what-history-teaches-us-about-ai/</link>
      <pubDate>Sun, 23 Mar 2025 01:00:01 +1000</pubDate>
      <guid>https://smcleod.net/2025/03/the-democratisation-paradox-what-history-teaches-us-about-ai/</guid>
      <description>The Democratisation Paradox: What History Teaches Us About AI.</description>
    </item>
    <item>
      <title>The effects of prompt caching on Agentic coding</title>
      <link>https://smcleod.net/2025/03/the-effects-of-prompt-caching-on-agentic-coding/</link>
      <pubDate>Thu, 20 Mar 2025 21:00:01 +1000</pubDate>
      <guid>https://smcleod.net/2025/03/the-effects-of-prompt-caching-on-agentic-coding/</guid>
      <description>What is prompt caching and why is it so important for Agentic coding?</description>
    </item>
    <item>
      <title>Agentic Coding - Live Demo / Brownbag</title>
      <link>https://smcleod.net/2025/02/agentic-coding-live-demo-/-brownbag/</link>
      <pubDate>Fri, 07 Feb 2025 01:00:01 +1000</pubDate>
      <guid>https://smcleod.net/2025/02/agentic-coding-live-demo-/-brownbag/</guid>
      <description>Video recording of a brownbag presentation / live demo I ran on Agentic Coding using Cline/Roo Code</description>
    </item>
    <item>
      <title>Bringing K/V Context Quantisation to Ollama</title>
      <link>https://smcleod.net/2024/12/bringing-k/v-context-quantisation-to-ollama/</link>
      <pubDate>Wed, 04 Dec 2024 20:00:02 +0000</pubDate>
      <guid>https://smcleod.net/2024/12/bringing-k/v-context-quantisation-to-ollama/</guid>
      <description>K/V context cache quantisation has been added to Ollama. This enables significant reductions in VRAM usage, allowing users to realise the potential of expanded context sizes and run larger models at their existing context sizes.</description>
    </item>
    <item>
      <title>Will AI Take My Job?</title>
      <link>https://smcleod.net/2024/11/will-ai-take-my-job/</link>
      <pubDate>Fri, 29 Nov 2024 22:00:02 +0000</pubDate>
      <guid>https://smcleod.net/2024/11/will-ai-take-my-job/</guid>
      <description>It&amp;#39;s probably not so much AI itself you have to fear.</description>
    </item>
    <item>
      <title>Generating Diagrams with with AI / LLMs</title>
      <link>https://smcleod.net/2024/10/generating-diagrams-with-with-ai-/-llms/</link>
      <pubDate>Tue, 08 Oct 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/10/generating-diagrams-with-with-ai-/-llms/</guid>
      <description>Generating diagrams with AI / LLMs</description>
    </item>
    <item>
      <title>Ingest: Streamlining Content Preparation for LLMs</title>
      <link>https://smcleod.net/2024/07/ingest-streamlining-content-preparation-for-llms/</link>
      <pubDate>Mon, 29 Jul 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/07/ingest-streamlining-content-preparation-for-llms/</guid>
      <description>A CLI tool for parsing directories into LLM-friendly markdown</description>
    </item>
    <item>
      <title>LLM Parameter Playground</title>
      <link>https://smcleod.net/2024/07/llm-parameter-playground/</link>
      <pubDate>Sat, 20 Jul 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/07/llm-parameter-playground/</guid>
      <description>A web app to explore the effects of different inference parameters on LLMs.</description>
    </item>
    <item>
      <title>Code, Chaos, and Copilots (AI/LLM Talk July 2024)</title>
      <link>https://smcleod.net/2024/07/code-chaos-and-copilots-ai/llm-talk-july-2024/</link>
      <pubDate>Thu, 18 Jul 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/07/code-chaos-and-copilots-ai/llm-talk-july-2024/</guid>
      <description>Integrating AI into Daily Development</description>
    </item>
    <item>
      <title>Understanding AI/LLM Quantisation Through Interactive Visualisations</title>
      <link>https://smcleod.net/2024/07/understanding-ai/llm-quantisation-through-interactive-visualisations/</link>
      <pubDate>Wed, 17 Jul 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/07/understanding-ai/llm-quantisation-through-interactive-visualisations/</guid>
      <description>AI/LLM Quantisation Visualised</description>
    </item>
    <item>
      <title>Rating AI Tools</title>
      <link>https://smcleod.net/2024/07/rating-ai-tools/</link>
      <pubDate>Wed, 03 Jul 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/07/rating-ai-tools/</guid>
      <description>Subjective ratings of the notable AI tools I&amp;#39;ve tried.</description>
    </item>
    <item>
      <title>Gollama: Ollama Model Manager</title>
      <link>https://smcleod.net/2024/06/gollama-ollama-model-manager/</link>
      <pubDate>Sat, 01 Jun 2024 01:00:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/06/gollama-ollama-model-manager/</guid>
      <description>Gollama is a Go-based client for Ollama for managing models.</description>
    </item>
    <item>
      <title>Confuddlement: Download Confluence Spaces as Markdown, Summarise with Ollama</title>
      <link>https://smcleod.net/2024/05/confuddlement-download-confluence-spaces-as-markdown-summarise-with-ollama/</link>
      <pubDate>Thu, 23 May 2024 05:45:10 +0000</pubDate>
      <guid>https://smcleod.net/2024/05/confuddlement-download-confluence-spaces-as-markdown-summarise-with-ollama/</guid>
      <description>Download Confluence Spaces as Markdown, Summarise with Ollama</description>
    </item>
    <item>
      <title>NVApi - Nvidia GPU Monitoring API</title>
      <link>https://smcleod.net/2024/05/nvapi-nvidia-gpu-monitoring-api/</link>
      <pubDate>Sat, 18 May 2024 11:30:03 +0000</pubDate>
      <guid>https://smcleod.net/2024/05/nvapi-nvidia-gpu-monitoring-api/</guid>
      <description>Nvidia GPU Monitoring API</description>
    </item>
    <item>
      <title>SuperPrompter - Supercharge your text prompts for AI/LLM image generation</title>
      <link>https://smcleod.net/2024/03/superprompter-supercharge-your-text-prompts-for-ai/llm-image-generation/</link>
      <pubDate>Fri, 22 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2024/03/superprompter-supercharge-your-text-prompts-for-ai/llm-image-generation/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/sammcj/superprompter&#34;&gt;SuperPrompter&lt;/a&gt; is a Python-based application that utilises the &lt;a href=&#34;https://huggingface.co/roborovski/superprompt-v1&#34;&gt;SuperPrompt-v1&lt;/a&gt; model to generate optimised text prompts for AI/LLM image generation (for use with Stable Diffusion etc&amp;hellip;) from user prompts.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;screenshot&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net/2024/03/superprompter-supercharge-your-text-prompts-for-ai/llm-image-generation/superprompter-screenshot.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;https://brianfitzgerald.xyz/prompt-augmentation/&#34;&gt;Brian Fitzgerald&amp;rsquo;s Blog&lt;/a&gt; for a detailed explanation of the SuperPrompt-v1 model and its capabilities / limitations.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;features&#34;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Utilises the &lt;a href=&#34;https://huggingface.co/roborovski/superprompt-v1&#34;&gt;SuperPrompt-v1&lt;/a&gt; model for text generation.&lt;/li&gt;
&lt;li&gt;A basic (aka ugly) graphical user interface built with tkinter.&lt;/li&gt;
&lt;li&gt;Customisable generation parameters (max new tokens, repetition penalty, temperature, top p, top k, seed).&lt;/li&gt;
&lt;li&gt;Optional logging of input parameters and generated outputs.&lt;/li&gt;
&lt;li&gt;Bundling options to include or exclude pre-downloaded model files.&lt;/li&gt;
&lt;li&gt;Unloads the models when the application is idle to free up memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prebuilt-binaries&#34;&gt;Prebuilt Binaries&lt;/h2&gt;
&lt;p&gt;Check &lt;a href=&#34;https://github.com/sammcj/superprompter/releases&#34;&gt;releases&lt;/a&gt; page to see if there are any prebuilt binaries available for your platform.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Llamalink - Ollama to LM Studio LLM Model Linker</title>
      <link>https://smcleod.net/2024/03/llamalink-ollama-to-lm-studio-llm-model-linker/</link>
      <pubDate>Thu, 21 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2024/03/llamalink-ollama-to-lm-studio-llm-model-linker/</guid>
      <description>This is a simple command-line tool that allows you to easily link Ollama models to LM Studio&amp;#39;s directory structure. It simplifies the process of symlinking Ollama models to LM Studio, making it convenient to use the models in both applications.</description>
    </item>
    <item>
      <title>Open source, locally hosted AI powered Siri replacement</title>
      <link>https://smcleod.net/2023/11/open-source-locally-hosted-ai-powered-siri-replacement/</link>
      <pubDate>Mon, 20 Nov 2023 01:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2023/11/open-source-locally-hosted-ai-powered-siri-replacement/</guid>
      <description>Using an ESP32 S3 Box 3 with Willow, Home Assistant and Large Language Models (LLMs) create a locally hosted, offline, AI powered Siri / Alexa replacement.</description>
    </item>
    <item>
      <title>Fun with Makefiles - Dynamic Menu Generation</title>
      <link>https://smcleod.net/2023/11/fun-with-makefiles-dynamic-menu-generation/</link>
      <pubDate>Tue, 14 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2023/11/fun-with-makefiles-dynamic-menu-generation/</guid>
      <description>This reusable snippet will generate a menu of targets from the Makefile. It will use `fzf` if it is installed, otherwise it will use a numbered menu.</description>
    </item>
    <item>
      <title>MBA Washing</title>
      <link>https://smcleod.net/2023/11/mba-washing/</link>
      <pubDate>Mon, 13 Nov 2023 09:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2023/11/mba-washing/</guid>
      <description>&amp;#34;MBA Washing&amp;#34; refers to the phenomenon where individuals or companies, often with a strong theoretical or academic background but limited recent practical experience, adopt and reinterpret industry-specific terminology and cultural movements.</description>
    </item>
    <item>
      <title>SDXL LoRA Training</title>
      <link>https://smcleod.net/2023/10/sdxl-lora-training/</link>
      <pubDate>Mon, 30 Oct 2023 20:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2023/10/sdxl-lora-training/</guid>
      <description>A talk I gave to some peers on creating your own SDXL LoRA models from my tinkering around over the last few weeks.</description>
    </item>
    <item>
      <title>Fixing AMD CPU Scaling on Fedora</title>
      <link>https://smcleod.net/2023/07/fixing-amd-cpu-scaling-on-fedora/</link>
      <pubDate>Sun, 09 Jul 2023 06:41:37 +0000</pubDate>
      <guid>https://smcleod.net/2023/07/fixing-amd-cpu-scaling-on-fedora/</guid>
      <description>Enabling the new AMD P-State Driver on Fedora with Kernel 6.4</description>
    </item>
    <item>
      <title>Defaulting git clone to shallow (depth=1)</title>
      <link>https://smcleod.net/2023/05/defaulting-git-clone-to-shallow-depth1/</link>
      <pubDate>Mon, 29 May 2023 08:53:24 +1000</pubDate>
      <guid>https://smcleod.net/2023/05/defaulting-git-clone-to-shallow-depth1/</guid>
      <description>&lt;!-- markdownlint-disable MD025 --&gt;
&lt;p&gt;Before adding this to my shell config, I would manually add &amp;ndash;depth=1 to all my git clones.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How likely would you be to block a company from asking you to rate everything they do?</title>
      <link>https://smcleod.net/2023/05/how-likely-would-you-be-to-block-a-company-from-asking-you-to-rate-everything-they-do/</link>
      <pubDate>Fri, 26 May 2023 06:41:37 +0000</pubDate>
      <guid>https://smcleod.net/2023/05/how-likely-would-you-be-to-block-a-company-from-asking-you-to-rate-everything-they-do/</guid>
      <description>NPS Surveys are corporate spam</description>
    </item>
    <item>
      <title>Escaping the Time Trap: Why Estimating Effort, Not Time, Leads to Greater Success</title>
      <link>https://smcleod.net/2023/04/escaping-the-time-trap-why-estimating-effort-not-time-leads-to-greater-success/</link>
      <pubDate>Fri, 28 Apr 2023 06:41:37 +0000</pubDate>
      <guid>https://smcleod.net/2023/04/escaping-the-time-trap-why-estimating-effort-not-time-leads-to-greater-success/</guid>
      <description>Effort is non-linear and multi-dimensional. Time (with relation to delivery) is linear and one-dimensional</description>
    </item>
    <item>
      <title>Introduction to AI and Large Language Models (LLMs)</title>
      <link>https://smcleod.net/2023/01/introduction-to-ai-and-large-language-models-llms/</link>
      <pubDate>Thu, 26 Jan 2023 01:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2023/01/introduction-to-ai-and-large-language-models-llms/</guid>
      <description>A high level intro to LLMs that I&amp;#39;m writing for a few friends that are new to the concept. It is far from complete, definitely contains some errors and is a work in progress.</description>
    </item>
    <item>
      <title>Open Budgeting - Subscriptions &amp; Licences</title>
      <link>https://smcleod.net/2023/01/open-budgeting-subscriptions-licences/</link>
      <pubDate>Thu, 05 Jan 2023 12:41:37 +0000</pubDate>
      <guid>https://smcleod.net/2023/01/open-budgeting-subscriptions-licences/</guid>
      <description>Publicly documenting my subscription and license expenses</description>
    </item>
    <item>
      <title>Energy, Sustainability and Deployment Frequency</title>
      <link>https://smcleod.net/2022/12/energy-sustainability-and-deployment-frequency/</link>
      <pubDate>Sat, 31 Dec 2022 12:03:41 +1100</pubDate>
      <guid>https://smcleod.net/2022/12/energy-sustainability-and-deployment-frequency/</guid>
      <description>&lt;!-- markdownlint-disable MD025 --&gt;
&lt;h1 id=&#34;deployment--delivery-frequency&#34;&gt;Deployment / Delivery Frequency&lt;/h1&gt;
&lt;p&gt;I often end up needing to advocate for more frequent delivery/deployments with clients.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s the usual benefits commonly discussed such as improved feedback, reduced risk, well understood processes, maintainable dependencies etc&amp;hellip; however &lt;mark style=&gt;what&amp;rsquo;s often missed entirely is how it relates to the health and sustainability of the team.&lt;/mark&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zsh Configuration and Plugins - Part Two</title>
      <link>https://smcleod.net/2022/11/zsh-configuration-and-plugins-part-two/</link>
      <pubDate>Fri, 18 Nov 2022 16:32:43 +1100</pubDate>
      <guid>https://smcleod.net/2022/11/zsh-configuration-and-plugins-part-two/</guid>
      <description>My Z-Shell configuration, scripts and hacks</description>
    </item>
    <item>
      <title>Github Not-So-Reusable Actions</title>
      <link>https://smcleod.net/2022/11/github-not-so-reusable-actions/</link>
      <pubDate>Sun, 06 Nov 2022 15:52:27 +1100</pubDate>
      <guid>https://smcleod.net/2022/11/github-not-so-reusable-actions/</guid>
      <description>Github Actions Reusable Workflows vs Composite Actions</description>
    </item>
    <item>
      <title>YAML Anchors and Aliases</title>
      <link>https://smcleod.net/2022/11/yaml-anchors-and-aliases/</link>
      <pubDate>Sun, 06 Nov 2022 15:52:27 +1100</pubDate>
      <guid>https://smcleod.net/2022/11/yaml-anchors-and-aliases/</guid>
      <description>Using YAML Anchors and Aliases to make config files more DRY</description>
    </item>
    <item>
      <title>Zsh Configuration and Plugins - Part One</title>
      <link>https://smcleod.net/2022/11/zsh-configuration-and-plugins-part-one/</link>
      <pubDate>Sun, 06 Nov 2022 10:32:43 +1100</pubDate>
      <guid>https://smcleod.net/2022/11/zsh-configuration-and-plugins-part-one/</guid>
      <description>My Z-Shell configuration, scripts and hacks</description>
    </item>
    <item>
      <title>Encourage Your Peers To Contribute To Open Source</title>
      <link>https://smcleod.net/2022/10/encourage-your-peers-to-contribute-to-open-source/</link>
      <pubDate>Sun, 30 Oct 2022 07:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/10/encourage-your-peers-to-contribute-to-open-source/</guid>
      <description>&lt;p&gt;Contributing to Open Source is important to the quality and maintainability of the software and engineering communities we rely on every day - so why is it that so many developers/engineers never participate?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Work Visible - Avoid DMs</title>
      <link>https://smcleod.net/2022/10/making-work-visible-avoid-dms/</link>
      <pubDate>Thu, 20 Oct 2022 07:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/10/making-work-visible-avoid-dms/</guid>
      <description>&lt;p&gt;We create more value by having conversations in public instead of behind closed doors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Best Of - 2022 Edition</title>
      <link>https://smcleod.net/2022/10/the-best-of-2022-edition/</link>
      <pubDate>Wed, 19 Oct 2022 19:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/10/the-best-of-2022-edition/</guid>
      <description>&lt;p&gt;Near the end of each year I note down a summary of the best apps I&amp;rsquo;ve enjoyed using throughout the year, here&amp;rsquo;s 2022.&lt;/p&gt;</description>
    </item>
    <item>
      <title>It&#39;s 2022 and we&#39;re (still) not deploying enough</title>
      <link>https://smcleod.net/2022/08/its-2022-and-were-still-not-deploying-enough/</link>
      <pubDate>Tue, 23 Aug 2022 07:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/08/its-2022-and-were-still-not-deploying-enough/</guid>
      <description>&lt;h2 id=&#34;were-still-not-deploying-enough&#34;&gt;We&amp;rsquo;re (still) not deploying enough&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s 2022 and not deploying frequently enough is &lt;em&gt;still&lt;/em&gt; one of the most common causes of software failure.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DALL·E 2 - Selected works</title>
      <link>https://smcleod.net/2022/07/dalle-2-selected-works/</link>
      <pubDate>Fri, 08 Jul 2022 07:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/07/dalle-2-selected-works/</guid>
      <description>&lt;p&gt;Over the past month I&amp;rsquo;ve been playing with OpenAI&amp;rsquo;s &lt;a href=&#34;https://openai.com/dall-e-2/&#34;&gt;DALL·E 2&lt;/a&gt;, below are some of the  interesting images I&amp;rsquo;ve generated.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;&lt;em&gt;&lt;a href=&#34;https://openai.com/dall-e-2/&#34;&gt;DALL·E 2&lt;/a&gt; is a new AI system that can create realistic images and art from a description in natural language.&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;a-renaissance-oil-painting-of-two-developers-arguing-over-which-javascript-framework-is-the-worst&#34;&gt;&amp;ldquo;A renaissance oil painting of two developers arguing over which javascript framework is the worst&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2012.23.27%20-%20a%20renaissance%20oil%20painting%20of%20two%20developers%20arguing%20over%20which%20javascript%20framework%20is%20the%20worst.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2012.23.36%20-%20a%20renaissance%20oil%20painting%20of%20two%20developers%20arguing%20over%20which%20javascript%20framework%20is%20the%20worst.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2012.23.47%20-%20a%20renaissance%20oil%20painting%20of%20two%20developers%20arguing%20over%20which%20javascript%20framework%20is%20the%20worst.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2012.23.53%20-%20a%20renaissance%20oil%20painting%20of%20two%20developers%20arguing%20over%20which%20javascript%20framework%20is%20the%20worst.jpeg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;a-ralph-steadman-painting-of-7-cats-sitting-on-a-fence-and-one-raven&#34;&gt;&amp;ldquo;A Ralph Steadman painting of 7 cats sitting on a fence, and one raven&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2015.36.13%20-%20A%20Ralph%20Steadman%20painting%20of%207%20cats%20sitting%20on%20a%20fence%2C%20and%20one%20raven.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2015.36.16%20-%20A%20Ralph%20Steadman%20painting%20of%207%20cats%20sitting%20on%20a%20fence%2C%20and%20one%20raven.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2015.36.21%20-%20A%20Ralph%20Steadman%20painting%20of%207%20cats%20sitting%20on%20a%20fence%2C%20and%20one%20raven.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2015.36.33%20-%20A%20Ralph%20Steadman%20painting%20of%207%20cats%20sitting%20on%20a%20fence%2C%20and%20one%20raven.jpeg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://media.githubusercontent.com/media/sammcj/smcleod_files_ml/main/dalle2/DALL%C2%B7E%202022-06-20%2015.36.37%20-%20A%20Ralph%20Steadman%20painting%20of%207%20cats%20sitting%20on%20a%20fence%2C%20and%20one%20raven.jpeg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beginner Harmonica Practice Exercises</title>
      <link>https://smcleod.net/2022/06/beginner-harmonica-practice-exercises/</link>
      <pubDate>Mon, 13 Jun 2022 13:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/06/beginner-harmonica-practice-exercises/</guid>
      <description>&lt;h1 id=&#34;beginner-harmonica-practice-exercises&#34;&gt;Beginner Harmonica Practice Exercises&lt;/h1&gt;
&lt;p&gt;Way back in around 2008 I wrote up a doc with a list of beginner harp exercises and practice riffs, at the time it was uploaded to a few forums and a shared Google doc - both have since disappeared. To this day I still get regular emails asking for a copy of it so I thought I&amp;rsquo;d copy it to a post here.&lt;/p&gt;
&lt;p&gt;Note: I haven&amp;rsquo;t updated these since around 2011.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox Addons for 2022</title>
      <link>https://smcleod.net/2022/05/firefox-addons-for-2022/</link>
      <pubDate>Tue, 17 May 2022 08:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2022/05/firefox-addons-for-2022/</guid>
      <description>&lt;!-- markdownlint-disable MD025 --&gt;
&lt;h2 id=&#34;firefox-addons---2022-edition&#34;&gt;Firefox Addons - 2022 Edition&lt;/h2&gt;
&lt;p&gt;My list of must-have Firefox addons - 2022 edition&lt;/p&gt;
&lt;p&gt;Updated: 2022-11-07&lt;/p&gt;
&lt;h3 id=&#34;privacy-and-security&#34;&gt;Privacy and Security&lt;/h3&gt;
&lt;p&gt;Firstly - you should have &lt;a href=&#34;https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop&#34;&gt;Firefox&amp;rsquo;s Enhanced Tracking Protection&lt;/a&gt; enabled.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-GB/firefox/addon/dont-track-me-google1&#34;&gt;Don&amp;rsquo;t Track Me Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-GB/firefox/addon/localcdn-fork-of-decentraleyes/&#34;&gt;LocalCDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-GB/firefox/addon/utm-tracking-token-stripper&#34;&gt;UTM Tracking Token Stripper&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Note: You can accomplish some of what this does by setting up the &lt;code&gt;removeparam&lt;/code&gt; uBlock origin rules I&amp;rsquo;ve listed below.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-GB/firefox/addon/multi-account-containers&#34;&gt;Multi-Account Containers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Useful for setting sites such as Amazon, eBay, Twitter, LinkedIn, Banking etc&amp;hellip; each to always open in their own isolated container.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The official addon for whatever Password Manager you use.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://browser.mt/&#34;&gt;Firefox Translations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ublock-origin&#34;&gt;uBlock Origin&lt;/h4&gt;
&lt;p&gt;Probably the single most important addon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goodbye Evernote, Hello Bear</title>
      <link>https://smcleod.net/2021/07/goodbye-evernote-hello-bear/</link>
      <pubDate>Thu, 22 Jul 2021 19:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2021/07/goodbye-evernote-hello-bear/</guid>
      <description>&lt;p&gt;Until recently I used Evernote for my notes, web clippings and document drafts, I was a subscriber going on 14 years and had over 3000 notes.&lt;/p&gt;
&lt;p&gt;However in recent years Evernote has gone downhill to the point it could be considered hostile to it&amp;rsquo;s users.&lt;/p&gt;
&lt;p&gt;The native macOS app was replaced with an Electron Javascript webframe and like almost all Electron apps I&amp;rsquo;ve tried it was plagued by poor performance, memory leaks and aggressive idle CPU utilisation and above all else it now lacks the low latency feeling the native application had.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rancilio Silvia Upgrade</title>
      <link>https://smcleod.net/2021/07/rancilio-silvia-upgrade/</link>
      <pubDate>Sun, 11 Jul 2021 14:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2021/07/rancilio-silvia-upgrade/</guid>
      <description>&lt;p&gt;Weekend upgrades to my Ranchilio Silvia v4 espresso machine.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a digital &lt;a href=&#34;https://www.seattlecoffeegear.com/blog/2018/10/01/whats-a-pid/&#34;&gt;PID&lt;/a&gt; &lt;a href=&#34;https://www.jetblackespresso.com.au/shop/p/rancilio-silvia-pid-preinfusion/&#34;&gt;kit&lt;/a&gt; for improved temperature control&lt;/li&gt;
&lt;li&gt;Replaced the boiler element&lt;/li&gt;
&lt;li&gt;Thermal insulation&lt;/li&gt;
&lt;li&gt;Basic &lt;a href=&#34;https://www.cygnett.com/products/smart-wi-fi-plug-with-power-monitoring&#34;&gt;&amp;ldquo;smart&amp;rdquo; power control&lt;/a&gt; with Siri integration&lt;/li&gt;
&lt;li&gt;Upgrade the standard Ranchilio basket to a &lt;a href=&#34;https://www.dukescoffee.com.au/shop/vst-precision-basket-ridged/&#34;&gt;VST 18g Ridged&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/assembled.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/siri.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/vst_18g_r.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;rebuild-photos&#34;&gt;Rebuild Photos&lt;/h2&gt;
&lt;p&gt;Note the damage to the boiler elements terminals, this was shorting and causing the houses RCD to trip&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/boiler_element_damage.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/boiler_out.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/element.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;Wiring the PID controller&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/silvia_upgrades_2021/pid_interface_wiring.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;Replacing the boiler thermostat with one connected to the PID controller&lt;/p&gt;</description>
    </item>
    <item>
      <title>DevOps Team Charter</title>
      <link>https://smcleod.net/2020/11/devops-team-charter/</link>
      <pubDate>Wed, 18 Nov 2020 14:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2020/11/devops-team-charter/</guid>
      <description>&lt;p&gt;A template team charter for software and platform engineering teams.&lt;/p&gt;
&lt;p&gt;Research&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; shows there is great value in people embracing a shared vision and ideas that are bigger than themselves.&lt;/p&gt;
&lt;p&gt;When it comes to a team charter, it&amp;rsquo;s important to remember that it&amp;rsquo;s not a static document. It&amp;rsquo;s a living document that should be updated as the team evolves and grows.&lt;/p&gt;
&lt;p&gt;Keep in mind that&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One size doesn&amp;rsquo;t fit all.&lt;/li&gt;
&lt;li&gt;Consider your (teams) mission, cultural background and values.&lt;/li&gt;
&lt;li&gt;While not exhaustive - this is on the longer side, you may wish to distill as is practical, but I implore you not to only pick the easier items - that&amp;rsquo;s missing the point.&lt;/li&gt;
&lt;li&gt;These can give you talking points when performing postmortems, retros and during times of conflict.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See also: &amp;lsquo;&lt;a href=&#34;https://itrevolution.com/antipattern-1-2-using-old-ways-of-thinking-to-apply-new-ways-of-working/&#34;&gt;Using Old Ways of Thinking to Apply New Ways of Working&lt;/a&gt;&amp;rsquo; and &amp;lsquo;&lt;a href=&#34;https://itrevolution.com/bvssh-principles/&#34;&gt;BVSSHJ Principles&lt;/a&gt;&amp;rsquo;&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferrari F12 Berlinetta</title>
      <link>https://smcleod.net/2020/11/ferrari-f12-berlinetta/</link>
      <pubDate>Sun, 08 Nov 2020 16:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2020/11/ferrari-f12-berlinetta/</guid>
      <description>&lt;p&gt;Last weekend I had a chance encounter with a &lt;a href=&#34;https://en.wikipedia.org/wiki/Ferrari_F12&#34;&gt;Ferrari F12 Berlinetta&lt;/a&gt; and the owner kindly let me jump in and take a few photos.&lt;/p&gt;
&lt;h2 id=&#34;specs&#34;&gt;Specs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;6.3L v12&lt;/li&gt;
&lt;li&gt;544 KW (740 Horsepower)&lt;/li&gt;
&lt;li&gt;690 Nm at 6000RPM&lt;/li&gt;
&lt;li&gt;1525 kg&lt;/li&gt;
&lt;li&gt;0-100 in 3.1s&lt;/li&gt;
&lt;li&gt;0-200 in 8.5s&lt;/li&gt;
&lt;li&gt;Maximum speed: &amp;lsquo;over 340 km/h&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Was &lt;a href=&#34;https://web.archive.org/web/20121228015009/http://www.ferrari.com/english/gt_sport%20cars/gt/pages/120229-car-announcing-the-f12berlinetta-the-fastest-ferrari-ever-built.aspx&#34;&gt;&amp;lsquo;The fastest road car Ferrari ever built&amp;rsquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;photos&#34;&gt;Photos&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_1.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_2.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_8.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_4.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_5.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_6.jpeg?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/ferrari_f12/F12B_7.jpeg?raw=true&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Best Of - 2020 Edition</title>
      <link>https://smcleod.net/2020/10/the-best-of-2020-edition/</link>
      <pubDate>Sat, 10 Oct 2020 16:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2020/10/the-best-of-2020-edition/</guid>
      <description>&lt;p&gt;Near the end of every year I note down a summary of the best apps, hardware &amp;amp; podcasts I&amp;rsquo;ve enjoyed throughout the year (and often for some time before).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post has been superseded. You can find the latest version of this post &lt;a href=&#34;https://smcleod.net/posts/2022-10-19-apps-of-2022/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;software-and-services&#34;&gt;Software and Services&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://plex.tv&#34;&gt;Plex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://culturedcode.com/things/&#34;&gt;Things&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.pixelmator.com/pro/&#34;&gt;Pixelmator Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://reederapp.com&#34;&gt;Reeder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://apps.apple.com/us/app/next-meeting/id1017470484?mt=12&#34;&gt;NextMeeting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.getbumpr.com&#34;&gt;Bumpr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.fastmail.com&#34;&gt;Fastmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://1password.com&#34;&gt;1Password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://calibre-ebook.com&#34;&gt;Calibre&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.backblaze.com&#34;&gt;Backblaze&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://iterm2.com&#34;&gt;iTerm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gitlab.org&#34;&gt;Gitlab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.pfsense.org&#34;&gt;PFsense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cordlessdog.com/stay/&#34;&gt;Stay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.titanium-software.fr/en/onyx.html&#34;&gt;Onyx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://evernote.com&#34;&gt;Evernote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://handbrake.fr&#34;&gt;Handbrake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://apps.apple.com/us/app/amphetamine/id937984704?mt=12&#34;&gt;Amphetamine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.mozilla.org/en-GB/firefox/new/&#34;&gt;Firefox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;software---mobile&#34;&gt;Software - Mobile&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://plex.tv&#34;&gt;Plex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://culturedcode.com/things/&#34;&gt;Things&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://reederapp.com/ios&#34;&gt;Reeder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://overcast.fm&#34;&gt;Overcast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://evernote.com&#34;&gt;Evernote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://itunes.apple.com/au/app/minihack-for-hacker-news/id631108846?mt=8&#34;&gt;MiniHack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.reddit.com/r/alienblue&#34;&gt;Alien Blue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://signal.org&#34;&gt;Singal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://panic.com/prompt/&#34;&gt;Prompt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;browser-addons&#34;&gt;Browser Addons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/&#34;&gt;uBlock Origin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/&#34;&gt;Dencentraleyes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.lg.com/au/tvs/lg-OLED65C9PTA&#34;&gt;LG C9 OLED TV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.daskeyboard.com&#34;&gt;Das Ultimate 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.logitech.com/en-au/products/mice/mx-master-3.html&#34;&gt;Logitech MX Master 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.apple.com&#34;&gt;16&amp;rsquo;&amp;rsquo; Macbook Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.apple.com&#34;&gt;iPhone 12 Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.apple.com&#34;&gt;AppleTV 4K&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.audioquest.com/dacs/dragonfly/dragonfly-red&#34;&gt;Audioquest DragonFly Red USB DAC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ultrasone.com/product/ultrasone-signature-pro/?lang=en&#34;&gt;Ultrasone Signature Pro Headphones&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.amazon.com.au/gp/feature.html?docId=3077740006&#34;&gt;Kindle Paperwhite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://alldaysocks.com&#34;&gt;All Day Socks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bellroy.com&#34;&gt;Bellroy Wallets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;podcasts&#34;&gt;Podcasts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.theskepticsguide.org/&#34;&gt;The Skeptics Guide To The Universion (SGU)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://youarenotsosmart.com/&#34;&gt;You Are Not So Smart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://risky.biz&#34;&gt;Risky.Biz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rhlstp.co.uk/&#34;&gt;RHLSTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bbc.co.uk/programmes/p089sfrz&#34;&gt;Louis Theroux - Grounded&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://podcasts.apple.com/au/podcast/hip-hop-saved-my-life-with-romesh-ranganathan/id982388481&#34;&gt;Hiphop Saved My Life&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.geologicpodcast.com/&#34;&gt;Geological&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://99percentinvisible.org/&#34;&gt;99% Invisible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bbc.co.uk/programmes/p02nq0gn/episodes/downloads&#34;&gt;BBC Global News&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;youtube-channels&#34;&gt;YouTube Channels&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/channel/UC5I2hjZYiW9gZPVkvzM8_Cw&#34;&gt;Techmoan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLVYeh_3Gx_94IWkO3rfvX9ZTgIoKgHJ9K&#34;&gt;Jim Jefferies - Well I Don&amp;rsquo;t Know About That!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/channel/UCyseFvMP4mZVlU5iEEbAamA&#34;&gt;Salvatore Ganacci&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/channel/UCFH4dWqQQOYkyJZUGT4q5pg&#34;&gt;Warped Perception&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/c/smartereveryday&#34;&gt;Smarter Every Day&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/channel/UCwKq447rYMVI5dAQWMmFnfg&#34;&gt;DTM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/channel/UCPD_bxCRGpmmeQcbe2kpPaA&#34;&gt;First We Feast (HotOnes)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PL1B627337ED6F55F0&#34;&gt;NPR Tiny Desk Concerts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/channel/UC4EDjfs78AhVgpBqE3WFGJg&#34;&gt;Logic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-absolute-worst-software-ive-experienced&#34;&gt;The Absolute &lt;em&gt;Worst&lt;/em&gt; Software I&amp;rsquo;ve Experienced&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;💩 Microsoft Office365 💩&lt;/li&gt;
&lt;li&gt;💩 Microsoft Teams 💩&lt;/li&gt;
&lt;li&gt;💩 Atlassian Jira 💩&lt;/li&gt;
&lt;li&gt;💩 Atlassian Bamboo 💩&lt;/li&gt;
&lt;li&gt;💩 Atlassian Confluence 💩&lt;/li&gt;
&lt;li&gt;💩 McAffee Endpoint Security 💩&lt;/li&gt;
&lt;li&gt;💩 Facebook 💩&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Rest in Peace Jimothy</title>
      <link>https://smcleod.net/2020/10/rest-in-peace-jimothy/</link>
      <pubDate>Thu, 08 Oct 2020 15:20:00 +0000</pubDate>
      <guid>https://smcleod.net/2020/10/rest-in-peace-jimothy/</guid>
      <description>&lt;p&gt;You magnificent girl, you brought me 14 years of love and happiness&lt;/p&gt;
&lt;h2 id=&#34;photos&#34;&gt;Photos&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/1.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/2.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/3.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/4.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/5.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/6.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/7.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/8.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/9.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/10.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/11.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/12.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/13.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/15.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/16.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/17.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/18.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/19.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/20.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/21.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/22.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/23.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/24.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/25.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/26.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/27.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/28.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/29.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/30.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/31.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/32.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/33.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/34.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/35.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/36.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/37.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/38.jpeg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/rip_jimothy/39.jpeg?raw=true&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Camels Dressed As Unicorns</title>
      <link>https://smcleod.net/2019/08/camels-dressed-as-unicorns/</link>
      <pubDate>Thu, 08 Aug 2019 08:10:00 +0000</pubDate>
      <guid>https://smcleod.net/2019/08/camels-dressed-as-unicorns/</guid>
      <description>&lt;h2 id=&#34;stop-trying-to-hire-with-titles-like-devops-engineer-or-cloud-engineer&#34;&gt;Stop trying to hire with titles like &amp;lsquo;DevOps Engineer&amp;rsquo; or &amp;lsquo;Cloud Engineer&amp;rsquo;&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;DevOps is &amp;hellip; not a job title&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s more of a cultural practice, like innovation, and it makes just as little sense hiring &amp;ldquo;innovation engineers&amp;rdquo; and expecting your organisation to be innovative, without also creating the culture to foster innovation.&amp;rdquo; (Joel Shea when responding to this posted on &lt;a href=&#34;https://www.linkedin.com/posts/activity-6564991913110368256-WxFP&#34;&gt;LinkedIn&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;In most cases it&amp;rsquo;s clear the organisation doesn&amp;rsquo;t truly know what they want or need and likely don&amp;rsquo;t understand the nuances of the aspects of engineering.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Looking For New Opportunities</title>
      <link>https://smcleod.net/2019/08/looking-for-new-opportunities/</link>
      <pubDate>Tue, 06 Aug 2019 10:30:00 +0000</pubDate>
      <guid>https://smcleod.net/2019/08/looking-for-new-opportunities/</guid>
      <description>&lt;p&gt;As stated in &lt;a href=&#34;https://smcleod.net/tech/2019/06/29/leaving-infoxchange.html&#34;&gt;my announcement post&lt;/a&gt; - after 7~ years, I resigned from Infoxchange several months ago.&lt;/p&gt;
&lt;p&gt;I planned on taking a holiday, relaxing, decompressing, dipping my toes in some off-the-shelf tech I haven&amp;rsquo;t spent a lot of time with and performing some personal growth through reading a number of books that have been sitting on my &amp;rsquo;to read&amp;rsquo; shelf.&lt;/p&gt;
&lt;p&gt;This is exactly what I&amp;rsquo;ve done.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;im-now-open-to-new-opportunities&#34;&gt;I&amp;rsquo;m now open to new opportunities&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;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&amp;rsquo;ll pursue it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leaving Infoxchange</title>
      <link>https://smcleod.net/2019/06/leaving-infoxchange/</link>
      <pubDate>Sat, 29 Jun 2019 09:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2019/06/leaving-infoxchange/</guid>
      <description>&lt;p&gt;After 7~ years, I have resigned from Infoxchange.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;In 2012 I was hired to work with &lt;a href=&#34;https://www.infoxchange.org&#34;&gt;Infoxchange&lt;/a&gt; to &lt;em&gt;&amp;ldquo;shake things up&amp;rdquo;&lt;/em&gt; (in the Systems Operations team) and stabilise the hosting environment.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goodbye XenSever - Hello XCP-ng</title>
      <link>https://smcleod.net/2019/02/goodbye-xensever-hello-xcp-ng/</link>
      <pubDate>Tue, 05 Feb 2019 13:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2019/02/goodbye-xensever-hello-xcp-ng/</guid>
      <description>&lt;p&gt;In 2018 I set out to replace our XenSever 7.2 based virtualisation after &lt;a href=&#34;https://xenserver.org/blog/entry/xenserver-7-3-changes-to-the-free-edition.html&#34;&gt;Citrix essentially screwed over free / open source users&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This project was to directly replace XenServer 7.2 with something supported and manageable for our traditional virtualisation needs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;high-level-selection-considerations&#34;&gt;High Level Selection Considerations&lt;/h2&gt;
&lt;p&gt;I evaluated a number of options, with the primary candidates below.&lt;/p&gt;
&lt;p&gt;Key criteria (at a high level) I was evaluating:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ease of moving from our existing XenServer 7.2 based hypervisor clusters.&lt;/li&gt;
&lt;li&gt;Security (architecture, hardening, monitoring, logging).&lt;/li&gt;
&lt;li&gt;Cost (both licensing if any and self-support / management costs).&lt;/li&gt;
&lt;li&gt;VM Performance (Storage IOPs and throughput, Network latency and throughput, Processing latency, steal from over-provisioned workloads).&lt;/li&gt;
&lt;li&gt;Management UI/UX and performance (for BAU activities).&lt;/li&gt;
&lt;li&gt;Management / Cluster SPOFs, fail-over and redundancy.&lt;/li&gt;
&lt;li&gt;Installation and upgrade process.&lt;/li&gt;
&lt;li&gt;Update and security patching frequency.&lt;/li&gt;
&lt;li&gt;Networking design and complexity.&lt;/li&gt;
&lt;li&gt;Community (size, engagement, acceptance of suggestions / MRs).&lt;/li&gt;
&lt;li&gt;Reliable live VM migrations.&lt;/li&gt;
&lt;li&gt;Ease of management for a small team (Part of a low TCO).&lt;/li&gt;
&lt;li&gt;Risk of vendor and technology lock-in.&lt;/li&gt;
&lt;li&gt;Risk of survival (will it still be well maintained over the next 1-3 years).&lt;/li&gt;
&lt;li&gt;Stability and reliability above practically all else.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;xenserver-76-w-paid-license&#34;&gt;&lt;a href=&#34;https://xenserver.org/&#34;&gt;XenServer 7.6 (w/ Paid License)&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;for&#34;&gt;For&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Potentially priority support from Citrix for issues.&lt;/li&gt;
&lt;li&gt;Easy upgrade from 7.2.&lt;/li&gt;
&lt;li&gt;Fresh installs and upgrades are simple, painless and easy to pxeboot, licensing can be a pain after install however.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;against&#34;&gt;Against&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Slow moving development.&lt;/li&gt;
&lt;li&gt;Incredibly expensive, &lt;a href=&#34;https://store.citrix.com/store/citrix/en_US/pd/ThemeID.37713000/productID.315979800&#34;&gt;it would cost us something like $140,800 AUD per year (shelf price)&lt;/a&gt; for our 32 hosts (each with 2 sockets).&lt;/li&gt;
&lt;li&gt;Features heavily restricted by licensing model.&lt;/li&gt;
&lt;li&gt;Mostly older-fashioned enterprise users.&lt;/li&gt;
&lt;li&gt;No web management interface (although you can use Xen Orchestra from the folks behind XCP-ng).&lt;/li&gt;
&lt;li&gt;Diminishing community since &lt;a href=&#34;https://xenserver.org/blog/entry/xenserver-7-3-changes-to-the-free-edition.html&#34;&gt;XenServer licensing changes in 7.3&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Poor storage performance compared to KVM based solutions.&lt;/li&gt;
&lt;li&gt;Many outdated packages, while kind of based on CentOS 7, there are a great deal of packages from older releases or completely custom rebuilt.&lt;/li&gt;
&lt;li&gt;Uses old technologies like EXT3 and doesn&amp;rsquo;t support SSD/Flash TRIM/DISCARD functions.&lt;/li&gt;
&lt;li&gt;SELinux not enforcing or supported.&lt;/li&gt;
&lt;li&gt;OpenvSwitch still uses a lot of Dom0 CPU (same as XenServer).&lt;/li&gt;
&lt;li&gt;Dom0 often ends up limiting VM storage operations (tapdisk maxing out Dom0 CPU).&lt;/li&gt;
&lt;li&gt;Applying updates can be painful or at least slow, requiring binary ISO files to be downloaded from Citrix.&lt;/li&gt;
&lt;li&gt;Uses Jira for bug tracking (I just can&amp;rsquo;t stand the thing, it&amp;rsquo;s painfully laggy, give my GitLab or Github over it any day).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;xcp-ng&#34;&gt;&lt;a href=&#34;https://xcp-ng.org/&#34;&gt;XCP-ng&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;XCP-ng is a relatively recent fork from XenServer after it was open sourced, tracking upstream but clearly prioritising modernisation and community.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Zealand Otago Trip in a 2019 Mustang GT</title>
      <link>https://smcleod.net/2018/12/new-zealand-otago-trip-in-a-2019-mustang-gt/</link>
      <pubDate>Thu, 20 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2018/12/new-zealand-otago-trip-in-a-2019-mustang-gt/</guid>
      <description>&lt;!-- TODO: add mapbox --&gt;
&lt;p&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.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;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 &lt;a href=&#34;https://www.caranddriver.com/reviews/a24847025/2018-ford-mustang-automatic-transmission-performance/&#34;&gt;10 speed gearbox&lt;/a&gt;
(yes, &lt;em&gt;10&lt;/em&gt; gears - because more is better right?), tuned up suspension and so seemed like it would make for a pretty fun trip.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Run youtube-dl (or similar) in the background</title>
      <link>https://smcleod.net/2018/07/run-youtube-dl-or-similar-in-the-background/</link>
      <pubDate>Mon, 30 Jul 2018 08:52:00 +0000</pubDate>
      <guid>https://smcleod.net/2018/07/run-youtube-dl-or-similar-in-the-background/</guid>
      <description>&lt;p&gt;I wanted an alias or function to use &lt;a href=&#34;https://rg3.github.io/youtube-dl/&#34;&gt;&lt;code&gt;youtube-dl&lt;/code&gt;&lt;/a&gt; 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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A) bash quoting&lt;/li&gt;
&lt;li&gt;B) backgrounding dying when their terminal closed&lt;/li&gt;
&lt;li&gt;C) passing the argument (url in my case) to the function&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s a simple function I whipped up that seems to &amp;lsquo;just works&amp;rsquo;™:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; yt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  nohup youtube-dl &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --no-progress 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &amp;gt; youtube-dl-&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +%Y%m%d-%H%M%S&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;.log &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And if you don&amp;rsquo;t want logs, simply send the output to &lt;code&gt;/dev/null&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disabling scroll-wheel zoom in Firefox</title>
      <link>https://smcleod.net/2018/07/disabling-scroll-wheel-zoom-in-firefox/</link>
      <pubDate>Mon, 16 Jul 2018 10:57:14 +0000</pubDate>
      <guid>https://smcleod.net/2018/07/disabling-scroll-wheel-zoom-in-firefox/</guid>
      <description>&lt;p&gt;This feature annoys me endlessly, I end up zoomed in and out of websites all over the internet.
&amp;hellip; But the fix is easy and there&amp;rsquo;s no addons required.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;code&gt;about:config&lt;/code&gt; (in Firefox&amp;rsquo;s URL bar)&lt;/li&gt;
&lt;li&gt;Change the value of the following two properties to &lt;code&gt;0&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mousewheel.with_control.action
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mousewheel.with_meta.action
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you use Firefox sync and want these settings to sync between your machines, also add the following properties:&lt;/p&gt;
&lt;p&gt;Create two &lt;em&gt;new&lt;/em&gt; properties both of type &lt;code&gt;boolean&lt;/code&gt; and set them to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Highlands Festival of Speed 2018</title>
      <link>https://smcleod.net/2018/04/highlands-festival-of-speed-2018/</link>
      <pubDate>Wed, 11 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2018/04/highlands-festival-of-speed-2018/</guid>
      <description>&lt;p&gt;Last weekend I headed to New Zealand and marshalled at the &lt;a href=&#34;https://www.highlands.co.nz/events/highlands-festival-of-speed-2018/&#34;&gt;Highlands Festival of Speed&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;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&amp;rsquo;s most well known racing legends.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flash Storage and SSD Failure Rate Update (March 2018)</title>
      <link>https://smcleod.net/2018/03/flash-storage-and-ssd-failure-rate-update-march-2018/</link>
      <pubDate>Tue, 20 Mar 2018 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2018/03/flash-storage-and-ssd-failure-rate-update-march-2018/</guid>
      <description>&lt;p&gt;It was almost 3 years ago that my open source storage project went into production. In that time it&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m happy to report that the clusters have been operating very successfully since their conception.&lt;/p&gt;
&lt;p&gt;Since moving away from proprietary &amp;lsquo;black box&amp;rsquo; vendor SANs, we haven&amp;rsquo;t had a single SAN issue, storage outage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Theory of constraints</title>
      <link>https://smcleod.net/2018/01/theory-of-constraints/</link>
      <pubDate>Wed, 17 Jan 2018 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2018/01/theory-of-constraints/</guid>
      <description>&lt;h3 id=&#34;a-chain-is-no-stronger-than-its-weakest-link&#34;&gt;&amp;ldquo;A chain is no stronger than its weakest link&amp;rdquo;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Any improvement made anywhere besides the bottleneck is an illusion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Any improvement made after the bottleneck is useless because it will always remain starved waiting for work from the bottleneck.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Any improvement made before the bottleneck merely results in more ‘work&amp;rsquo; piling up at the bottleneck.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Identify&lt;/em&gt; the system&amp;rsquo;s constraint(s) (that which prevents the organisation from obtaining more of the goal in a unit of time)&lt;/li&gt;
&lt;li&gt;Decide how to &lt;em&gt;exploit&lt;/em&gt; the system&amp;rsquo;s constraint(s) (how to get the most out of the constraint)&lt;/li&gt;
&lt;li&gt;Subordinate everything else to the above decision (&lt;em&gt;align&lt;/em&gt; the whole system or organization to support the decision made above)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Elevate&lt;/em&gt; the system&amp;rsquo;s constraint(s) (make other major changes needed to increase the constraint&amp;rsquo;s capacity)&lt;/li&gt;
&lt;li&gt;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&amp;rsquo;s constraint.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&#34;references&#34;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.amazon.com/The-Phoenix-Project-Helping-Business/dp/0988262592&#34;&gt;The Phoenix Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Theory_of_constraints&#34;&gt;Wikipedia - Theory of Constraints&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Top album picks for 2017</title>
      <link>https://smcleod.net/2017/12/top-album-picks-for-2017/</link>
      <pubDate>Thu, 28 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/12/top-album-picks-for-2017/</guid>
      <description>&lt;p&gt;Here are my top album pics for 2017 (in no particular order)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This is by no means an exhaustive list, it&amp;rsquo;s just the top albums that really stood out to me and in all fairness, I&amp;rsquo;ve thought of several others since so there may be a follow up post (or two).&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;father-john-misty---pure-comedy&#34;&gt;Father John Misty - &lt;a href=&#34;https://en.wikipedia.org/wiki/Pure_Comedy&#34;&gt;Pure Comedy&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/albums_2017/FJM_PureComedy_Covers.gif?raw=true&#34;&gt;&lt;/p&gt;
&lt;p&gt;As a bonus, a short film was released with the album:&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/cejjqC1oyQM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;From &lt;a href=&#34;https://en.wikipedia.org/wiki/Pure_Comedy&#34;&gt;Wikipedia&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HP 4951C Protocol Analyser</title>
      <link>https://smcleod.net/2017/12/hp-4951c-protocol-analyser/</link>
      <pubDate>Wed, 27 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/12/hp-4951c-protocol-analyser/</guid>
      <description>&lt;p&gt;My good friend Joel Shea received a most unlikely gift this Christmas - A vintage HP 4951 Protocol Analyser.&lt;/p&gt;
&lt;p&gt;According to the &lt;a href=&#34;http://www.hpmuseum.net/display_item.php?hw=1123&#34;&gt;HP Computer Museum&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Original Price: $3595
The 4951B was replaced by the 4951C and 4952A in 1986. Both new models handled Async, BSC, SDLC, HDLC, X.25 and SNA protocols. The 4951C also handled DDCMP, while the 4952A did not. The 4952A handled X.21 while the 4951C did not. Both new analysers used a floppy dive (618 KB) for removable media.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Talk - Clustered, Distributed File and Volume Storage with GlusterFS</title>
      <link>https://smcleod.net/2017/11/talk-clustered-distributed-file-and-volume-storage-with-glusterfs/</link>
      <pubDate>Tue, 14 Nov 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/11/talk-clustered-distributed-file-and-volume-storage-with-glusterfs/</guid>
      <description>&lt;p&gt;Using GlusterFS to provide volume storage to Kubernetes as a replacement for our existing file and static content hosting.&lt;/p&gt;
&lt;p&gt;This talk was given at &lt;a href=&#34;https://www.meetup.com/Infrastructure-Coders/events/244535588/&#34;&gt;Infracoders&lt;/a&gt; on Tuesday 14th November 2017.&lt;/p&gt;
&lt;p&gt;NOTE: Below link to slides currently broken - will fix soon! (03/08/2019)&lt;/p&gt;
&lt;p&gt;Click below to view slides (PDF version):
&lt;a href=&#34;https://www.dropbox.com/s/rdojhb399639e4k/lightning_san.pdf?dl=0&#34;&gt;&lt;img alt=&#34;Click to view slides&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/gluster-first-slide.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.dropbox.com/s/rdojhb399639e4k/lightning_san.pdf?dl=1&#34;&gt;&lt;em&gt;Direct download link&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/gluster_talk_14112017/2.jpg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/gluster_talk_14112017/3.jpg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/gluster_talk_14112017/4.jpg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/gluster_talk_14112017/5.jpg?raw=true&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/sammcj/smcleod_files/blob/master/images/gluster_talk_14112017/6.jpg?raw=true&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Applying syntax in Sublime based on the first file line</title>
      <link>https://smcleod.net/2017/10/applying-syntax-in-sublime-based-on-the-first-file-line/</link>
      <pubDate>Wed, 25 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/10/applying-syntax-in-sublime-based-on-the-first-file-line/</guid>
      <description>&lt;p&gt;In vim, you can add a comment at the top of files to set the syntax, e.g.:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# vim: syntax=ruby&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In SublimeText there are &lt;em&gt;many&lt;/em&gt; ways to detect syntax, one interesting approach I&amp;rsquo;ve recently found useful is to match on the top line in the file.
For example, with Puppet there is a file called &lt;code&gt;Puppetfile&lt;/code&gt;, it has no extension but it&amp;rsquo;s really Ruby syntax, so it&amp;rsquo;s useful to add linting incase you
miss something simple like a &lt;code&gt;,&lt;/code&gt; and break deployments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Broadcom, Or How I Learned To Start Worrying And Drop The Packet</title>
      <link>https://smcleod.net/2017/10/broadcom-or-how-i-learned-to-start-worrying-and-drop-the-packet/</link>
      <pubDate>Fri, 13 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/10/broadcom-or-how-i-learned-to-start-worrying-and-drop-the-packet/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net/2017/10/broadcom-or-how-i-learned-to-start-worrying-and-drop-the-packet/office-space-broadcom.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Earlier this week we started the process to upgrade one of our hypervisor compute clusters when we encountered a rather painful bug with HP&amp;rsquo;s Broadcom NIC chipsets.&lt;/p&gt;
&lt;p&gt;We were part way through a routine rolling pool upgrade of our hypervisor (XenServer) cluster when we observed unexpected and intermittent loss of connectivity between several VMs, then entire XenServer hosts.&lt;/p&gt;
&lt;p&gt;The problems appeared to impact hosts that hadn&amp;rsquo;t yet upgraded to XenServer 7.2. We now attribute this to a symptom of extreme packet loss between the hosts in the pool and thanks to buggy firmware from Broadcom and HP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GlusterFS</title>
      <link>https://smcleod.net/2017/09/glusterfs/</link>
      <pubDate>Mon, 25 Sep 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/09/glusterfs/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re in the process of shifting from using our custom &amp;lsquo;glue&amp;rsquo; for orchestrating Docker deployments to Kubernetes, When we first deployed Docker to replace LXC and our legacy Puppet-heavy application configuration and deployment systems there really wasn&amp;rsquo;t any existing tool to manage this, thus we rolled our own, mainly a few Ruby scripts combined with a Puppet / Hiera / Mcollective driven workflow.&lt;/p&gt;
&lt;p&gt;The main objective is to replace our legacy NFS file servers used to host uploads / attachments and static files for our web applications, while NFS(v4) performance is adequate, it is a clear single point of failure and of course, there are the age old stale mount problems should network interruptions occur.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Return Of The RSS</title>
      <link>https://smcleod.net/2017/09/return-of-the-rss/</link>
      <pubDate>Fri, 22 Sep 2017 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2017/09/return-of-the-rss/</guid>
      <description>&lt;p&gt;Of all the tools for reading news and subscribing to software releases, I still find RSS the most useful.&lt;/p&gt;
&lt;p&gt;I use Feedly to manage my rss subscriptions and keep all my devices in sync, but instead of using the Feedly&amp;rsquo;s own client, I use an app called Reeder as the client / reader itself.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://feedly.com/smcleod/blogs&#34;&gt;Link: My Feedly RSS Feed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;feedly&#34;&gt;&lt;a href=&#34;https://feedly.com&#34;&gt;Feedly&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;RSS feed subscription management&lt;/p&gt;
&lt;p&gt;Features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keyword alerts.&lt;/li&gt;
&lt;li&gt;Browser plugins to subscribe to (current) url.&lt;/li&gt;
&lt;li&gt;Notation and highlighting support (a bit like Evernote).&lt;/li&gt;
&lt;li&gt;Search and filtering across large numbers of feeds / content.&lt;/li&gt;
&lt;li&gt;IFTTT, Zapier, Buffer and Hootsuite integration.&lt;/li&gt;
&lt;li&gt;Built in save / share functionality (that I only use when I&amp;rsquo;m on the website).&lt;/li&gt;
&lt;li&gt;Backup feeds to Dropbox.&lt;/li&gt;
&lt;li&gt;Very fast, regardless of the fact that I&amp;rsquo;m in Australia - which often impacts the performance of apps / sites that tend to be hosted on AWS in the US as the latency is so high.&lt;/li&gt;
&lt;li&gt;Article de-duplication is currently being developed I believe, so I&amp;rsquo;m looking forward to that!&lt;/li&gt;
&lt;li&gt;Easy manual import, export and backup (no vendor lock-in is important to me).&lt;/li&gt;
&lt;li&gt;Public sharing of your Feedly feeds (we&amp;rsquo;re getting very meta here!).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reeder&#34;&gt;&lt;a href=&#34;http://reederapp.com&#34;&gt;Reeder&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A (really) beautiful and fast iOS / macOS client&lt;/p&gt;</description>
    </item>
    <item>
      <title>MH-Z19 CO2 sensor reader, logger and visualiser</title>
      <link>https://smcleod.net/2016/12/mh-z19-co2-sensor-reader-logger-and-visualiser/</link>
      <pubDate>Wed, 21 Dec 2016 16:37:38 +1100</pubDate>
      <guid>https://smcleod.net/2016/12/mh-z19-co2-sensor-reader-logger-and-visualiser/</guid>
      <description>&lt;!-- markdownlint-disable MD025 --&gt;
&lt;h1 id=&#34;mh-z19-co2-sensor-reader-logger-and-visualiser&#34;&gt;MH-Z19 CO2 sensor reader, logger and visualiser&lt;/h1&gt;
&lt;p&gt;&lt;img alt=&#34;plot&#34; loading=&#34;lazy&#34; src=&#34;https://user-images.githubusercontent.com/862951/52826593-a98a5400-3115-11e9-868a-72a763b6d587.jpg&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reads data from UART(serial)-connected MH-Z19 (or MH-Z14) sensor using python 3.&lt;/li&gt;
&lt;li&gt;If you dare to install nodejs you can visualise the logged data (using html and plotly.js library).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Repository: &lt;a href=&#34;https://github.com/sammcj/CO2-Logger&#34;&gt;sammcj/CO2-Logger&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Note this post is from 2016, in 2021 I replaced my custom Co2 loggers with an &lt;a href=&#34;https://aranet.com/products/aranet4/&#34;&gt;Aranet4&lt;/a&gt;. While very expensive, is and excellent off-the-shelf solution, with many features.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;connection&#34;&gt;Connection&lt;/h3&gt;
&lt;p&gt;Sensor can be queried using 3.3v UART at 9600 bps. Sensor main feed voltage is 5v.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Castle Hill Winter Trip 2016 Photos</title>
      <link>https://smcleod.net/2016/08/castle-hill-winter-trip-2016-photos/</link>
      <pubDate>Sat, 06 Aug 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/08/castle-hill-winter-trip-2016-photos/</guid>
      <description>Castle Hill Winter Trip 2016 [Photos]</description>
    </item>
    <item>
      <title>The State of Android in 2016 &amp; The OnePlus 3 Phone</title>
      <link>https://smcleod.net/2016/07/the-state-of-android-in-2016-the-oneplus-3-phone/</link>
      <pubDate>Mon, 11 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/07/the-state-of-android-in-2016-the-oneplus-3-phone/</guid>
      <description>&lt;p&gt;I wanted to try Android for a couple of weeks, I like staying on top of technology, gadgets and making sure I never become a blind &amp;lsquo;zealot&amp;rsquo; for any platform or brand.&lt;/p&gt;
&lt;h2 id=&#34;the-oneplus-3&#34;&gt;The OnePlus 3&lt;/h2&gt;
&lt;p&gt;I did a lot of research and decided to try the &amp;ldquo;Oneplus 3&amp;rdquo; as it was good bang-for-buck, ran the latest software had plenty of grunt with the latest 8 core, high clock speed Qualcomm processor coupled with 6GB of DDR4 - the specs really are very impressive, especially for a $400USD phone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update Delayed Serial STONITH Design</title>
      <link>https://smcleod.net/2016/07/update-delayed-serial-stonith-design/</link>
      <pubDate>Mon, 04 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/07/update-delayed-serial-stonith-design/</guid>
      <description>&lt;p&gt;&lt;em&gt;note: This is a follow up post from &lt;a href=&#34;https://smcleod.net/tech/2015/07/21/rcd-stonith/&#34;&gt;2015-07-21-rcd-stonith&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;a-linux-cluster-base-stonith-provider-for-use-with-modern-pacemaker-clusters&#34;&gt;A Linux Cluster Base STONITH provider for use with modern Pacemaker clusters&lt;/h3&gt;
&lt;p&gt;This has since been accepted and merged into Fedora&amp;rsquo;s code base and as such will make it&amp;rsquo;s way to RHEL.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Source Code: &lt;a href=&#34;https://github.com/sammcj/fence_rcd_serial&#34;&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://diptrace.com/download/download-diptrace/&#34;&gt;Diptrace&lt;/a&gt; CAD Design: &lt;a href=&#34;https://github.com/sammcj/fence_rcd_serial/tree/master/CAD/STONTH_CAD_DESIGN_V3&#34;&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I have open sourced the CAD circuit design and made this available within this repo under
&lt;a href=&#34;CAD/STONTH_CAD_DESIGN_V3&#34;&gt;CAD Design and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Related RedHat Bug: &lt;a href=&#34;https://bugzilla.redhat.com/show_bug.cgi?id=1240868&#34;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1240868&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;v1-vs-v2v3-versions-of-the-rcd_serial-stonith-system&#34;&gt;&lt;code&gt;v1&lt;/code&gt; vs &lt;code&gt;v2/v3&lt;/code&gt; versions of the &lt;code&gt;rcd_serial&lt;/code&gt; STONITH system&lt;/h4&gt;
&lt;p&gt;The v2/v3 cables include the following improvements:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring SystemD Units With Nagios</title>
      <link>https://smcleod.net/2016/05/monitoring-systemd-units-with-nagios/</link>
      <pubDate>Mon, 23 May 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/05/monitoring-systemd-units-with-nagios/</guid>
      <description>&lt;p&gt;&lt;em&gt;Ever forgotten to add a critical service to monitoring?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Want to know if a service or process fails without explicitly monitoring every service on a host?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;Then why not use SystemD&amp;rsquo;s existing knowledge of all the enabled services? Thanks to &amp;lsquo;Kbyte&amp;rsquo; who made a simple Nagios plugin to do just this!&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://kbyte.snowpenguin.org/portal/wp-content/uploads/2014/11/nagios.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python3 (For RHEL/CentOS 7 &lt;code&gt;yum install python34&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;python-nagiosplugin &lt;a href=&#34;https://packagecloud.io/app/s_mcleod/centos7/search?q=python-nagiosplugin&#34;&gt;My pre-built RPMs&lt;/a&gt; or &lt;code&gt;pip3 install nagiosplugin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kbytesys/pynagsystemd/blob/master/bin/pynagsystemd.py&#34;&gt;PyNagSystemD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Online Conversion from SQL_ASCII to UTF8 in PostgreSQL</title>
      <link>https://smcleod.net/2016/05/online-conversion-from-sql_ascii-to-utf8-in-postgresql/</link>
      <pubDate>Mon, 23 May 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/05/online-conversion-from-sql_ascii-to-utf8-in-postgresql/</guid>
      <description>&lt;p&gt;Scripts and source available here: &lt;a href=&#34;https://github.com/sammcj/sql_ascii_to_utf8&#34;&gt;sql_ascii_to_utf8&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-goal&#34;&gt;The Goal&lt;/h2&gt;
&lt;p&gt;To be able to take a Postgres Database which is in SQL_ASCII encoding, and import it into a UTF8 encoded database.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python3 (For RHEL/CentOS 7 &lt;code&gt;yum install python34&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;python-nagiosplugin &lt;a href=&#34;https://packagecloud.io/app/s_mcleod/centos7/search?q=python-nagiosplugin&#34;&gt;My pre-built RPMs&lt;/a&gt; or &lt;code&gt;pip3 install nagiosplugin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kbytesys/pynagsystemd/blob/master/bin/pynagsystemd.py&#34;&gt;PyNagSystemD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;
&lt;p&gt;PostreSQL will generate errors like this if it encounters any non-UTF8 byte-sequences during a database restore:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# pg_dump -Fc test_badchar | pg_restore -d test_badchar_utf8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg_restore: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;archiver &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;)]&lt;/span&gt; Error &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; PROCESSING TOC:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg_restore: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;archiver &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;)]&lt;/span&gt; Error from TOC entry 2839&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;26852&lt;/span&gt; TABLE DATA table101 postgres
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg_restore: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;archiver &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;)]&lt;/span&gt; COPY failed &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; table &lt;span class=&#34;s2&#34;&gt;&amp;#34;table101&amp;#34;&lt;/span&gt;: ERROR:  invalid byte sequence &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; encoding &lt;span class=&#34;s2&#34;&gt;&amp;#34;UTF8&amp;#34;&lt;/span&gt;: 0x91
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CONTEXT:  COPY table101, line &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;WARNING: errors ignored on restore: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And the corresponding data will be omitted from the database (in this case, the whole table, even the rows which did not have a problem):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speeding Up rsync</title>
      <link>https://smcleod.net/2016/05/speeding-up-rsync/</link>
      <pubDate>Tue, 03 May 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/05/speeding-up-rsync/</guid>
      <description>&lt;p&gt;The most common way to use rsync is probably as such:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -avr user@&amp;lt;source&amp;gt;:&amp;lt;source_dir&amp;gt; &amp;lt;dest_dir&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Resulting in 30-35MB/s depending on file sizes&lt;/p&gt;
&lt;p&gt;This can be improved by using a more efficient, less secure encryption algorithm, disabling compression
and telling the SSH client to disable some unneeded features that slow things down.&lt;/p&gt;
&lt;p&gt;With the settings below I have achieved 100MB/s (at work between VMs) and over 300MB/s at home between SSD drives.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Benchmarking IO with FIO</title>
      <link>https://smcleod.net/2016/04/benchmarking-io-with-fio/</link>
      <pubDate>Fri, 29 Apr 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/04/benchmarking-io-with-fio/</guid>
      <description>&lt;h2 id=&#34;this-is-a-quick-tldr-there-are-many-other-situations-and-options-you-could-consider&#34;&gt;This is a quick tldr there are &lt;em&gt;many&lt;/em&gt; other situations and options you could consider&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://linux.die.net/man/1/fio&#34;&gt;FIO man page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;IOP/s = Input or Output operations per second&lt;/li&gt;
&lt;li&gt;Throughput = How many MB/s can you read/write continuously&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;variables-worth-tuning-based-on-your-situation&#34;&gt;Variables worth tuning based on your situation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--iodepth&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The iodepth is very dependant on your hardware.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rotational drives without much cache and high latency (i.e. desktop SATA drives) will not benefit from a large iodepth, Values between 16 to 64 could be sensible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mirroring a Gitlab project to Github</title>
      <link>https://smcleod.net/2016/02/mirroring-a-gitlab-project-to-github/</link>
      <pubDate>Thu, 04 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/02/mirroring-a-gitlab-project-to-github/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s pretend you have a project on Gitlab called &lt;code&gt;ask-izzy&lt;/code&gt; and you want to mirror it up to Gitlab which is located at &lt;a href=&#34;https://github.com/ask-izzy/ask-izzy&#34;&gt;https://github.com/ask-izzy/ask-izzy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Assuming you&amp;rsquo;re running Gitlab as the default user of &lt;code&gt;git&lt;/code&gt; and that your repositories are stored in &lt;code&gt;/mnt/repositories&lt;/code&gt; you can following something similar to the following instructions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Grant write access to Github&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Get your Gitlab install&amp;rsquo;s pubkey from the git user&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /home/git/.ssh/id_rsa.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On Github add this pubkey as deploy key on the repo, make sure you tick the option to allow write access.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AskIzzy</title>
      <link>https://smcleod.net/2016/01/askizzy/</link>
      <pubDate>Fri, 29 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/01/askizzy/</guid>
      <description>&lt;h2 id=&#34;today-we-launched-a-mobile-website-for-homeless-people&#34;&gt;Today we launched a mobile website for homeless people&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://askizzy.org.au&#34;&gt;&lt;img src=&#34;askizzy.png&#34; style=&#34;width: 600px;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; and it was launched by &lt;a href=&#34;http://www.heraldsun.com.au/news/victoria/askizzy-app-connects-the-homeless-to-food-shelter-and-health-services/news-story/bfae67275552be421af4dd54bfd575a6?nk=ebd042d1d2789514c4e8553cb5633711-1454053888&#34;&gt;one of Australia&amp;rsquo;s many recent Prime Ministers&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;today-alone-we-served-up-over-87000-requests&#34;&gt;Today alone we served up over 87,000 requests&lt;/h3&gt;
&lt;p&gt;As many of you know, I work with &lt;a href=&#34;https://infoxchange.org&#34;&gt;Infoxchange&lt;/a&gt; as the operations lead.&lt;/p&gt;
&lt;p&gt;When I first heard the idea of a website or app for people that have found or are worried about finding themselves homeless in Australia I really didn&amp;rsquo;t think it made sense - until I saw the stats showing how many homeless people in Australia have regular access to a smart phone and data either via a cellular provider or free WiFi.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fix XenServer SR with corrupt or invalid metadata</title>
      <link>https://smcleod.net/2016/01/fix-xenserver-sr-with-corrupt-or-invalid-metadata/</link>
      <pubDate>Mon, 18 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2016/01/fix-xenserver-sr-with-corrupt-or-invalid-metadata/</guid>
      <description>&lt;p&gt;If a disk / VDI is orphaned or only partially deleted you&amp;rsquo;ll notice that under the SR it&amp;rsquo;s not assigned to any VM.&lt;/p&gt;
&lt;p&gt;This can cause issues that look like metadata corruption resulting in the inability to migrate VMs or edit storage.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;root@xenserver-host ~&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# xe vdi-destroy uuid=6c2cd848-ac0e-441c-9cd6-9865fca7fe8b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error code: SR_BACKEND_FAILURE_181
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error parameters: , Error in Metadata volume operation &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; SR. &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;opterr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;VDI delete operation failed &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; parameters:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  /dev/VG_XenStorage-3ae1df17-06ee-7202-eb92-72c266134e16/MGT, 6c2cd848-ac0e-441c-9cd6-9865fca7fe8b.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Error: Failed to write file with params &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;3, 0, 512, 512&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;. Error: 5&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;removing-stale-vdis&#34;&gt;Removing stale VDIs&lt;/h2&gt;
&lt;p&gt;To fix this, you need to remove those VDIs from the SR after first deleting the logical volume:&lt;/p&gt;</description>
    </item>
    <item>
      <title>iSCSI SCSI-ID / Serial Persistence</title>
      <link>https://smcleod.net/2015/12/iscsi-scsi-id-/-serial-persistence/</link>
      <pubDate>Mon, 14 Dec 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/12/iscsi-scsi-id-/-serial-persistence/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;&amp;ldquo;Having a SCSI ID is a f*cking idiotic thing to do.&amp;rdquo;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://yarchive.net/comp/linux/scsi_ids.html&#34;&gt;- Linus Torvalds&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;hellip;and after the amount of time I&amp;rsquo;ve wasted getting XenServer to play nicely with LIO iSCSI failover I tend to agree.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/sr_fail.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;One oddity of Xen / XenServer&amp;rsquo;s storage subsystem is that it identifies iSCSI storage repositories via a calculated SCSI ID rather than the iSCSI Serial - which would be the sane thing to do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to cluster and failover (almost) anything - An intro to Pacemaker and Corosync</title>
      <link>https://smcleod.net/2015/11/how-to-cluster-and-failover-almost-anything-an-intro-to-pacemaker-and-corosync/</link>
      <pubDate>Mon, 09 Nov 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/11/how-to-cluster-and-failover-almost-anything-an-intro-to-pacemaker-and-corosync/</guid>
      <description>&lt;h2 id=&#34;slides&#34;&gt;Slides&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.dropbox.com/s/n3g3nk9kp6q54h8/cluster_anything.pdf?dl=0&#34;&gt;&lt;img alt=&#34;Click to Start Slides&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/cluster_anything_screenshot.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;failover-demo&#34;&gt;Failover Demo&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://vimeo.com/sammcj/review/133110890/6f4900c090&#34;&gt;&lt;img alt=&#34;Click to Start Failover Video&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/lcmcpcmk.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>SAN Intro</title>
      <link>https://smcleod.net/2015/10/san-intro/</link>
      <pubDate>Wed, 07 Oct 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/10/san-intro/</guid>
      <description>&lt;div
          style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
        &lt;iframe
          src=&#34;https://player.vimeo.com/video/141612064?dnt=0&#34;
            style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allow=&#34;fullscreen&#34;&gt;
        &lt;/iframe&gt;
      &lt;/div&gt;</description>
    </item>
    <item>
      <title>Replacing Junos Pulse with OpenConnect</title>
      <link>https://smcleod.net/2015/09/replacing-junos-pulse-with-openconnect/</link>
      <pubDate>Tue, 22 Sep 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/09/replacing-junos-pulse-with-openconnect/</guid>
      <description>&lt;p&gt;In an attempt to avoid using the Juniper Pulse (Now Pulse Secure) VPN client we tried OpenConnect but found that DNS did not work correctly when connected to the VPN.
This bug has now been resolved recently but has not made it&amp;rsquo;s way into a new build, in fact there have been no releases for 6 months.&lt;/p&gt;
&lt;p&gt;Luckily the OpenConnect was not too difficult to build from source.&lt;/p&gt;
&lt;h2 id=&#34;build-openconnect-on-osx&#34;&gt;Build OpenConnect on OSX&lt;/h2&gt;
&lt;h3 id=&#34;remove-old-openconnect-and-install-deps&#34;&gt;Remove old openconnect and install deps&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew remove openconnect
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install libxml2 lzlib openssl libtool libevent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;build-openconnect&#34;&gt;Build openconnect&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget git.infradead.org/users/dwmw2/openconnect.git/snapshot/0f1ec30d17aa674142552e275bf3fac30d891b39.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar zxvf 0f1ec30d17aa674142552e275bf3fac30d891b39.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; openconnect-0f1ec30
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LIBTOOLIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;glibtoolize ./autogen.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/opt/gettext/bin:&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;to-connect&#34;&gt;To connect&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo openconnect --juniper -u myusername www.myserver.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you&amp;rsquo;re comfortable with allowing admin users to run openconnect without entering a sudo password, add the following using &lt;code&gt;sudo visudo&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSD Storage - Two Months In Production</title>
      <link>https://smcleod.net/2015/09/ssd-storage-two-months-in-production/</link>
      <pubDate>Sun, 13 Sep 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/09/ssd-storage-two-months-in-production/</guid>
      <description>&lt;p&gt;Over the last two months I&amp;rsquo;ve been running selected IO intensive servers off the the SSD storage cluster, these hosts include (among others) our:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Primary Puppetmaster&lt;/li&gt;
&lt;li&gt;Gitlab server&lt;/li&gt;
&lt;li&gt;Redmine app and database servers&lt;/li&gt;
&lt;li&gt;Nagios servers&lt;/li&gt;
&lt;li&gt;Several Docker database host servers&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;reliability&#34;&gt;Reliability&lt;/h3&gt;
&lt;p&gt;We haven&amp;rsquo;t had any software or hardware failures since commissioning the storage units.&lt;/p&gt;
&lt;p&gt;During this time we have had 3 disk failures on our HP StoreVirtual SANs that have required us to call the supporting vendor and replace failed disks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OS X Software Update Channels For Betas</title>
      <link>https://smcleod.net/2015/09/os-x-software-update-channels-for-betas/</link>
      <pubDate>Tue, 01 Sep 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/09/os-x-software-update-channels-for-betas/</guid>
      <description>&lt;h3 id=&#34;set-update-channel-to-receive-developer-beta-update&#34;&gt;Set update channel to receive developer beta update&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo softwareupdate --set-catalog https://swscan.apple.com/content/catalogs/others/index-10.11seed-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;set-update-channel-to-receive-public-beta-update&#34;&gt;Set update channel to receive public beta update&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo softwareupdate --set-catalog https://swscan.apple.com/content/catalogs/others/index-10.11beta-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;list-available-updates&#34;&gt;List available updates&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo softwareupdate --list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;set-update-channel-to-receive-default-stable-updates&#34;&gt;Set update channel to receive default, stable updates&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo softwareupdate --clear-catalog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;show-current-settings&#34;&gt;Show current settings&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;defaults &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; /Library/Preferences/com.apple.SoftwareUpdate.plist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;write-setting-manually&#34;&gt;Write setting manually&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL https://swscan.apple.com/content/catalogs/others/index-10.11beta-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>iSCSI Benchmarking</title>
      <link>https://smcleod.net/2015/07/iscsi-benchmarking/</link>
      <pubDate>Fri, 24 Jul 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/07/iscsi-benchmarking/</guid>
      <description>&lt;p&gt;The following are benchmarks from our testings of our iSCSI SSD storage.&lt;/p&gt;
&lt;h3 id=&#34;67300-read-iops-on-a-vm-on-iscsi&#34;&gt;67,300 read IOP/s on a VM on iSCSI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;(Disk -&amp;gt; LVM -&amp;gt; MDADM -&amp;gt; DRBD -&amp;gt; iSCSI target -&amp;gt; Network -&amp;gt; XenServer iSCSI Client -&amp;gt; VM)&lt;/li&gt;
&lt;li&gt;Per VM and scales to 1,000,000 IOP/s total&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@dev-samm:/mnt/pmt1 &lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=128 --size=2G --readwrite=read&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test: &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;rw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;read, &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4K-4K/4K-4K, &lt;span class=&#34;nv&#34;&gt;ioengine&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;libaio, &lt;span class=&#34;nv&#34;&gt;iodepth&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2.0.8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Starting &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; process
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bs: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;R&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;55.6% &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;262.1M/0K /s&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;67.3K/0  iops&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;eta 00m:04s&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;38500-random-4k-write-iops-on-a-vm-on-iscsi&#34;&gt;38,500 random 4k write IOP/s on a VM on iSCSI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;(Disk -&amp;gt; LVM -&amp;gt; MDADM -&amp;gt; DRBD -&amp;gt; iSCSI target -&amp;gt; Network -&amp;gt; XenServer iSCSI Client -&amp;gt; VM)&lt;/li&gt;
&lt;li&gt;Per VM and scales to 700,000 IOP/s total&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@dev-samm:/mnt/pmt1 &lt;span class=&#34;c1&#34;&gt;# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=128 --size=2G --readwrite=randwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test: &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;rw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;randwrite, &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4K-4K/4K-4K, &lt;span class=&#34;nv&#34;&gt;ioengine&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;libaio, &lt;span class=&#34;nv&#34;&gt;iodepth&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2.0.8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Starting &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; process
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bs: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;w&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;26.3% &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;0K/150.2M /s&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; /38.5K iops&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;eta 00m:14s&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;raw-device-latency-on-storage-units&#34;&gt;Raw device latency on storage units&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Intel DC3600 1.2T PCIe NVMe&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@s1-san6:/proc  &lt;span class=&#34;c1&#34;&gt;# ioping /dev/nvme0n1p1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/nvme0n1p1 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 1.1 TiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;104&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/nvme0n1p1 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 1.1 TiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;83&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/nvme0n1p1 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 1.1 TiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;51&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/nvme0n1p1 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 1.1 TiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;71&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;SanDisk SDSSDXPS960G SATA&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@pm-san5:/proc  &lt;span class=&#34;c1&#34;&gt;# ioping /dev/sdc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdc &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 894.3 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4.2 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdc &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 894.3 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4.1 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdc &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 894.3 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4.1 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdc &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 894.3 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4.1 ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Micron_M600_MTFDDAK1T0MBF SATA&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@pm-san5:/proc  &lt;span class=&#34;c1&#34;&gt;# ioping /dev/sdf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdf &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 953.9 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;157&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdf &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 953.9 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;190&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdf &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 953.9 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;65&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0 KiB from /dev/sdf &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;device 953.9 GiB&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;181&lt;/span&gt; us
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;```&lt;/span&gt;shell
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;## Latency on the a VM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;Disk -&amp;gt; LVM -&amp;gt; MDADM -&amp;gt; DRBD -&amp;gt; iSCSI target -&amp;gt; Network -&amp;gt; XenServer iSCSI Client -&amp;gt; VM&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;```&lt;/span&gt;shell
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@dev-samm:/mnt &lt;span class=&#34;m&#34;&gt;127&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# ioping pmt1/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt1/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdb1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.6 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt1/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdb1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.7 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt1/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdb1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.7 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- pmt1/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdb1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; ioping statistics ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; requests completed in 2159.1 ms, &lt;span class=&#34;m&#34;&gt;1508&lt;/span&gt; iops, 5.9 mb/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;min/avg/max/mdev &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0.6/0.7/0.7/0.1 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@dev-samm:/mnt  &lt;span class=&#34;c1&#34;&gt;# ioping pmt2/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt2/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdc1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.6 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt2/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdc1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.8 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- pmt2/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvdc1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; ioping statistics ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; requests completed in 1658.4 ms, &lt;span class=&#34;m&#34;&gt;1470&lt;/span&gt; iops, 5.7 mb/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;min/avg/max/mdev &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0.6/0.7/0.8/0.1 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@dev-samm:/mnt  &lt;span class=&#34;c1&#34;&gt;# ioping pmt3/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt3/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvde1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.6 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt3/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvde1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.9 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes from pmt3/ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ext4 /dev/xvde1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.9 ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net/images/san/lcmcpcmk.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Delayed Serial STONITH</title>
      <link>https://smcleod.net/2015/07/delayed-serial-stonith/</link>
      <pubDate>Tue, 21 Jul 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/07/delayed-serial-stonith/</guid>
      <description>&lt;p&gt;A modified version of &lt;a href=&#34;http://www.scl.co.uk/rcd_serial/README.rcd_serial&#34;&gt;John Sutton&amp;rsquo;s&lt;/a&gt; rcd_serial cable coupled with our Supermicro reset switch hijacker:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/rcd_serial.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;This works with the rcd_serial fence agent &lt;a href=&#34;https://github.com/ClusterLabs/fence-agents/tree/master/agents/rcd_serial&#34;&gt;plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Reasons &lt;code&gt;rcd_serial&lt;/code&gt; makes for a very good &lt;a href=&#34;https://en.wikipedia.org/wiki/STONITH&#34;&gt;STONITH&lt;/a&gt; mechanism:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has no dependency on power state.&lt;/li&gt;
&lt;li&gt;It has no dependency on network state.&lt;/li&gt;
&lt;li&gt;It has no dependency on node operational state.&lt;/li&gt;
&lt;li&gt;It has no dependency on external hardware.&lt;/li&gt;
&lt;li&gt;It costs less that $5 + time to build.&lt;/li&gt;
&lt;li&gt;It is incredibly simple and reliable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Essentially the most common STONITH agent type in use is probably those that control UPS / PDUs, while this sounds like a good idea in theory there are a number of issues with relying on a UPS / PDU:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Video - Cluster Failover Performance Demo</title>
      <link>https://smcleod.net/2015/07/video-cluster-failover-performance-demo/</link>
      <pubDate>Sun, 12 Jul 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/07/video-cluster-failover-performance-demo/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/GvAV990z2Us?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;</description>
    </item>
    <item>
      <title>CentOS 7 and HA</title>
      <link>https://smcleod.net/2015/07/centos-7-and-ha/</link>
      <pubDate>Tue, 07 Jul 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/07/centos-7-and-ha/</guid>
      <description>&lt;p&gt;First some background&amp;hellip;&lt;/p&gt;
&lt;p&gt;One of the many lessons I&amp;rsquo;ve learnt from my Linux HA / Storage clustering project is that the Debian HA ecosystem is essentially broken, We reached the point where packages were too old, too buggy or in Debian 8&amp;rsquo;s case - outright missing.&lt;/p&gt;
&lt;p&gt;In the past I was very disappointed with RHEL/CentOS 5 / 6 and (until now) have been quite satisfied with Debian as a stable server distribution with historicity more modern packages and kernels.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSD Storage Cluster - Update and Diagram</title>
      <link>https://smcleod.net/2015/06/ssd-storage-cluster-update-and-diagram/</link>
      <pubDate>Wed, 17 Jun 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/06/ssd-storage-cluster-update-and-diagram/</guid>
      <description>&lt;p&gt;Due to several recent events beyond my control I&amp;rsquo;m a bit behind on the project - hence the lack of updates which I apologise for.&lt;/p&gt;
&lt;p&gt;The goods news is that I&amp;rsquo;m back working to finish off the clusters and I&amp;rsquo;m happy to report that all is going to plan.&lt;/p&gt;
&lt;p&gt;Here is the final digram of the two-node cluster design:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/diagram.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Plain text version available &lt;a href=&#34;https://gist.github.com/sammcj/0503007ceb5038a0de3c&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/lcmcpcmk.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;This was generated from the &lt;a href=&#34;http://github.com/rasto/lcmc&#34;&gt;LCMC&lt;/a&gt; tool (beware - it&amp;rsquo;s java!).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Video - Storage Cluster Failover Demo</title>
      <link>https://smcleod.net/2015/05/video-storage-cluster-failover-demo/</link>
      <pubDate>Thu, 14 May 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/05/video-storage-cluster-failover-demo/</guid>
      <description>&lt;p&gt;A brief demonstration of the failover and recovery process on the storage clusters I&amp;rsquo;ve been building.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/_fRMtXWM3FU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Talk - High Performance Software Defined Storage</title>
      <link>https://smcleod.net/2015/04/talk-high-performance-software-defined-storage/</link>
      <pubDate>Wed, 15 Apr 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/04/talk-high-performance-software-defined-storage/</guid>
      <description>&lt;p&gt;A high level talk from Infracoders Melbourne on 12/04/2015.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.dropbox.com/s/rdojhb399639e4k/lightning_san.pdf?dl=0&#34;&gt;&lt;img alt=&#34;Click to Start Slides&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/supermicrox2.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.dropbox.com/s/rdojhb399639e4k/lightning_san.pdf?dl=0&#34;&gt;&lt;img alt=&#34;Click to Start Slides&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/ic-slides-image.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s also a low quality recording available here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://youtu.be/VAdqurA2zQ4?t=198&#34;&gt;&lt;img alt=&#34;Click to Start Video&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/ic-sds-yt-thumb.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Related posts:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://smcleod.net/building-a-high-performance-ssd-san/&#34;&gt;Building a high performance SSD SAN - Part 1&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Continuous integration for the Linux Kernel - Built within Docker</title>
      <link>https://smcleod.net/2015/03/continuous-integration-for-the-linux-kernel-built-within-docker/</link>
      <pubDate>Sun, 15 Mar 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/03/continuous-integration-for-the-linux-kernel-built-within-docker/</guid>
      <description>&lt;p&gt;Linux Kernel CI for Debian&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/build-passing.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/sammcj/kernel-ci&#34;&gt;Github: sammcj/kernel-ci&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Those of us using technologies such as Docker and BTRFS or simply trying to gain a performance edge on the competition have a lot to gain from the features and performance of recent Kernel updates (especially from 3.18 onwards).&lt;/p&gt;
&lt;p&gt;&amp;lsquo;Enterprise&amp;rsquo; Linux distributions such as RHEL &amp;amp; variants are concerningly out of date when comes to the Kernel.
Many people seem to have forgotten what Linux is&amp;hellip; &lt;em&gt;Linux IS the Kernel&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xen Orchestra Docker Image</title>
      <link>https://smcleod.net/2015/02/xen-orchestra-docker-image/</link>
      <pubDate>Thu, 26 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/xen-orchestra-docker-image/</guid>
      <description>&lt;p&gt;Docker config to setup XO which is a web interface to visualize and administrate your XenServer (or XAPI enabled) hosts&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/sammcj/docker-xen-orchestra&#34;&gt;Github: sammcj/docker-xen-orchestra&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;running-the-app&#34;&gt;Running the app&lt;/h2&gt;
&lt;p&gt;Updates are pushed to the Docker Hub&amp;rsquo;s automated build service:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://registry.hub.docker.com/u/sammcj/docker-xen-orchestra&#34;&gt;https://registry.hub.docker.com/u/sammcj/docker-xen-orchestra&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;from-docker-hub&#34;&gt;From Docker Hub&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull sammcj/docker-xen-orchestra
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 8000:80 sammcj/docker-xen-orchestra
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;building&#34;&gt;Building&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/sammcj/docker-xen-orchestra.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; docker-xen-orchestra
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Edit whatever config you want to change&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t xen-orchestra .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See &lt;a href=&#34;https://xen-orchestra.com&#34;&gt;https://xen-orchestra.com&lt;/a&gt; for information on Xen Orchestra&lt;/p&gt;</description>
    </item>
    <item>
      <title>Delete Government-Linked Certificate Authorities in OSX</title>
      <link>https://smcleod.net/2015/02/delete-government-linked-certificate-authorities-in-osx/</link>
      <pubDate>Mon, 23 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/delete-government-linked-certificate-authorities-in-osx/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://zitseng.com/archives/7489&#34;&gt;Inspired by http://zitseng.com/archives/7489&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sammcj/delete-unknown-root-ca&#34;&gt;Source (Github)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;WARNINGS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not run unless you understand what this is doing&lt;/li&gt;
&lt;li&gt;The CA system is broken by design - This is not a fix for that&lt;/li&gt;
&lt;li&gt;This is merely a band-aid for those interested or concerned about these root CAs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x delete_gov_roots.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./delete_gov_roots.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You&amp;rsquo;ll be prompted for your password as root access is required to delete system-wide root certs.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;sha1&#34; loading=&#34;lazy&#34; src=&#34;https://cloud.githubusercontent.com/assets/862951/6326428/a261ae24-bba5-11e4-9f69-5aeb36257077.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;see-also&#34;&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://convergence.io&#34;&gt;http://convergence.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/&#34;&gt;https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kirei/catt&#34;&gt;https://github.com/kirei/catt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.eff.org/observatory&#34;&gt;https://www.eff.org/observatory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=478418&#34;&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=478418&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://support.apple.com/en-us/HT202858&#34;&gt;http://support.apple.com/en-us/HT202858&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning&#34;&gt;https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Building a high performance SSD SAN - Part 1</title>
      <link>https://smcleod.net/2015/02/building-a-high-performance-ssd-san-part-1/</link>
      <pubDate>Mon, 16 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/building-a-high-performance-ssd-san-part-1/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/san/graphs.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Over the coming month I will be architecting, building and testing a modular, high performance SSD-only storage solution.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll be documenting my progress / findings along the way and open sourcing all the information as a public guide.&lt;/p&gt;
&lt;p&gt;With recent price drops and durability improvements in solid state storage now is better time than any to ditch those old magnets.&lt;/p&gt;
&lt;p&gt;Modular server manufacturers such as SuperMicro have spent large on R&amp;amp;D thanks to the ever growing requirements from cloud vendors that utilise their hardware.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct-Attach SSD Storage - Performance &amp; Comparisons</title>
      <link>https://smcleod.net/2015/02/direct-attach-ssd-storage-performance-comparisons/</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/direct-attach-ssd-storage-performance-comparisons/</guid>
      <description>&lt;p&gt;Further to my earlier post on XenServer storage performance with regards to directly attaching storage from the host, I have been analysing the performance of various SSD storage options.&lt;/p&gt;
&lt;p&gt;I have attached a HP DS2220sb storage blade to an existing server blade and compared performance with 4 and 6 SSD RAID-10 to our existing iSCSI SANs.&lt;/p&gt;
&lt;p&gt;While the P420i RAID controller in the DS2220sb is clearly saturated and unable to provide throughput much over 1,100MB/s - the IOP/s available to PostgreSQL are still a very considerably performance improvement over our P4530 SAN - in fact, 6 SSD&amp;rsquo;s result in a 39.9x performance increase!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search - A Journey of Delivery on a Budget</title>
      <link>https://smcleod.net/2015/02/search-a-journey-of-delivery-on-a-budget/</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/search-a-journey-of-delivery-on-a-budget/</guid>
      <description>&lt;h3 id=&#34;heading&#34;&gt;&lt;a href=&#34;https://smcleod.net/files/slides-Search-A-Journey-of-Delivery-on-a-Budget/&#34;&gt;&amp;ldquo;Search - A Journey of Delivery on a Budget&amp;rdquo;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Presented a Melbourne Search - July 2014 - &lt;a href=&#34;https://smcleod.net/files/slides-Search-A-Journey-of-Delivery-on-a-Budget/&#34;&gt;&amp;ldquo;Search - A Journey of Delivery on a Budget&amp;rdquo;&lt;/a&gt; &lt;em&gt;(Click for slides)&lt;/em&gt;&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/RcXstZ4FzyE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Talk - 24 Months</title>
      <link>https://smcleod.net/2015/02/talk-24-months/</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/talk-24-months/</guid>
      <description>&lt;p&gt;The way we work at Infoxchange has changed greatly.&lt;/p&gt;
&lt;p&gt;A retrospective journey into transforming Infoxchange&amp;rsquo;s technology and culture over the past 24 months - presented a Melbourne DevOps - December 2014&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/sammcj/smcleod_files/blob/master/slides/24_months/24_Months.pdf?raw=true&#34;&gt;&lt;img alt=&#34;Click to Download Slides&#34; loading=&#34;lazy&#34; src=&#34;https://smcleod.net//img/misc/24months.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Best Of - 2014 Edition</title>
      <link>https://smcleod.net/2015/02/the-best-of-2014-edition/</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/the-best-of-2014-edition/</guid>
      <description>&lt;p&gt;At the end of every year I note down a summary of the best applications, hardware &amp;amp; websites I&amp;rsquo;ve enjoyed &amp;amp; depended on throughout the year (and often for some time before).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post has long since been superseded. You can find the latest version of this post &lt;a href=&#34;https://smcleod.net/2022-10-19-apps-of-2022/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;software--general-use&#34;&gt;Software / General Use&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fastmail - &lt;a href=&#34;https://www.fastmail.com&#34;&gt;https://www.fastmail.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Evernote - &lt;a href=&#34;https://evernote.com&#34;&gt;https://evernote.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reeder - &lt;a href=&#34;http://reederapp.com&#34;&gt;http://reederapp.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keynote - &lt;a href=&#34;https://www.apple.com/au/mac/keynote&#34;&gt;https://www.apple.com/au/mac/keynote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lastpass - &lt;a href=&#34;https://lastpass.com&#34;&gt;https://lastpass.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Plex - &lt;a href=&#34;https://plex.tv&#34;&gt;https://plex.tv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Calibre - &lt;a href=&#34;http://calibre-ebook.com&#34;&gt;http://calibre-ebook.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;software--geek-use&#34;&gt;Software / Geek Use&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Sublime Text - &lt;a href=&#34;http://www.sublimetext.com/3&#34;&gt;http://www.sublimetext.com/3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Homebrew - &lt;a href=&#34;http://brew.sh&#34;&gt;http://brew.sh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DropSync - &lt;a href=&#34;http://mudflatsoftware.com&#34;&gt;http://mudflatsoftware.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Beets - &lt;a href=&#34;http://beets.radbox.org&#34;&gt;http://beets.radbox.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Textual - &lt;a href=&#34;http://www.codeux.com/textual&#34;&gt;http://www.codeux.com/textual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;XLD - &lt;a href=&#34;http://tmkk.undo.jp/xld/index_e.html&#34;&gt;http://tmkk.undo.jp/xld/index_e.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Code Academy - &lt;a href=&#34;http://www.codecademy.com&#34;&gt;http://www.codecademy.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Exercism.io - &lt;a href=&#34;http://exercism.io&#34;&gt;http://exercism.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sickbeard + Headphones + Couchpotato + Sabnzbd - &lt;a href=&#34;http://www.totalhtpc.com/ultimate-usenet-guide.html&#34;&gt;http://www.totalhtpc.com/ultimate-usenet-guide.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;software--mobile&#34;&gt;Software / Mobile&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Tweetbot - &lt;a href=&#34;http://tapbots.com/software/tweetbot&#34;&gt;http://tapbots.com/software/tweetbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pushover - &lt;a href=&#34;http://pushover.net&#34;&gt;http://pushover.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lastpass - &lt;a href=&#34;https://lastpass.com&#34;&gt;https://lastpass.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keynote - &lt;a href=&#34;https://www.apple.com/au/ios/keynote&#34;&gt;https://www.apple.com/au/ios/keynote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reeder - &lt;a href=&#34;http://reederapp.com/ios&#34;&gt;http://reederapp.com/ios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Evernote- &lt;a href=&#34;https://evernote.com&#34;&gt;https://evernote.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Plex - &lt;a href=&#34;https://plex.tv&#34;&gt;https://plex.tv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Backblaze - &lt;a href=&#34;https://www.backblaze.com&#34;&gt;https://www.backblaze.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WTF Podcast - &lt;a href=&#34;http://www.wtfpod.com/app&#34;&gt;http://www.wtfpod.com/app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MiniHack - &lt;a href=&#34;https://itunes.apple.com/au/app/minihack-for-hacker-news/id631108846?mt=8&#34;&gt;https://itunes.apple.com/au/app/minihack-for-hacker-news/id631108846?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uber - &lt;a href=&#34;https://itunes.apple.com/au/app/uber/id368677368?mt=8&#34;&gt;https://itunes.apple.com/au/app/uber/id368677368?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Goodreads - &lt;a href=&#34;https://itunes.apple.com/au/app/goodreads-book-recommendations/id355833469?mt=8&#34;&gt;https://itunes.apple.com/au/app/goodreads-book-recommendations/id355833469?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Notify4M - &lt;a href=&#34;https://itunes.apple.com/au/app/notify4m/id499161979?mt=8&#34;&gt;https://itunes.apple.com/au/app/notify4m/id499161979?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bandcamp - &lt;a href=&#34;https://itunes.apple.com/au/app/bandcamp/id706408639?mt=8&#34;&gt;https://itunes.apple.com/au/app/bandcamp/id706408639?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hype Machine - &lt;a href=&#34;https://itunes.apple.com/au/app/hype-machine/id414315986?mt=8&#34;&gt;https://itunes.apple.com/au/app/hype-machine/id414315986?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nuzzel (Only got onto this today) - &lt;a href=&#34;https://itunes.apple.com/au/app/nuzzel-news-from-your-friends/id692285770?mt=8&#34;&gt;https://itunes.apple.com/au/app/nuzzel-news-from-your-friends/id692285770?mt=8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Alien Blue - &lt;a href=&#34;http://www.reddit.com/r/alienblue&#34;&gt;http://www.reddit.com/r/alienblue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;software--sysadmin-or-devops-specific&#34;&gt;Software / SysAdmin or DevOps Specific&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Gitlab - &lt;a href=&#34;http://gitlab.org&#34;&gt;http://gitlab.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gitlab-CI - &lt;a href=&#34;https://about.gitlab.com/gitlab-ci&#34;&gt;https://about.gitlab.com/gitlab-ci&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dash - &lt;a href=&#34;http://kapeli.com/dash&#34;&gt;http://kapeli.com/dash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PostgreSQL (Makes my list every year &amp;amp; just keeps getting better) - &lt;a href=&#34;http://www.postgresql.org&#34;&gt;http://www.postgresql.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PGBadger - &lt;a href=&#34;http://dalibo.github.io/pgbadger&#34;&gt;http://dalibo.github.io/pgbadger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker - &lt;a href=&#34;https://www.docker.com&#34;&gt;https://www.docker.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Consul - &lt;a href=&#34;https://consul.io&#34;&gt;https://consul.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Puppet (I couldn&amp;rsquo;t do my job as well without it) - &lt;a href=&#34;http://puppetlabs.com&#34;&gt;http://puppetlabs.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iTerm - &lt;a href=&#34;http://iterm2.com&#34;&gt;http://iterm2.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nginx - &lt;a href=&#34;http://nginx.org&#34;&gt;http://nginx.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Htop - &lt;a href=&#34;http://hisham.hm/htop&#34;&gt;http://hisham.hm/htop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bonnie++ - &lt;a href=&#34;http://linux.die.net/man/8/bonnie&#34;&gt;http://linux.die.net/man/8/bonnie&lt;/a&gt;++&lt;/li&gt;
&lt;li&gt;Openfire - &lt;a href=&#34;https://www.igniterealtime.org/projects/openfire&#34;&gt;https://www.igniterealtime.org/projects/openfire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hiera-Eyaml - &lt;a href=&#34;https://github.com/TomPoulton/hiera-eyaml&#34;&gt;https://github.com/TomPoulton/hiera-eyaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rubinius - &lt;a href=&#34;http://rubini.us&#34;&gt;http://rubini.us&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Puma - &lt;a href=&#34;http://puma.io&#34;&gt;http://puma.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;XenServer - &lt;a href=&#34;http://xenserver.org&#34;&gt;http://xenserver.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ElasticSearch - &lt;a href=&#34;https://www.elasticsearch.org&#34;&gt;www.elasticsearch.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Logstash - &lt;a href=&#34;http://logstash.net&#34;&gt;http://logstash.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FPM - &lt;a href=&#34;https://github.com/jordansissel/fpm&#34;&gt;https://github.com/jordansissel/fpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PFsense - &lt;a href=&#34;https://www.pfsense.org&#34;&gt;https://www.pfsense.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Debian Jessie (Not quite released but the next great version of the best linux Distro IMO) - &lt;a href=&#34;https://www.debian.org/releases/jessie&#34;&gt;https://www.debian.org/releases/jessie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check_MK Multisite - &lt;a href=&#34;https://mathias-kettner.de/checkmk_multisite.html&#34;&gt;https://mathias-kettner.de/checkmk_multisite.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PWSafe - &lt;a href=&#34;https://itunes.apple.com/au/app/pwsafe-password-safe-compatible/id520993579?mt=12&#34;&gt;https://itunes.apple.com/au/app/pwsafe-password-safe-compatible/id520993579?mt=12&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Supervisord - &lt;a href=&#34;http://supervisord.org&#34;&gt;http://supervisord.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;websites&#34;&gt;Websites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Last.fm - &lt;a href=&#34;http://www.last.fm/user/sammcj2000&#34;&gt;http://www.last.fm/user/sammcj2000&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Feedly - &lt;a href=&#34;https://feedly.com&#34;&gt;https://feedly.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;HackerNews - &lt;a href=&#34;https://news.ycombinator.com/news&#34;&gt;https://news.ycombinator.com/news&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lucidchart - &lt;a href=&#34;http://lucidchart.com/&#34;&gt;http://lucidchart.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MondoTunes (Might be a little biased here!) - &lt;a href=&#34;http://mondotunes.org&#34;&gt;http://mondotunes.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Das Ultimate 4- &lt;a href=&#34;http://www.daskeyboard.com&#34;&gt;http://www.daskeyboard.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Logitech Performance MX - &lt;a href=&#34;http://www.logitech.com/en-au/product/performance-mouse-mx&#34;&gt;http://www.logitech.com/en-au/product/performance-mouse-mx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;15&amp;rsquo;&amp;rsquo; Macbook Pro Retina - &lt;a href=&#34;http://www.apple.com/au/macbook-pro&#34;&gt;http://www.apple.com/au/macbook-pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iPhone 6+ (because its bigger than bigger, or something) - &lt;a href=&#34;https://www.apple.com/iphone-6&#34;&gt;https://www.apple.com/iphone-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CuBox - &lt;a href=&#34;http://www.solid-run.com/product/cubox-i4pro&#34;&gt;http://www.solid-run.com/product/cubox-i4pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Parani SD1000 Bluetooth Serial Adapter - &lt;a href=&#34;http://www.senaindustrial.com/products/industrial_bluetooth/sd1000.php&#34;&gt;http://www.senaindustrial.com/products/industrial_bluetooth/sd1000.php&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SanDisk Extreme Pro 480GB SSD - &lt;a href=&#34;http://www.newegg.com/Product/Product.aspx?Item=N82E16820171999&#34;&gt;http://www.newegg.com/Product/Product.aspx?Item=N82E16820171999&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;other--non-tech&#34;&gt;Other / Non-tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All Day Socks - &lt;a href=&#34;http://alldaysocks.com&#34;&gt;http://alldaysocks.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sennheiser Amperior On-Ear Headphones - &lt;a href=&#34;http://www.head-fi.org/products/sennheiser-amperior-on-ear-headphones&#34;&gt;http://www.head-fi.org/products/sennheiser-amperior-on-ear-headphones&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;O2 + ODAC - &lt;a href=&#34;http://www.jdslabs.com/products/48/o2-odac-combo&#34;&gt;http://www.jdslabs.com/products/48/o2-odac-combo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Benchmark DAC1 HDR - &lt;a href=&#34;http://benchmarkmedia.com/products/benchmark-dac1-hdr-digital-to-analog-converter&#34;&gt;http://benchmarkmedia.com/products/benchmark-dac1-hdr-digital-to-analog-converter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bellroy Wallets - &lt;a href=&#34;http://bellroy.com&#34;&gt;http://bellroy.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ink Shoes - &lt;a href=&#34;http://www.inkshoes.it&#34;&gt;http://www.inkshoes.it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kindle Paperwhite - &lt;a href=&#34;http://www.amazon.com.au/gp/feature.html?docId=3077740006&#34;&gt;http://www.amazon.com.au/gp/feature.html?docId=3077740006&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nerf Jolt - &lt;a href=&#34;http://nerf.wikia.com/wiki/Jolt_EX-1&#34;&gt;http://nerf.wikia.com/wiki/Jolt_EX-1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;books&#34;&gt;Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Phoenix Project (Reread this year for the 3rd time) - &lt;a href=&#34;http://itrevolution.com/books/phoenix-project-DevOps-book&#34;&gt;http://itrevolution.com/books/phoenix-project-DevOps-book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Surely You&amp;rsquo;re Joking Mr Feynman! - &lt;a href=&#34;https://www.goodreads.com/book/show/5544.Surely_You_re_Joking_Mr_Feynman_&#34;&gt;https://www.goodreads.com/book/show/5544.Surely_You_re_Joking_Mr_Feynman_&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Dark Tower Series - &lt;a href=&#34;https://www.goodreads.com/book/show/43615.The_Gunslinger&#34;&gt;https://www.goodreads.com/book/show/43615.The_Gunslinger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Snow Crash - &lt;a href=&#34;https://www.goodreads.com/book/show/830.Snow_Crash&#34;&gt;https://www.goodreads.com/book/show/830.Snow_Crash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>XenServer, SSDs &amp; VM Storage Performance</title>
      <link>https://smcleod.net/2015/02/xenserver-ssds-vm-storage-performance/</link>
      <pubDate>Sun, 15 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2015/02/xenserver-ssds-vm-storage-performance/</guid>
      <description>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;At Infoxchange we use XenServer as our Virtualisation of choice.
There are many reasons for this including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open Source.&lt;/li&gt;
&lt;li&gt;Offers greater performance than VMware.&lt;/li&gt;
&lt;li&gt;Affordability (it&amp;rsquo;s free unless you purchase support).&lt;/li&gt;
&lt;li&gt;Proven backend Xen is very reliable.&lt;/li&gt;
&lt;li&gt;Reliable cross-host migrations of VMs.&lt;/li&gt;
&lt;li&gt;The XenCentre client, (although having to run in a Windows VM) is quick and simple to use.&lt;/li&gt;
&lt;li&gt;Upgrades and patches have proven to be more reliable than VMware.&lt;/li&gt;
&lt;li&gt;OpenStack while interesting, is not yet reliable or streamlined enough for our small team of 4 to implement and manage.&lt;/li&gt;
&lt;li&gt;XenServer Storage &amp;amp; Filesystems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately the downside to XenServer is that it&amp;rsquo;s underlying OS is quite old.
The latest version (6.5) about to be released is still based on Centos 5 and still lacks any form of EXT4 and BTRFS support, direct disk access is not available… without some tweaking and has no real support for TRIM unless you have direct disk access and are happy with EXT3.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BMW E36 328i Manual Conversion Programming</title>
      <link>https://smcleod.net/2010/06/bmw-e36-328i-manual-conversion-programming/</link>
      <pubDate>Thu, 10 Jun 2010 00:00:00 +0000</pubDate>
      <guid>https://smcleod.net/2010/06/bmw-e36-328i-manual-conversion-programming/</guid>
      <description>&lt;h2 id=&#34;reprogram-bmw-after-doing-automatic-to-manual-conversion&#34;&gt;Reprogram BMW after doing Automatic to Manual Conversion&lt;/h2&gt;
&lt;p&gt;Based on my E36 328is experience, &lt;strong&gt;written in 2010&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;assumptions&#34;&gt;Assumptions&lt;/h2&gt;
&lt;p&gt;This guide assumes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have programmed a BMW ECU/DME before using DIS or similar.&lt;/li&gt;
&lt;li&gt;You are taking all the necessary safety precautions. (Fully charged battery etc…)&lt;/li&gt;
&lt;li&gt;You have DIS working (We used EasyDIS 1.0, Base 44)&lt;/li&gt;
&lt;li&gt;You have Ediabas (INPA, NCS Expert, IFH Serve) installed and working.&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;re able to read between the lines of our crappy document, some steps may differ slightly and our wording may be somewhat imprecise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;data-gathering&#34;&gt;Data Gathering&lt;/h2&gt;
&lt;p&gt;Make notes of the following:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
