Skip to content

Commit 728d466

Browse files
authored
Merge pull request #4 from martinstabe/11ty-migration
11ty migration
2 parents b0218a7 + 208268e commit 728d466

1,232 files changed

Lines changed: 343272 additions & 5204 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.DS_Store

14 KB
Binary file not shown.

.github/workflows/pages.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Deploy GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
pages: write
12+
id-token: write
13+
14+
concurrency:
15+
group: pages
16+
cancel-in-progress: true
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
- name: Setup Node
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: 20
29+
cache: npm
30+
31+
- name: Setup Pages
32+
uses: actions/configure-pages@v5
33+
34+
- name: Install dependencies
35+
run: npm ci
36+
37+
- name: Build site
38+
run: npm run build
39+
40+
- name: Add .nojekyll to dist
41+
run: touch dist/.nojekyll
42+
43+
- name: Upload artifact
44+
uses: actions/upload-pages-artifact@v3
45+
with:
46+
path: dist
47+
48+
deploy:
49+
environment:
50+
name: github-pages
51+
url: ${{ steps.deployment.outputs.page_url }}
52+
runs-on: ubuntu-latest
53+
needs: build
54+
steps:
55+
- name: Deploy to GitHub Pages
56+
id: deployment
57+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,10 @@
11
_site
22
.sass-cache
3+
.DS_Store
4+
.DS_Store
5+
.DS_Store
6+
LOCAL_BUILD.md
7+
dist
8+
node_modules
9+
.DS_Store
10+
.Renviron

.nojekyll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

