<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Problem of Network</title>
    <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/</link>
    <description>Recent content in Posts on Problem of Network</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Sun, 03 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Getting the Goodix HTK32 Fingerprint Reader Working on Omarchy</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/goodix-htk32-omarchy/</link>
      <pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/goodix-htk32-omarchy/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;p&gt;Dell XPS 9370 with the Goodix HTK32 (USB &lt;code&gt;27c6:5385&lt;/code&gt;) on Omarchy:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pacman -S glib2-devel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yay -S libfprint-goodix53x5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Answer &amp;#39;y&amp;#39; to remove the stock libfprint when prompted.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If yay was wrapped with --noconfirm and bailed, install the cached build directly:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pacman -U ~/.cache/yay/libfprint-goodix53x5/libfprint-goodix53x5-*.pkg.tar.zst&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart fprintd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fprintd-enroll   &lt;span style=&#34;color:#75715e&#34;&gt;# retry once if you hit a GTLS error on the first run&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fprintd-verify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The package ships a udev rule that unbinds &lt;code&gt;cdc_acm&lt;/code&gt; from the sensor on boot, so the fix survives reboots. If the sensor was previously paired with Windows Hello, expect more pain — see Stage 4.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vault Transit Encryption</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vault-transit-encryption/</link>
      <pubDate>Sat, 18 Jan 2025 15:57:32 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vault-transit-encryption/</guid>
      <description>&lt;p&gt;This post has a weird genesis. If I think back to the first time I heard of Transit Encryption I originally thought it was something else, and when I finally understood what &lt;a href=&#34;https://developer.hashicorp.com/vault/tutorials/encryption-as-a-service/eaas-transit&#34;&gt;the docs were telling me&lt;/a&gt;, I thought it was the dumbest idea ever.&lt;/p&gt;&#xA;&lt;p&gt;Turns out I was way wrong. Over the next half an hour I hope to explain why.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The point of transit encryption is to provide a mechanism for requesting vault encrypt some content for you as a service, so that you can send that encrypted blob over untrustworthy, or observable channels. The recipient can then go back to vault, and request that content be decrypted for use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vault Audit Logging</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vault-audit-logging/</link>
      <pubDate>Sun, 12 Jan 2025 23:07:17 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vault-audit-logging/</guid>
      <description>&lt;p&gt;I thought i was done with this series, but there are a few loose ends that I think we can clear up pretty quickly. The most important of which is Audit Logging, because what is the point of a secure secrets tool if you don&amp;rsquo;t track who does what (or most importantly, &lt;em&gt;fails&lt;/em&gt; to do what) with it. Lets jump in!&lt;/p&gt;&#xA;&lt;h2 id=&#34;enabling-audit-logs&#34;&gt;Enabling audit logs&lt;/h2&gt;&#xA;&lt;p&gt;Enabling audit logging requires you to tell the vault server that it should use one of the audit &amp;ldquo;device types&amp;rdquo; that it offers with the required parameters. The system will then send audit events to &lt;em&gt;all&lt;/em&gt; defined devices, and will consider the audit entry a success when at least one confirms the write.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vault TLS With Network Appliances</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vault-tls-with-network-appliances/</link>
      <pubDate>Sun, 29 Dec 2024 17:25:58 -0500</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vault-tls-with-network-appliances/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Now that we have a Vault, with a TLS Issuing CA, and some idea of how to get certs out of it, lets look at how we can use this in a &amp;ldquo;real&amp;rdquo; world scenario to put a valid TLS profile onto a Network Appliance (fancy word for a switch I guess).&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Why did I say appliance, and not Router or Switch? Weeeeeell, think about it. You manage a lot of network &lt;em&gt;stuff&lt;/em&gt; over HTTPS protocols these days, even when its not actually a web interface you are using to do it. We can also manage load balancers, Wireless Controllers, NAS devices etc etc etc. Lets not get bogged down in terminology and accept that network kit comes in all shapes and sizes these days. Trusted TLS is the goal here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Vault PKI to Secure Devices</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/building-vault-pki/</link>
      <pubDate>Sat, 14 Dec 2024 08:50:37 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/building-vault-pki/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;abstract&lt;/h2&gt;&#xA;&lt;p&gt;Following on from the Hashicorp Vault &amp;ldquo;how-to&amp;rdquo; series. Lets dial things up a notch, and setup a PKI in vault that can issue &amp;ldquo;real&amp;rdquo; certificates for your devices.&lt;/p&gt;&#xA;&lt;p&gt;This has a couple of real tangible benefits.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;No more &lt;code&gt;verify=false&lt;/code&gt; and/or urllib hacks to connect to TLS secured endpoints&lt;/li&gt;&#xA;&lt;li&gt;No need to fight &lt;code&gt;openssl&lt;/code&gt; to wrangle self signed (or for the really brave, a manual CA)&lt;/li&gt;&#xA;&lt;li&gt;Full automation support to enable estate wide renewal in minutes, not &lt;em&gt;half a lifetime&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Much of this content was abstracted from the Original Hashi docs, which are brilliant, and can be found &lt;a href=&#34;https://developer.hashicorp.com/vault/tutorials/pki/pki-engine&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Use of Vault: Ansible</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-ansible/</link>
      <pubDate>Tue, 19 Nov 2024 18:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-ansible/</guid>
      <description>&lt;p&gt;As we come towards the end of this mini series, we talked about how to &lt;a href=&#34;https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/bootstraping-hashi-vault/&#34;&gt;bootstrap&lt;/a&gt; a hashicorp vault for non-prod use, what &lt;a href=&#34;https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hashi-vault-primitives/&#34;&gt;primitives&lt;/a&gt; vault uses for secrets management, and how to talk to vault from &lt;a href=&#34;https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-python/&#34;&gt;python&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here we will dig into how you can access vault content within an Ansible workflow, ensuring you never more have the pain of managing secrets with &lt;code&gt;ansible-vault&lt;/code&gt;, or worse, storing them plain text in a repo somewhere.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Use of Vault: Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-python/</link>
      <pubDate>Tue, 19 Nov 2024 09:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/making-use-of-vault-python/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s remarkably easy to get sucked into hardcoding things that probably should live outside your code.&lt;/p&gt;&#xA;&lt;p&gt;It is clear to many of us that storing secrets anywhere that isn&amp;rsquo;t vault (or something like it), is a terrible practice. It is also true that the best laid plans of mice and men &lt;em&gt;aft gan aglais&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In other words, the problem is rarely that we don&amp;rsquo;t want to do secure coding, its that we lack the time, talent, or awareness to do this right. Don&amp;rsquo;t dwell on that too much either - its just how the world works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hashi Vault Primitives</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hashi-vault-primitives/</link>
      <pubDate>Mon, 18 Nov 2024 20:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hashi-vault-primitives/</guid>
      <description>&lt;h2 id=&#34;some-vault-primitives&#34;&gt;Some Vault Primitives&lt;/h2&gt;&#xA;&lt;p&gt;Pretty much everywhere you go in vault you will find you need a few building blocks to make &lt;em&gt;anything&lt;/em&gt; work.&lt;/p&gt;&#xA;&lt;h3 id=&#34;env-vars&#34;&gt;Env Vars&lt;/h3&gt;&#xA;&lt;p&gt;Regardless of how you choose to talk to vault (CLI/WebAPI/SDK), you will find that the most common way to &amp;ldquo;encode&amp;rdquo; the vault settings is in an Environment variable. This is a nod towards its &amp;ldquo;cloud native&amp;rdquo; upbringing, where config files are the devil or something.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bootstrapping Hashi Vault</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/bootstrapping-hashi-vault/</link>
      <pubDate>Mon, 18 Nov 2024 18:00:00 +0100</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/bootstrapping-hashi-vault/</guid>
      <description>&lt;p&gt;Recently I have spent a reasonable amount of time in Hashicorp vault. As part of a mini series on how to make better use of it in Network Automation, I started writing this as a &amp;ldquo;intro&amp;rdquo; to a post on the subject.&lt;/p&gt;&#xA;&lt;p&gt;As per usual with me, it ended up being so long that it had to be its own post. So. Here you are.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Some of you might have opinions about Hashicorp and their licence changes.&#xA;I do not (either professionally nor personally), compete with Hashicorp,&#xA;and so it is my understanding I can use their products in an opensource&#xA;sense. If you feel differently, feel free to use openbao.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Updated Fiber7-X VyOS 1.5 Config</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/updating-my-fiber7-vyos-config-to-1dot5/</link>
      <pubDate>Wed, 12 Jun 2024 13:00:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/updating-my-fiber7-vyos-config-to-1dot5/</guid>
      <description>&lt;p&gt;A while ago I wrote about my VyOS config for Init7&amp;rsquo;s Fiber7-X product. Since then there has been a number of breaking changes, and a few additions that I would like to cover.&lt;/p&gt;&#xA;&lt;p&gt;I will copy/paste a lot of the narrative from that post, and avoid a bit of the abstract conversation that went with it, so that this stands on its own.&lt;/p&gt;&#xA;&lt;p&gt;If you have questions or comments, hit me up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Untangling My Brain From Autocon1</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/untangling-my-brain-from-autocon1/</link>
      <pubDate>Thu, 06 Jun 2024 09:13:06 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/untangling-my-brain-from-autocon1/</guid>
      <description>&lt;p&gt;Last week I had some fun in Amsterdam, and at no point was there any debauchery.&lt;/p&gt;&#xA;&lt;p&gt;For those who are unaware, Autocon is a conference put together by the Network Automation Forum. Autocon1 was the second event ever, and the first in Europe. They ran autocon0 in Denver in the Autumn of 2023.&lt;/p&gt;&#xA;&lt;p&gt;TL:DR - if you are in the network automation space, you have to try and get yourself there. It&amp;rsquo;s a &lt;em&gt;very&lt;/em&gt; valuable event.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using VPP as a MACSEC Replacement</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/using-vpp-macsec-replacement/</link>
      <pubDate>Fri, 25 Aug 2023 13:26:03 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/using-vpp-macsec-replacement/</guid>
      <description>&lt;p&gt;As part of my VPP Adventures series, we have talked about what VPP is, why its interesting, and how we can prove it works. Today we spend a bit of time on what we can actually do with it.&lt;/p&gt;&#xA;&lt;h3 id=&#34;who-actually-uses-macsec-these-days&#34;&gt;Who &lt;em&gt;actually&lt;/em&gt; uses MACSEC these days?&lt;/h3&gt;&#xA;&lt;p&gt;My first interest for a real world test of VPP was straight BGP routing for DFZ connected services. Kinda obvious no? For long and complicated reasons, it actually wasn&amp;rsquo;t (more specifically it couldn&amp;rsquo;t - we use IS-IS as part of our edge routing environment and VPP has issues there). Blocked on that, we found ourselves looking at something more esoteric.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VPP Adventures Part 3 - The Testbed</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vpp-adventures-pt3/</link>
      <pubDate>Thu, 24 Aug 2023 13:20:25 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vpp-adventures-pt3/</guid>
      <description>&lt;p&gt;So far we have covered what VPP is, and why its interesting to us.&lt;/p&gt;&#xA;&lt;p&gt;Part of the story with any new service/implementation always centres around testing. How do you prove, definitively, that something does what it says on the tin. &lt;a href=&#34;https://www.ietf.org/rfc/rfc2544.txt&#34;&gt;RFC2544&lt;/a&gt; outlines a series of testing strategies and for the purpose of this work we try to keep it simple.&lt;/p&gt;&#xA;&lt;p&gt;I have deployed a &lt;a href=&#34;https://trex-tgn.cisco.com/&#34;&gt;TRex traffic generator&lt;/a&gt; on Debian 11 (OFED 5.7-1 doesn&amp;rsquo;t build on deb12) with Mellanox 2x100G ConnectX5 CDAT cards with Trex v3.04. There are really nice instructions &lt;a href=&#34;https://trex-tgn.cisco.com/trex/doc/trex_appendix_mellanox.html&#34;&gt;here&lt;/a&gt; for that. Happily ignore the CentOS7 religious texts - Debian is fine. Death to DeadRat.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VPP Adventures Part 2 - but why?</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vpp-adventures-pt2/</link>
      <pubDate>Wed, 23 Aug 2023 13:15:32 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vpp-adventures-pt2/</guid>
      <description>&lt;p&gt;In the previous post we were talking about what VPP was. Here we explore a little why it matters.&lt;/p&gt;&#xA;&lt;h3 id=&#34;whats-the-point-anyways&#34;&gt;What&amp;rsquo;s the point anyways?&lt;/h3&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a fair question. Surely its not logical to invest so much time and effort into something that has been described numerous times as &amp;ldquo;janky&amp;rdquo;. One of my engineers even now says, &amp;ldquo;I understand why you want to do it, but I don&amp;rsquo;t agree that this is the right solution&amp;rdquo;. She&amp;rsquo;s right too btw.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VPP Adventures Part 1 - uwotm8?</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vpp-adventures/vpp-adventures/</link>
      <pubDate>Tue, 22 Aug 2023 22:29:17 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/vpp-adventures/vpp-adventures/</guid>
      <description>&lt;p&gt;Linux Routing is becoming a thing with me. I cant decide if the motivation is the extreme cost of dedicated hardware, or the knowledge that with a little effort you can make a free/cheap thing into a giant killer. David and Goliath is a fun story I guess.&lt;/p&gt;&#xA;&lt;p&gt;VPP has been on my radar now for a few years. I have tried and failed a few times to get it into production typically on the internet edge of a datacentre in place of something expensive like a Cisco ASR or a Juniper MX.&lt;/p&gt;</description>
    </item>
    <item>
      <title>10G Router7 Install</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/10g-router7-install/</link>
      <pubDate>Fri, 02 Jun 2023 13:16:30 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/10g-router7-install/</guid>
      <description>&lt;p&gt;Last year I wrote extensively about my experience with deploying VyOS to support my new uber fast internet connection.&lt;/p&gt;&#xA;&lt;p&gt;I learned a lot in the process, and for this past year it has mostly worked fine. I am one of those people that can&amp;rsquo;t leave things alone however, and I was always tinkering with the setup. The VyOS box itself was happily communicating at 10G, but I would find the internal LAN would get choked up a lot and rarely hit 1G even with extreme threading (say 50-60 conns). I got grumpy about this for no reason and started to tinker. TL:DR - This was a mistake&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo Migration Done</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hugo-migration-done/</link>
      <pubDate>Wed, 12 Apr 2023 01:02:35 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/hugo-migration-done/</guid>
      <description>&lt;p&gt;Weird. In my first hugo post just two days ago I speculated it would take me weeks to get this content off blogger and into hugo.&lt;/p&gt;&#xA;&lt;p&gt;It took me three evenings.&lt;/p&gt;&#xA;&lt;p&gt;All the DNS has been switched and we are now fully on hugo with a gitops workflow, previews on a branch push and I was even able to retain the old URL paths as an alias, so anyone googling my stupid opinions can still read them on the new or the old path. Noice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Starting Again</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/starting-again/</link>
      <pubDate>Sun, 09 Apr 2023 20:57:16 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/starting-again/</guid>
      <description>&lt;p&gt;Over the past year or so I found myself returning to my own blog to remind myself how I did things in VyOS and how I configured this or that thing or whatever. Each time I sort of hated the fact the theme was crap.  Blogger themes are so dated, they remind me a little of Geocities now. I know that dates me somewhat too, but anyways. They suck and brosing for something that isn&amp;rsquo;t terrible seems more and more futile.&lt;/p&gt;</description>
    </item>
    <item>
      <title>node_exporter in VyOS 1.4</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/node-exporter-vyos/</link>
      <pubDate>Mon, 04 Apr 2022 23:23:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/node-exporter-vyos/</guid>
      <description>&lt;p&gt;So it turns out that if you want metrics from VyOS, your two options are SNMP or Telegraf (towards InfluxDB).&lt;/p&gt;&#xA;&lt;p&gt;SNMP is one of those things that has been around so long, you think its good, but really, its trash. Its a 1990s technology that is mostly singlethreaded and provides you very very fuzzy numbers. 5 min averages are not that useful in situations like today where clients plausibly have access to gigabit+ grades of connectivity. If you cant observe let alone react to a microburst, you&amp;rsquo;re pretty much blindfolded in a modern DC network setting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Fiber7-X VyOS Config</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/my-fiber7-config/</link>
      <pubDate>Tue, 30 Nov 2021 18:04:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/my-fiber7-config/</guid>
      <description>&lt;h3 id=&#34;updated-jun-2024-this-vyos-14-config-is-now-broken-if-you-use-a-recent-vyos-15-rolling-release-i-made-a-new-post-here-that-mirrors-this-one-but-with-the-correct-syntax&#34;&gt;Updated Jun 2024: This Vyos 1.4 config is now broken if you use a recent vyos 1.5 rolling release. I made a new post &lt;a href=&#34;https://www.problemofnetwork.com/2024/06/updated-my-fiber7-vyos-config-to-1dot5.html&#34;&gt;here&lt;/a&gt; that mirrors this one, but with the correct syntax!&lt;/h3&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;em&gt;Updated Aug 2022: After moving house I have been able to split my install between the basement and the house, so I bought myself an Dell Optiplex 7050 to be the VyOS router (the OTO is in the house), and then run a 10G fibre to the basement for the rest of the stuff. I think I will leave the post as is because the VM method is more interesting, but I will add a block on that below.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>10/25 Gbit Internet at Home - a very 21st Century Problem</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/25gbit-at-home/</link>
      <pubDate>Sun, 28 Nov 2021 22:24:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/25gbit-at-home/</guid>
      <description>&lt;p&gt;When I first arrived in Switzerland in 2017, aside from the clean air, beautiful countryside, and the promise of a highly paid job with which to support my family, I was transfixed by something that seemed completely alien to me - Fibre to the Home. Yes, I am a nerd, and Yes somewhat parallel to a comfortable living space, and good local schools, I made sure each house viewing included a search for an OTO.  No Fibre, no way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The even-ended number problem in Go and Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/even-ended-number-go-vs-python/</link>
      <pubDate>Tue, 20 Oct 2020 10:44:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/even-ended-number-go-vs-python/</guid>
      <description>&lt;p&gt;During the Go Essential Training course on LinkedIn, the instructor sets up a problem for you to solve. The solution is in the next slide of the course, and mine was ever so slightly different anyways, so I doubt that this needs to come with a spoiler alert, but anyways&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;An even-ended number is one that starts and ends with the same digit. That is to say 1, 11, 121, and 10103921 are all even ended numbers as they all start and end with the same digit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Modern NetDevOps learning plan</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/netdevops-learning-plan/</link>
      <pubDate>Tue, 20 Oct 2020 10:19:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/netdevops-learning-plan/</guid>
      <description>&lt;p&gt;Now that I have &lt;img src=&#34;https://problemofnetwork.com/posts/end-of-solera-years/&#34; alt=&#34;a load of free time&#34;&gt; I have set up a sort of a learning plan to plug some gaps in my knowledge that I always wanted to plug, but didn&amp;rsquo;t have the time to do properly.&lt;/p&gt;&#xA;&lt;p&gt;Mindful that I have an opportunity for learning without external influences on my time, but also that my Daughter only has Kindergarten until lunchtime every day, I really only get the morning before the family time kicks in.&lt;/p&gt;</description>
    </item>
    <item>
      <title>End of an Era: The Solera Years</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/end-of-solera-years/</link>
      <pubDate>Mon, 19 Oct 2020 17:31:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/end-of-solera-years/</guid>
      <description>&lt;p&gt;Two weeks ago I was made redundant. COVID and &amp;ldquo;shifting business priorities&amp;rdquo; meant a re-org of my department and for whatever reason, that is that. Over the last year or so I had assumed this day might come and the question I had internally was if I would jump or if I would be pushed. Since I was slap bang in the middle of a key project, I had assumed I might still have 9-12 months or so left to close that out. Turns out I was wrong. Thankfully my documentation is average enough for them to cope without me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doing YANG Wrong: Part 5 - Manufacturer/Model deviations</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part5/</link>
      <pubDate>Thu, 02 Jul 2020 15:26:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part5/</guid>
      <description>&lt;h2 id=&#34;part-5-deviations&#34;&gt;Part 5: Deviations&lt;/h2&gt;&#xA;&lt;p&gt;So we can talk to the device, and we can use candidate configs to stage and then apply configs in aggregate, but we still can&amp;rsquo;t make a CSR1000v take a simple openconfig IP address. At the beginning I deliberately called out I wanted to use generic models, and avoid the deviations. This is because the python model binding i then generate only works on that vendor&amp;rsquo;s box now. This isn&amp;rsquo;t terrible, but it&amp;rsquo;s not really what we want. Lets see if it works tho.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doing YANG Wrong: Part 4 - Config stores</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part4/</link>
      <pubDate>Wed, 01 Jul 2020 13:57:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part4/</guid>
      <description>&lt;h2 id=&#34;part-4-config-stores&#34;&gt;Part 4: Config stores&lt;/h2&gt;&#xA;&lt;p&gt;As we head down this rabbit hole, we start to get ever closer to something useful, but ever more deep into the weeds of NETCONF/YANG. For the uninitiated, config stores are a place where you can put config chunks either singularly, or in aggregate over a series of netconf pushes, to generate a new config that you will apply in one hit. In the SP world you might want to setup some interfaces, some BGP and then some overlay like an MPLS service. You may not want to do all this in one script since you might not need all of those things in one script. better to make a script per thing, and then call the ones your CMDB thinks it needs, place them all in a candidate config, validate that as a whole and then push that in one go. If anything fails, you can then throw it all away and not touch the operational running config.  At this point juniper folks are shrugging their shoulders - this is very old hat to them, but for enterprise people, particularly the type who lived on the CLI for years, this is unimaginable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doing YANG Wrong: Part 3 - Using the python bindings</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part3/</link>
      <pubDate>Sat, 27 Jun 2020 00:44:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part3/</guid>
      <description>&lt;h2 id=&#34;part-3-using-the-python-bindings-to-push-a-config&#34;&gt;Part 3: Using the python bindings to push a config&lt;/h2&gt;&#xA;&lt;p&gt;Given we generated that python file locally in a machine, we assume here that you are still in that subdirectory.&lt;/p&gt;&#xA;&lt;p&gt;The below code was stolen fully from the YANG Book. Much love and all credit to them for their work.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; interface_setup &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; openconfig_interfaces&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; pyangbind.lib.serialise &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pybindIETFXMLEncoder&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; ncclient &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; manager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# device settings&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;username &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yangconf&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;my_good_password.&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;device_ip &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;192.168.70.21&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# config settings &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;inside_interface &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;GigabitEthernet4&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;inside_ip_addr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;109.109.109.2&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;inside_ip_prefix &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;send_to_device&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;kwargs):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rpc_body &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;config&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; pybindIETFXMLEncoder&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;serialise(kwargs[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;py_obj&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;/config&amp;gt;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;with&lt;/span&gt; manager&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;connect_ssh(host&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;kwargs[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dev&amp;#39;&lt;/span&gt;], port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;830&lt;/span&gt;, username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;kwargs[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;], password&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;kwargs[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;], hostkey_verify&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; m:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            m&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;edit_config(target&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;running&amp;#39;&lt;/span&gt;, config&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;rpc_body)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Successfully configured IP on &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(kwargs[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dev&amp;#39;&lt;/span&gt;]))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Failed to configure interface: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(e))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# instanciate the openconfig model&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ocintmodel &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; openconfig_interfaces()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# create an instance of the interfaces&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ocinterfaces &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ocintmodel&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;interfaces&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# create a new interface instance in that parent object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    inside_if &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ocinterfaces&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;interface&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;add(inside_interface)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# even a routed interface required a subinterface, its just at index 0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    inside_if&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;subinterfaces&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;subinterface&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;add(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# create an instance of that subinterface object to edit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    inside_sub_if &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; inside_if&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;subinterfaces&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;subinterface[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# apply an IP to that object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    inside_sub_if&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ipv4&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;addresses&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;address&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;add(inside_ip_addr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# read that ip object into an ip object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ip &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; inside_sub_if&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ipv4&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;addresses&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;address[inside_ip_addr]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# set the IP and the subnet mask properly&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ip&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ip &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; inside_ip_addr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ip&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;prefix_length &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; inside_ip_prefix&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    send_to_device(dev&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;device_ip, user&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;username, password&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;password, py_obj&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;ocinterfaces)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When I run this, it fails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doing YANG Wrong: Part 2 - Python Bindings</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part2/</link>
      <pubDate>Sat, 27 Jun 2020 00:28:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part2/</guid>
      <description>&lt;h2 id=&#34;part-2-python-bindings-for-models&#34;&gt;Part 2: Python bindings for models&lt;/h2&gt;&#xA;&lt;p&gt;Having a model is one thing.  Using it requires you to ingest that model somewhere, apply values to its elements (leaves) as necessary/appropriate and then submit that completed model to the appliance for application to the config.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m a python guy, you might like Go, or ruby or whatever. thats up to you, but I use python right now, which means I use pyangbind and pyang to create pythonic modules I can import into a script, and then interact with the model attributes like I would any other object in python. We can then push that out to a device from that script.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doing YANG Wrong - Part 1: Getting started</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part1/</link>
      <pubDate>Thu, 25 Jun 2020 15:28:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/doing-yang-wrong-part1/</guid>
      <description>&lt;p&gt;This is more of a discovery post than anything particularly useful. It charts my adventure from a problem statement, through discovery of a solution, to a dead end. I post it here to help people see the logic I followed, and why, against all wisdom, it didn&amp;rsquo;t work.&lt;/p&gt;&#xA;&lt;p&gt;Note that if you are familiar with YANG, I know why this is NOT the right way to do this, but I only know that having done this as shown here. Please don&amp;rsquo;t waste your time in the comments with nerdsplaining that to me. This is to show people a process and to help people who feel stupid when this stuff doesnt work, to see that they&amp;rsquo;re not alone. I learn by making mistakes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Network Automation: from spreadsheets to YANG and everything between</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/yang-network-automation-spreadsheets/</link>
      <pubDate>Mon, 22 Jun 2020 17:52:00 +0200</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/yang-network-automation-spreadsheets/</guid>
      <description>&lt;p&gt;Over the last few years I have spent a significant amount of time in YAML and Ansible. I&amp;rsquo;m not an expert by any means, but I can probably get anything I need done in maybe a few days worth of tinker time. I&amp;rsquo;m what you would call a fair weather scripter.&lt;/p&gt;&#xA;&lt;p&gt;One thing I learned from building about 30,000 lines of YAML whilst orchestrating ACI, was that Ansible is a square peg, and everything networking is a round hole. Sometimes it fits, sometimes it doesn&amp;rsquo;t, but it is never perfect. Never.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software Defined Waffle with a gitops topping</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/software-defined-waffle/</link>
      <pubDate>Mon, 22 Jun 2020 12:51:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/software-defined-waffle/</guid>
      <description>&lt;p&gt;Over the last two years or so, I have been on adventure with Data Centre Infrastructure renewal. As past posts may allude to, ACI was a big part of what we did, but before anyone gets all dogmatic about it, know that we didn&amp;rsquo;t go &amp;ldquo;All in&amp;rdquo; with that one product, since I personally don&amp;rsquo;t subscribe to the &amp;ldquo;DC Fabrics cure all ills&amp;rdquo; mantra.&lt;/p&gt;&#xA;&lt;p&gt;CLOS fabrics and the various approaches to overlays within them are great at providing stable platforms with predictable properties for speed, latency and scale. Unsurprisingly, they go on to do a great job in server farms that can make the best use of that flexibility. During recent conversations on DC refresh, our Arista friends have been extremely keen to try and get us to run our Internet BGP border on the fabric as well. The 7280SR2K can handle 2M routes in FIB they say, just lob stuff into a VRF, bit of policy and voila. Yeah.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: Controller Upgrades with Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-controller-upgrades-python/</link>
      <pubDate>Thu, 28 Jan 2016 01:42:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-controller-upgrades-python/</guid>
      <description>&lt;p&gt;So I bought my ACI bundles so long ago that they&amp;rsquo;re still running 1.0(3f). Right now mainline is 1.2(1k), so i&amp;rsquo;m a bit behind.&lt;/p&gt;&#xA;&lt;p&gt;Using the official Cisco doc I did the first staged upgrade from 1.0 to 1.1 using the Web GUI. I wanted to see what happened in a visual sense.&lt;/p&gt;&#xA;&lt;p&gt;Basically you setup a connection between the APIC and a host that has staged the firmware files, then you setup a policy defining what versions the fabric should be on, and when that should be made active. For me it was 1.1(4f) and now basically.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: Initial Design Considerations</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-initial-design-considerations/index.md/</link>
      <pubDate>Mon, 18 Jan 2016 11:49:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-initial-design-considerations/index.md/</guid>
      <description>&lt;p&gt;ACI brings with it many different constructs for operating networks, some of which have analogous equivalence with classical networking, some of which are literally bat-poop crazy.&lt;/p&gt;&#xA;&lt;p&gt;As per usual, you can find lots of resources on how to structure ACI fabrics elsewhere, i&amp;rsquo;m not going to waste time on what you &lt;em&gt;can&lt;/em&gt; do and focus on what I am going to do (roughly).&lt;/p&gt;&#xA;&lt;p&gt;The below Image was unceremoniously stolen from Cisco themselves, in the critical read &lt;a href=&#34;http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-x/aci-fundamentals/b_ACI-Fundamentals/b_ACI-Fundamentals_chapter_010001.html&#34;&gt;ACI Fundamentals&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: Mini Rant to INSBU</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-mini-rant-to-insbu/</link>
      <pubDate>Fri, 15 Jan 2016 14:34:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-mini-rant-to-insbu/</guid>
      <description>&lt;p&gt;Before I get too wound up I should probably say that all of this was directed to my friends there first, and whilst I won&amp;rsquo;t say much about their thoughts, I don&amp;rsquo;t think this is particularly new to them, or out of place.&lt;/p&gt;&#xA;&lt;p&gt;I have a fondness for ACI.  I think its innovative, and once you break through the naming conventions and the terminology, it&amp;rsquo;s exactly what I think Enterprise should be doing in terms of Next Generation Networking.  That said, INSBU are not helping themselves penetrate the market, and as such, are putting themselves at risk of falling behind to Openstack.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: Rack &amp; Stack</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-rack-n-stack/</link>
      <pubDate>Fri, 15 Jan 2016 12:31:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-rack-n-stack/</guid>
      <description>&lt;p&gt;Plumbing ACI is something that YouTube has you covered on.  I wont reinvent that wheel.  For the initial standup, I am doing the bare minimum connectivity; each leaf has one 40G uplink to each spine, meaning, 80G of North/South Bandwidth.  This will double up when we are preparing for Production service, matching my UCS/FI Bandwidth between each Chassis (4x10G links to each side of my 2208XPs).  My 3 APICs are configured as follows:&lt;/p&gt;</description>
    </item>
    <item>
      <title>ACI: The Setup</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-the-setup/</link>
      <pubDate>Tue, 12 Jan 2016 12:30:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-the-setup/</guid>
      <description>&lt;p&gt;On Friday last week we rolled out our ACI solution into one of our DCs. The setup is simple, comprising of;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;2x Nexus 9336pq &amp;quot;Baby&amp;quot; Spines&#xA;4x Nexus 9396px Leaf Switches&#xA;3x APIC Controllers&#xA;2x ASA 5585x Firewalls&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The compute behind it is UCS based and we have F5 LTMs in the ADC role.&lt;/p&gt;&#xA;&lt;p&gt;Over the weekend I provisioned it.  That did not go well.  Today I had to go back and revisit the cabling, and then the Fabric initial setup, and then redid the entire thing from scratch again. Oops.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The ACI Adventure Begins</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-adventure-begins/</link>
      <pubDate>Sat, 09 Jan 2016 18:21:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/aci-adventure-begins/</guid>
      <description>&lt;p&gt;Starting yesterday I began to deploy our Nexus 9000 ACI solution into our Datacentre. Scary yet fun times are ahead.&lt;/p&gt;&#xA;&lt;p&gt;Over the course of the project I will do my best to chronicle anonymised info that talks about what we did and how we did it.  Some of that may be of use to another ACI hopeful, whereas some will be pretty specific to my environment.  One thing I won&amp;rsquo;t be doing is reinventing the blogging wheel, and I will chose to refer to others that helped me, rather than rehash the same subjects over and over again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I Bought an Airconsole</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/why-i-bought-airconsole/</link>
      <pubDate>Mon, 29 Jun 2015 14:56:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/why-i-bought-airconsole/</guid>
      <description>&lt;p&gt;Today I was reminded what a great git of Kit the &lt;img src=&#34;https://youtu.be/1hmi03APwnc&#34; alt=&#34;AirConsole&#34;&gt; really is.  Its essentially a box that gives you Serial Access to a device via an RJ45 (Cisco pin-out) using WiFi, Bluetooth or wired, using a web GUI, or a bonkers driver setup on your machine.&lt;/p&gt;&#xA;&lt;p&gt;For me, I use the AirConsole at work in a jack of all trades way.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I cable the Serial Dongle to the Router&lt;/li&gt;&#xA;&lt;li&gt;I have a WiFi client profile configured that will auto join my (pervasively configured) corporate dirty network.&lt;/li&gt;&#xA;&lt;li&gt;I have a WiFi AP setup in the AirConsole that securely presents a new network that I can join to access the Serial Port&lt;/li&gt;&#xA;&lt;li&gt;I have NAT configured on the AP-&amp;gt;Client WiFi so that I can still access the internet from that client Laptop&lt;/li&gt;&#xA;&lt;li&gt;I have the Ethernet port configured to bridge with the AP interface, so I can get a wired device to connect to the Serial setup, and the internet.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So, most of the time what I find myself doing is plugging in the AirConsole, then going to a nearby desk and connecting to the AirConsole Web interface via HTTPS over the dedicated WiFi.  I can then configure my box, and still access the internet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 4 - Python End to End</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part4/</link>
      <pubDate>Mon, 29 Jun 2015 00:41:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part4/</guid>
      <description>&lt;p&gt;So by now you can use SoapUI and Python to read info out, and can utilise SoapUI Test Cases to validate, and deliver changes to the CallManager system.  Again, please do ensure you have reviewed parts 1-3 before entering into this post.  Its entirely contextualised within the series.&lt;/p&gt;&#xA;&lt;p&gt;Up until now what we have been doing is quite focused on a single object being added or sense checked.  In this, the final post in this mini series we will be looking at an end to end python script that can be used to add a new end user to the system, with pre and post validation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco Live 2015</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/cisco-live-2015/</link>
      <pubDate>Thu, 11 Jun 2015 19:55:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/cisco-live-2015/</guid>
      <description>&lt;p&gt;This week is a first for me.  I&amp;rsquo;m at Cisco Live in San Diego.  It&amp;rsquo;s been pretty awesome so far I have to say!&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Full Disclosure, I was brought here by Cisco to talk to Analysts about ACI. However, I should also point out my only session was closed door feedback on why we chose the solution, and how its helped us to date.  Since we are only at the early stages, it was a short conversation.  I thank Cisco for their hospitality, and for allowing me to access Conference Level sessions that my explorer level pass would not normally allow.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 3 - Changes</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part3/</link>
      <pubDate>Mon, 01 Jun 2015 10:41:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part3/</guid>
      <description>&lt;p&gt;In this the third part of my mini series on using the CUCM API, we start to get further into the Ju-Ju, and check web app changes via the API, before then going on to make a change via the API itself.&lt;/p&gt;&#xA;&lt;p&gt;As before if you haven&amp;rsquo;t gone through the previous two posts then please, head back to the start and we will see you back here shortly.&lt;/p&gt;&#xA;&lt;h2 id=&#34;whats-your-motivation-today&#34;&gt;Whats your motivation today?&lt;/h2&gt;&#xA;&lt;p&gt;There are two reasons why you might want to use an API in your day to day changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 2 - Python</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part2/</link>
      <pubDate>Sun, 31 May 2015 18:33:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part2/</guid>
      <description>&lt;p&gt;In this part 2 of my API adventure, I will be looking at repeating what we did Part 1 via SoapUI, but this time in python using the suds library.  If you haven&amp;rsquo;t read that yet, then really, please go back and do that. This will not be wildly useful otherwise.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-soap-y-with-python-suds&#34;&gt;Getting SOAP-y with Python suds&lt;/h2&gt;&#xA;&lt;p&gt;Yeah I went there&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;So, we have a process that allows us to programatically look stuff up. Only its not very repeatable, and therefore not much use yet.  With this post I will take you through the creation of a python script that mimics what we did previously - finding things, and showing them to you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ciscoconfparse Wetdream</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/ciscoconfparse-wetdream/</link>
      <pubDate>Sat, 30 May 2015 03:07:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/ciscoconfparse-wetdream/</guid>
      <description>&lt;p&gt;Ick,  I know.&lt;/p&gt;&#xA;&lt;p&gt;Python has long been the language of choice for engineers looking to make their day go that little bit quicker or easier.  With deepening skill levels, more and more complex repetitive tasks can be disected and segmented into functions and reuable code, such that a competent scripting engineer can go from blank page to automated process in a matter of hours in most cases.  It is for this reason that I sit here to write this - an advocacy for ALL Cisco engineers to down tools and spend however long you need to get good at this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CallManager APIs for fun and profit: Part 1 - SoapUI</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part1/</link>
      <pubDate>Fri, 29 May 2015 16:13:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/call-manager-api-part1/</guid>
      <description>&lt;p&gt;This is one of those posts that I will constantly refer back to&amp;hellip; ;)&lt;/p&gt;&#xA;&lt;p&gt;In my day job it&amp;rsquo;s clear to me that we need to automate more and more of the dumb day to day stuff.  One of those things is Leavers and Starters on our phone system.&lt;/p&gt;&#xA;&lt;p&gt;We employ Cisco CallManager, much like the rest of the world, and if you have ever spent any time with it, you will know that its VASTLY over-complicated to manage.  A single extension on someones&amp;rsquo; desk requires (at least):&lt;/p&gt;</description>
    </item>
    <item>
      <title>The SDN Conundrum</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/the-sdn-conundrum/</link>
      <pubDate>Fri, 22 May 2015 02:48:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/the-sdn-conundrum/</guid>
      <description>&lt;p&gt;Oh how the world has changed since I started out in the wonderful trade.&lt;/p&gt;&#xA;&lt;p&gt;We used to have VLANs and subnets; switches, routers and firewalls.  People would moan things didn&amp;rsquo;t work and we did a traceroute to figure out why.  We would bash out a fix, and if it broke, we would bash out another.  It was the wild west, and that was fun.  Cowboy hats were standard issue.&lt;/p&gt;&#xA;&lt;p&gt;Then along came the bad guys, and with them, the policy doctors.  Changes became more structured and requirements became more complex.  Environments spiraled out into wider geographical areas and management became less about break fix and more about tightly structured architecture.  The industry responded with protocols and toolchains, each with their own use case, and bit by bit, the sector split up into the key areas of WAN, DC and Campus.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IPv6 on Cisco ASA</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/ipv6-on-asa/</link>
      <pubDate>Fri, 22 May 2015 00:25:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/ipv6-on-asa/</guid>
      <description>&lt;p&gt;This is the first in what will no doubt be a many part series on deploying IPv6.  This is a problem I have had to overcome recently, and still to this day I battle with the implementation subtleties.  If you find yourself in my shoes, I hope you find this helpful.&lt;/p&gt;&#xA;&lt;p&gt;So, firstly, you need to consider your architecture. Mine, I am reliably told is totally wrong.&lt;/p&gt;&#xA;&lt;p&gt;I use ASAs as routers in the campus.  Why? Cos shut up - that&amp;rsquo;s why!  I like to maintain user group segmentation, and I also like to maintain security policy quite tightly.  Therefore I put all users in VLANs managed by 802.1x, and all those VLANs gateway on an ASA trunk subinterface.  I then provide an appropriately sized routed L3 subnets from a site specific IPv4 /21 and have ACLs as access-groups.  Voila - policy is maintained at the gateway border.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Back Once Again</title>
      <link>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/back-once-again/</link>
      <pubDate>Wed, 02 Oct 2013 00:13:00 +0000</pubDate>
      <guid>https://6364c9bf.problemofnetworkdotcom.pages.dev/posts/back-once-again/</guid>
      <description>&lt;p&gt;&amp;hellip;for the renegade master!&lt;/p&gt;&#xA;&lt;p&gt;Blogging is once again on my radar. Why I will never know, but I guess I have missed having the outlet of shouting into the massive empty room that is the interwebs. Its cathartic.&lt;/p&gt;&#xA;&lt;p&gt;I am actually sitting here quite happily nodding along to Fatboy Slim now. Those were the days.&lt;/p&gt;&#xA;&lt;p&gt;So, you know what really grinds my gears (no, not Lindsay Lohan), not having enough compute.  I spend my days right now buried in VMware vCloud Director, trying to Architect a very old square peg into the newest of round holes.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
