Back in 2021, I published a short post titled Welcome Back. In it, I mentioned that years prior, I had lost my entire original blog located at mellowd.co.uk/ccie during a botched server upgrade. That site had originally chronicled my journey toward my CCIE (#28448) and JNCIE-SP (#1134), along with deep dives into BGP, QoS, MPLS, and protocol internals.

At the time of that 2021 post, I managed to manually piece back 13 articles using the Wayback Machine. But life got busy, and more than 20 detailed technical posts, along with dozens of network diagrams, hardware photos, and Wireshark captures, remained trapped in digital limbo.

Today, that finally changes. The entire archive has been fully restored, converted into clean Markdown, modernized with a brand new theme, and deployed to static edge infrastructure—all while strictly preserving every single historical inbound link.

Here is a technical look at how I recovered the lost content, hunted down the missing media, and built a bulletproof redirection architecture.


1. Finding the Lost 2020 Snapshot

While performing a comprehensive systems audit of my BGP infrastructure fleet, I discovered an unlinked 2.9 MB static mirror of the old WordPress site sitting at /var/www/html/ccie/ on my primary route reflector node (BGP1).

It wasn’t a database dump, but rather a wget-style static HTML crawl taken back in May 2020 before the original server was decommissioned. While many links were broken and filenames contained query parameters like ?p=1472 and ?paged=2, the raw HTML of the posts was intact.

Building an Automated HTML-to-Markdown Pipeline

Rather than manually copying and pasting dozens of posts, I built a Python extraction pipeline using BeautifulSoup:

  1. Scraping Post Entities: I parsed every HTML document, extracting post titles, original ISO publication timestamps, categories, and tags.
  2. Sanitizing WordPress Artifacts: I stripped out legacy Google AdSense tags (<!-- Small top right -->), dead Jetpack sharing widgets, and WordPress styling cruft.
  3. Smart Code Block Formatting: Network and systems posts rely heavily on code and CLI captures. My parser inspected <pre> and <code> blocks and automatically assigned appropriate syntax highlighting flags:
    • C code (#include, malloc, struct) → tagged with c
    • Python scripts (import, def, print) → tagged with python
    • Cisco IOS and BIRD configs (show ip route, router bgp, protocol device) → tagged with bash
  4. Generating Clean Frontmatter: Each article was output with standard Hugo YAML frontmatter, standardizing metadata across the entire archive.

This pipeline recovered 21 brand new posts, instantly expanding the active library from 13 to 34 full technical articles.


2. The Great Diagram Hunt

A networking blog without topology diagrams is nearly useless. Explaining 802.1Q native VLAN behavior, DHCP snooping, or C linked list pointers requires visual context.

While some images survived in the 2020 snapshot, 32 diagrams were missing, including:

  • Original 2011 home lab hardware photos (building the Dynamips breakout box with Sun Quad Fast Ethernet PCI cards)
  • Wireshark packet captures from the SPAN/RSPAN analysis
  • Call-stack diagrams explaining recursive function execution
  • Route count graphs showing the impact of Hurricane Sandy on the global BGP table

Bypassing Archive Rate Limits via Multi-Region Fleet Nodes

To recover the missing media, I targeted the Internet Archive Wayback Machine’s raw storage endpoints (https://web.archive.org/web/2016id_/<url>). However, making dozens of rapid media requests from a single local IP quickly hit rate limits (HTTP 429 Too Many Requests).

Because my infrastructure spans multiple dedicated servers across the US and UK, I distributed the download tasks across clean IPs on the fleet (BGP3 and BGP4). Within minutes, I retrieved all 32 missing diagrams and verified 100% media coverage across all 34 posts—without a single broken image link.

All 61 recovered images are now committed directly to Git in /static/images/.


Tim Berners-Lee famously wrote that “Cool URIs don’t change”. Over the past 15 years, countless forum threads on the Cisco Learning Network, Reddit (r/networking), personal engineering blogs, and Twitter have linked to posts on mellowd.co.uk/ccie/.

Historically, WordPress used two URL formats:

  1. Query-string permalinks: https://mellowd.co.uk/ccie/?p=5771
  2. Slug-based URLs: https://mellowd.co.uk/ccie/linked-lists/

Under my modern Hugo structure, canonical URLs follow the clean /post/<slug>/ hierarchy (e.g., /post/linked-lists/). If someone clicked a 12-year-old link from a Cisco forum, getting a 404 would be a failure.

Hugo Aliases to the Rescue

I leveraged Hugo’s aliases feature in every single post’s frontmatter:

---
title: "Using bird to pull global BGP route counts"
date: 2014-12-15T21:33:54Z
tags: ["awk", "bgp", "bird", "internet", "linux", "script"]
aliases:
  - "/ccie/?p=5771"
  - "/ccie/using-bird-to-pull-global-bgp-route-counts/"
---

When Hugo builds the site, it generates lightweight HTML redirect files containing <meta http-equiv="refresh" content="0; url=..."> and canonical headers for every alias.

I generated 151 redirect aliases covering every legacy path, old WordPress post ID, and slug variation across all 34 posts. If you visit /ccie/, /ccie/?p=788, or /ccie/protocol-fundamentals-dot1q/, you are instantly and seamlessly redirected to the correct article.


4. Modernizing the Infrastructure

Beyond recovering content, I also modernized how the site runs:

  1. Decommissioning Nginx on BGP1: Previously, Nginx ran directly on my primary Route Reflector (BGP1), consuming memory and exposing ports 80 and 443 to internet scanner noise. With the archive safely extracted and converted, I stopped, disabled, and permanently masked nginx.service on BGP1, and removed public HTTP/HTTPS ports from /etc/nftables.conf. BGP1 is now 100% dedicated to BIRD 2 routing.

  2. Static Edge Hosting: The site is now built with Hugo v0.167.0 and deployed directly to Google Cloud Storage (gs://mellowd.co.uk), sitting behind Cloudflare CDN. There are no databases, no server runtimes, and no dynamic CMS vulnerabilities. The entire 34-post site compiles in 196 milliseconds.

  3. Fresh Theme — PaperMod: I replaced the old theme with PaperMod, configured with:

    • Instant client-side fuzzy search at /search/
    • Full timeline archive by year at /archives/
    • Tag taxonomy browsing at /tags/
    • Automatic dark/light mode switching based on system preferences
    • One-click copy buttons on all code fences

Summary of the Restored Archive

The full table of contents now includes:

Category Articles
BGP & Routing Using bird to pull global BGP route counts, Hurricane Sandy’s affect on the core BGP table, Creative Routing Contest, Building my topology, RIB, FIB, LFIB, LIB etc
Switching & Protocols SPAN, RSPAN, Layer 2 control packets and VLANS, DHCP Snooping – Filter those broadcasts!, Protocol Fundamentals: dot1q, Protocol Fundamentals: ARP, Protocol Fundamentals: Traceroute, Traceroute differences between Windows and Linux
QoS & MPLS Junos and IOS QoS (Parts 1–3), Catalyst 3750 QoS EF/BE, MPLS L3VPN: RD vs RT vs VPN Label, Access-lists vs Prefix-lists
CS & Programming Linked lists (C), Structs in C, Visualising Big O notation, Visualising recursive functions, Basic OOP Python, Python Multithreading, When and when not to multithread, Python and MySQL, Python paths and Cron logging
Lab & Milestones ESXi whitebox server build, 350-001 CCIE Written v4 passed, Cisco Live 2016 – Las Vegas, One Million Views

Everything is committed to Git and backed up to GitHub at mellowdrifter/mellowd.co.uk.

It feels great to have 15 years of technical notes, lab struggles, and networking history back online, accessible, and permanently preserved. Enjoy reading!