LINK_ROT_TODO.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# External Link Repair TODO
2+
3+
- Status as of 2026-04-06: both legacy taxonomy migrations are complete, and the generated tag pages have been cleaned up.
4+
- Completed: all 264 `links-for-*` posts now use normalized Jekyll `tags:` front matter, and their inline parenthesized Delicious tag links now point to local tag pages.
5+
- Completed: all 1,145 posts that previously used `categories:` now use `tags:` instead, and post footers now link to local tag pages rather than empty category URLs.
6+
- Completed: tag archives were regenerated from the full post set. There are now 1,237 tag pages plus the tag index at `/tags/`.
7+
- Completed: 735 redundant duplicate tag-page files named `* 2.md` were removed after verification that they were byte-for-byte duplicates of their corresponding canonical tag pages.
8+
- Completed: proper-noun tag pages now use display titles with human-readable capitalisation, while preserving the original `tag` slug and `permalink`.
9+
- Reference files: [link_check_report.json](/Users/martin.stabe/Documents/martinstabe.github.io/link_check_report.json), [_layouts/tag.html](/Users/martin.stabe/Documents/martinstabe.github.io/_layouts/tag.html), [_layouts/post.html](/Users/martin.stabe/Documents/martinstabe.github.io/_layouts/post.html), [tags/index.html](/Users/martin.stabe/Documents/martinstabe.github.io/tags/index.html).
10+
11+
## Completed Migration
12+
13+
- [x] Remove dependency on `del.icio.us/martinstabe/*` and `delicious.com/martinstabe/*` tag URLs inside `links-for-*` posts.
14+
- [x] Preserve the existing inline `(tags: ...)` blocks while retargeting them to local Jekyll tag pages.
15+
- [x] Normalize imported tag slugs by lowercasing, converting underscores to hyphens, and fixing obvious typos.
16+
- [x] Replace the old category-based footer links with tag-based footer links in [_layouts/post.html](/Users/martin.stabe/Documents/martinstabe.github.io/_layouts/post.html).
17+
- [x] Remove `categories:` front matter from the post archive and merge those values into normalized `tags:`.
18+
- [x] Remove redundant duplicate generated tag pages after confirming they duplicated the canonical tag pages exactly.
19+
- [x] Add display titles for proper-noun tag pages and update [_layouts/tag.html](/Users/martin.stabe/Documents/martinstabe.github.io/_layouts/tag.html) to render those titles instead of raw slugs.
20+
21+
## Refreshed Audit Summary
22+
23+
- The current prioritized audit in [link_check_report.json](/Users/martin.stabe/Documents/martinstabe.github.io/link_check_report.json) checked 281 high-impact external URLs from the current migrated tree.
24+
- Results: 69 dead links, 128 redirects worth updating, and 45 manual-review responses.
25+
- The high-signal remaining work is now mostly ordinary stale external content, especially old FT project URLs, old self-links under `www.martinstabe.com`, legacy slides references, and a handful of domains that now 403, 404, timeout, or fail DNS resolution.
26+
27+
## Highest Priority Remaining Fixes
28+
29+
- [ ] Replace or remove broken legacy self-links under `http://www.martinstabe.com/blog/archives/...`. The refreshed audit found 20 distinct dead URLs on `www.martinstabe.com`, accounting for 63 occurrences in the prioritized set.
30+
- [ ] Review dead FT and FT-blog project links. The refreshed audit found repeated 404s for `blogs.ft.com`, `www.ft.com/firemap`, and old FT interactive/article URLs.
31+
- [ ] Review dead slide-deck links separately. The refreshed audit still surfaces slide references such as dead Knight Lab, Tumblr, BBC, Carto, Huffington Post Pollster, and Zeit URLs.
32+
- [ ] Remove or replace OpenCalais entity links in [_posts/2008-09-22-planning-applications-hyperlocal-news.md](/Users/martin.stabe/Documents/martinstabe.github.io/_posts/2008-09-22-planning-applications-hyperlocal-news.md). These still redirect to Thomson Reuters and no longer point to meaningful entity pages.
33+
34+
## Remaining Content Fixes
35+
36+
- [ ] Replace or remove `http://www.martinstabe.com/blog/archives/2005/02/british_blogs_a.php` in 10 posts, including [_posts/2005-11-18-british-blogs-get-some-attention.md:34](/Users/martin.stabe/Documents/martinstabe.github.io/_posts/2005-11-18-british-blogs-get-some-attention.md#L34).
37+
- [ ] Replace or remove `http://www.delicious.com/martinstabe` in [_posts/2010-11-24-pimp-my-blog-blogging-reading-writin.md:41](/Users/martin.stabe/Documents/martinstabe.github.io/_posts/2010-11-24-pimp-my-blog-blogging-reading-writin.md#L41) and [links/index.md:6](/Users/martin.stabe/Documents/martinstabe.github.io/links/index.md#L6).
38+
- [ ] Replace or remove `https://bsky.app/profile/martinstabe.bsky.social` in [index.html:16](/Users/martin.stabe/Documents/martinstabe.github.io/index.html#L16) and [about/index.html:20](/Users/martin.stabe/Documents/martinstabe.github.io/about/index.html#L20).
39+
- [ ] Replace or remove `http://journalisted.com/martin-stabe` in [index.html:16](/Users/martin.stabe/Documents/martinstabe.github.io/index.html#L16).
40+
- [ ] Replace or remove `http://www.britishbaseball.org/page/show/286039-team-gb` in [about/index.html:18](/Users/martin.stabe/Documents/martinstabe.github.io/about/index.html#L18).
41+
42+
## Redirects Worth Updating
43+
44+
- [ ] Update `http://www.ft.com/interactive` to `https://www.ft.com/visual-and-data-journalism` across 38 occurrences.
45+
- [ ] Update `http://martinstabe.com/blog/?p=1348` to `http://www.martinstabe.com/blog/?p=1348` across 34 occurrences.
46+
- [ ] Update `http://seeyalaterallidata.wordpress.com/2013/03/07/data-journalism-at-the-bbc-interview-with-bella-hurrell/` to its `https://` URL across 20 occurrences.
47+
- [ ] Update `http://ig.ft.com/austerity-map/` to `https://ig.ft.com/austerity-map/` across 19 occurrences.
48+
- [ ] Update `http://www.ft.com/ig/features/baseline/greatest-tennis-players-of-all-time/` to `https://ig.ft.com/features/baseline/greatest-tennis-players-of-all-time/` across 16 occurrences.
49+
- [ ] Replace or remove OpenCalais `s.opencalais.com` and `d.opencalais.com` links that now redirect to Thomson Reuters. In the refreshed audit these still account for 13 redirecting URLs and 80 occurrences in the prioritized set.
50+
- [ ] Update the remaining obvious homepage/profile redirects on [about/index.html](/Users/martin.stabe/Documents/martinstabe.github.io/about/index.html), including FT, Governing, London Mets, and related profile links.
51+
- [ ] Decide whether to keep historical Twitter branding or update `twitter.com` profile/status links to `x.com` equivalents where redirects are now stable.
52+
53+
## Manual Review
54+
55+
- [ ] Review `www.ft.com` URLs returning 403 or DNS-style failures in the refreshed audit. These account for 8 prioritized URLs and 60 occurrences.
56+
- [ ] Review `elections.ft.com` URLs returning DNS-style failures in the refreshed audit. These account for 4 prioritized URLs and 29 occurrences.
57+
- [ ] Review `blogs.telegraph.co.uk` URLs returning DNS-style failures in the refreshed audit.
58+
- [ ] Review one-off timeout or service-failure domains such as `www.washingtonpost.com`, `api.stlouisfed.org`, `berlinwahlkarte2013.morgenpost.de`, and `datos.rtve.es`.
59+
60+
## Follow-Up Audit
61+
62+
- [ ] Re-run the prioritized link audit after the next batch of content fixes so [link_check_report.json](/Users/martin.stabe/Documents/martinstabe.github.io/link_check_report.json) reflects the updated state again.
63+
- [ ] If needed, run a broader audit focused just on `slides/` because that directory still contains a disproportionate share of stale external references.

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
martinstabe.github.io
2-
=====================
1+
# martinstabe.github.io
2+
3+
A new Eleventy implementation of `martinstabe.com`, migrated from the original Jekyll site while preserving the historical content archive and legacy permalink structure.
4+
5+
Some of the original Jekyll source is still present in the repository:
6+
7+
- posts remain in `_posts/`
8+
- Sass sources remain in `css/` and `_sass/`
9+
10+
The active Eleventy source lives in `src/`, and the generated deployable output is written to `dist/`.
311

4-
Jekyll files for [martinstabe.com](http://martinstabe.com) plus various other bits.

_config.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@ title: Martin Stabe
33
email: hello@martinstabe.com
44
tagline: ""
55
description: > # this means to ignore newlines until "baseurl:"
6-
Martin Stabe is a data journalist based in London. He is an head of interactive news at the <em>Financial Times</em>.
6+
Martin Stabe is a data journalist based in London. He is Data Editor at the <em>Financial Times</em>.
77
baseurl: "" # the subpath of your site, e.g. /blog/
88
url: "http://www.martinstabe.com" # the base hostname & protocol for your site
99
twitter_username: martinstabe
1010
github_username: martinstabe
1111
linkedin_username: martinstabe
1212
facebook_username: martinstabe
13-
journalisted_link: http://journalisted.com/martin-stabe
1413
timezone: Europe/London
1514
permalink: /:year/:month/:day/:title/
1615
destination: ./_site

0 commit comments

Comments
 (0)