Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
ce88c4d
Split main page into columns, add 3rd featured post, split metadata o…
Oct 8, 2025
94884a6
Add mailing list signup without backend hookup
Oct 8, 2025
955c577
Change categories to pill buttons
ocorey-scottlogic Oct 13, 2025
3c486be
Get pictures in circles and grid
ocorey-scottlogic Oct 15, 2025
2f0369a
Center names in grid entries
ocorey-scottlogic Oct 16, 2025
976d884
Center names in grid entries
ocorey-scottlogic Oct 16, 2025
ab4deb3
Unrestrict author grid
ocorey-scottlogic Oct 16, 2025
68af92d
Remove added punctuation in post
ocorey-scottlogic Oct 16, 2025
a72ebfd
SCSS cleanup
Oct 10, 2025
0e481bb
Add inital socials
Oct 13, 2025
f8c79b6
Better sidebar and author header padding
Oct 13, 2025
b123ab4
Include author picture in link and stop jumping on hover
Oct 16, 2025
f0d16da
Remove unnecessary blank space outputted by jekyll
Oct 16, 2025
32df3b6
Replace github-pages with its deps and get pagination working
Oct 17, 2025
d110dc5
Fix page ordering, add better page controls and fix author page
Oct 17, 2025
f1d0d10
Style pagination
Oct 20, 2025
85ddc48
Load typekit once
Oct 21, 2025
addba7e
Avoid splitting people's names
Oct 21, 2025
fded2e1
Add paging to categories
Oct 21, 2025
79069f6
Remove category specifc title
Oct 21, 2025
97a01e9
Add search box without backend hookup
Oct 22, 2025
7f1f44c
Add prettier
Oct 22, 2025
9272bde
Add authors.json generator
Oct 22, 2025
d756ba2
Add build & deploy action
Oct 22, 2025
0cccd18
Add minifier for prod builds
Oct 22, 2025
d0d1901
Off by one with logging offset
Oct 22, 2025
2f7ca03
Broke a couple bits in a rebase
Oct 22, 2025
f813eff
Speed up build times
Oct 23, 2025
da47900
Fix post summary categories
Oct 23, 2025
c6addb1
Add custom filters and begin sidebar changes
Oct 24, 2025
68a7f5c
Try changing build action to run as a test
Oct 24, 2025
f30ca79
Missed the token
Oct 24, 2025
deea8d9
Apparently commonmark has issues with 0.6.0
Oct 24, 2025
41badbe
Include node for minifier in build action
Oct 24, 2025
3b229a8
Try with github offical actions
Oct 24, 2025
972869d
Too many quotes
Oct 24, 2025
1e5e2f7
Don't use github's builder
Oct 24, 2025
18218ef
Helps to use jekyll
Oct 24, 2025
1523f58
Add id to setup so it can be referenced
Oct 24, 2025
1dde7bc
Add id to deployment so it can be referenced
Oct 24, 2025
a63ebb8
Move scss compilation into jekyll build
Oct 24, 2025
0333a61
Setup node as part of build action
Oct 24, 2025
cc18a5f
Fix scss url's and load paths
Oct 24, 2025
ea7d984
Convert generate-json into a proper generator
Oct 24, 2025
0c4ab88
Remove somethings from bundle and include build profiling
Oct 24, 2025
fe0653e
Hopefully only deploy when not in pr, but try build always
Oct 24, 2025
a64dd64
Bundle js as part of jekyll build
Oct 28, 2025
e4ec3c0
Remove leftover from old js bundle
Oct 28, 2025
d889795
Helps to put the script output in the correct dir
Oct 28, 2025
969c7eb
Helps to tell jekyll not to remove the generated script
Oct 28, 2025
d11845d
Fix broken categories
Oct 28, 2025
9411ee8
Fix js bundling and add back HTML minification
Oct 28, 2025
d1d30ab
Switch to mainly ts, begin reducing script entry points, enable more …
Oct 29, 2025
f104dd7
Bump pa11y-ci
Oct 29, 2025
7ad5da5
Move bundle-js to new hook-exec and add dev readme
Oct 30, 2025
9c71928
Cleanup a bunch of deprecations and warnings
Oct 30, 2025
d046f50
Fix lintPosts errors and specify path to rspack
Oct 31, 2025
9c503a7
Author list (#2)
ocorey-scottlogic Oct 31, 2025
ffa45b3
Rename some variables and files (#3)
ocorey-scottlogic Oct 31, 2025
e851ede
Try adding baseurl to rspack
Oct 31, 2025
ee4afa8
Run hook-exec commands in shell
Oct 31, 2025
d61cf3e
Actually use BASE_URL
Oct 31, 2025
dae4d7c
PATH is not what I hoped
Oct 31, 2025
810c589
Move the slashes
Oct 31, 2025
fcfef66
Don't forget author images
Oct 31, 2025
9b9a956
Explictly set default baseurl
Nov 3, 2025
50c780e
Don't remove type=text on input tags
Nov 3, 2025
7f81450
Hide partially implemented things
Nov 3, 2025
515f4bd
Bring back applause
Nov 3, 2025
020533c
Updates from marcin
ocorey-scottlogic Nov 5, 2025
19fd3ac
Lazy load author list images
Nov 3, 2025
d736e08
Hide featured posts beyond page 1 (#5)
ocorey-scottlogic Nov 10, 2025
a5d1817
Updated Navigating Enterprise Ai Architecture and 1 other file
Nov 4, 2025
94daa3c
Updated Tools For Measuring Cloud Carbon Emissions Updated For 2025
Nov 4, 2025
98bb815
Updated Accelerating Financial Process Automation Scott Logic Finos F…
Nov 4, 2025
3fb896b
Updated Accelerating Financial Process Automation Scott Logic Finos F…
Nov 4, 2025
8628469
Updated Rapid Development With Devin
Nov 4, 2025
ca9ada5
Change category's post summary list to full width
Nov 10, 2025
fcd7874
Require ruby compatable with 3.3, enforced by bundler
Nov 18, 2025
a484cf3
output.path must be absolute
Nov 20, 2025
8f5fcab
Colour post summary list titles by index rather than title length (#6)
heatherlogan Nov 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/build-jekyll.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Build and Deploy
on:
pull_request:
branches:
- gh-pages
- 2025-redesign
push:
branches:
- gh-pages
- 2025-redesign # TODO: Remove before merge
workflow_dispatch:

# Prevent concurrent deploys
concurrency:
group: "pages"

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4'
bundler-cache: true
- name: Setup node
uses: bahmutov/npm-install@v1
- name: Setup pages
id: pages
uses: actions/configure-pages@v5
- name: Build Jekyll
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" --profile
env:
JEKYLL_ENV: production
RUBYOPT: --yjit
- name: Upload
uses: actions/upload-pages-artifact@v4
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
permissions:
pages: write
id-token: write
# Only deploy on push, merge or manual
if: "github.event_name != 'pull_request'"
steps:
- name: Deploy
id: deployment
uses: actions/deploy-pages@v4
2 changes: 1 addition & 1 deletion .github/workflows/check-a11y-of-changed-content.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.3
ruby-version: 3.4

- name: Install gems
run: bundle config path vendor/bundle && bundle install
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ name: Lint Posts

on:
pull_request:
branches:
- 'gh-pages' # Runs when a PR targets the gh-pages branch

jobs:
lint-posts:
Expand Down
23 changes: 5 additions & 18 deletions .pa11yci.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,20 @@
/// This is a configuration file automatically picked up by pa11y-ci.

const relativeUrls = require('./pa11y-ci-urls');
const relativeUrls = require("./pa11y-ci-urls");

const chromiumBin = process.env.CHROMIUM_BIN;
if (!chromiumBin) {
throw new Error('CHROMIUM_BIN environment variable is not set');
}

const baseUrl = 'http://localhost:4000';
const baseUrl = "http://localhost:4000";

// Colour contrast is a known issue. If we ever fix the brand colours, this should be removed.
const colourContrastRuleIds = [
// HTML CodeSniffer rule IDs come from section 1.4.3 of:
// https://squizlabs.github.io/HTML_CodeSniffer/Standards/WCAG2/
'WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail', // normal text
'WCAG2AA.Principle1.Guideline1_4.1_4_3.G145.Fail', // large text
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail", // normal text
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G145.Fail", // large text
];

module.exports = {
defaults: {
chromeLaunchConfig: {
executablePath: chromiumBin,
"args": ["--no-sandbox"],
},
ignore: [
...colourContrastRuleIds,
],
reporter: 'cli',
runners: ['htmlcs'],
ignore: [...colourContrastRuleIds],
},
urls: relativeUrls.map((url) => `${baseUrl}${url}`),
};
11 changes: 11 additions & 0 deletions .prettierrc.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
plugins: ["@shopify/prettier-plugin-liquid"],
overrides: [
{
"files": "*.html",
"options": {
parser: "liquid-html"
}
}
]
}
53 changes: 46 additions & 7 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,51 @@
source 'http://rubygems.org'
gem 'github-pages'
ruby '~> 3.3'

gem "jekyll", "~> 4"
group :jekyll_plugins do
# Deps from EOL github-pages gem minus themes
gem "jekyll-avatar"
gem "jekyll-commonmark"
gem "jekyll-default-layout"
gem "jekyll-feed"
gem "jekyll-gist"
gem "jekyll-github-metadata"
gem "jekyll-include-cache"
gem "jekyll-mentions"
gem "jekyll-optional-front-matter"
gem "jekyll-readme-index"
gem "jekyll-redirect-from"
gem "jekyll-relative-links"
gem "jekyll-remote-theme"
gem "jekyll-sass-converter"
gem "jekyll-seo-tag"
gem "jekyll-sitemap"
gem "jekyll-swiss"
gem "jekyll-titles-from-headings"
gem "jemoji"
gem "kramdown"
gem "kramdown-parser-gfm"
gem "liquid"
gem "mercenary"
gem "minima"
gem "nokogiri"
gem "rouge"
gem "terminal-table"
gem "webrick", "~> 1.7"

gem "tzinfo-data", "~> 1.2022"
gem 'jekyll-paginate-v2'

gem "webrick", "~> 1.7"
gem "tzinfo-data", "~> 1.2022"

# Issue with ffi requiring a very recent rubygems version, not yet available
# in many current linux docker images, so this must be locked down for now.
# See https://github.com/ffi/ffi/issues/1103
gem "ffi", "< 1.17.0"
gem "generate-json", "1.0.0", path: "gems/generate-json-gem"
gem "custom-filters", "1.0.0", path: "gems/custom-filters-gem"
gem "html-minify", "1.0.0", path: "gems/html-minify-gem"
gem "hook-exec", "1.0.0", path: "gems/hook-exec-gem"

gem "jekyll_plugin_support"

# Issue with ffi requiring a very recent rubygems version, not yet available
# in many current linux docker images, so this must be locked down for now.
# See https://github.com/ffi/ffi/issues/1103
gem "ffi", "< 1.17.0"
end
91 changes: 91 additions & 0 deletions README-DEV.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# Blog Development
Useful things for working the blog itself (not blog posts).

## Setup
See [README.md](README.md).
It has everything needed to get the blog up and running.

## HTML
Base layouts must be in `_layouts` and components must be in `_includes`.
Within components, prefer passing variables in using `{%- include foo.html bar=baz -%}` rather than using the page
context.
This allows for includes to be cached using `{%- include_cached ... -%}` if they begin to consume too much build time.

A few custom filters are provided by the `custom-filters` plugin:
- `starts_with` - returns true if the given string starts with a given string
- `"https://example.com" | starts_with: "https"` resolves to `true`
- `"ftp://example.com" | starts_with: "https"` resolves to `false`
- `nil | starts_with: "https:"` resolves to `false`
- `ends_with` - returns true if the given string ends with a given string
- `"foo.html" | ends_with: "html"` resolves to `true`
- `"foo.scss" | ends_with: "html"` resolves to `false`
- `nil | ends_with: "html"` resolves to `false`

## Styles
Blog stylesheets must be in `scss/`, be a partial stylesheet (be prefixed with an `_`) and `@use`'d by either
`assets/style.scss` or a stylesheet already `@use`'d by `assets/style.scss`.

For example, the styles related to the author list are in `scss/_author-list.scss`, which is `@use`d by
`assets/style.scss`, but `scss/_colours.scss` isn't `@use`'d by `assets/style.scss`.
Rather `_colours` is `@use`d by other stylesheets such as `_author-list.scss`.

Avoid deprecated SCSS features like `@import` where possible.
If it cannot be avoided, include a comment with the reason why.
For example `_util.scss` uses `@import` because the foundations framework still requires it.

All stylesheets reachable from `assets/style.scss` are compiled and minified into `_site/assets/style.css` as part of
the build process, using Jekyll's builtin SCSS support.

## Scripts
Blog scripts should be in `scripts/` and preferably be TypeScript (type safety is king).
Where possible, try and import new scripts into `scripts/index.ts`.
If this isn't possible, add the new script to `rspack.config.ts`'s `entry.page` array.

The scripts are compiled, concatenated and minified using a custom build hook that triggers `rspack build`.

## Build Hook
To aid in development, arbitrary commands can be run at different Jekyll hooks by adding entries to `_config.yml`'s
`hook_exec` entry.

Each entry has the following structure:
```yaml
hook_exec:
owner:
event:
name:
cmd: string
env: optional map
priority: optional int
```
where:
- `owner` and `event` are from the list in the [Jekyll docs](https://jekyllrb.com/docs/plugins/hooks/#built-in-hook-owners-and-events)
with the `:` removed.
- `name` is a useful identifier for logging
- `cmd` is the command to run
- The value is treated as a [liquid template](https://shopify.github.io/liquid/)
- `env` is a map of environment variables
- Values in the map are treated as [liquid template](https://shopify.github.io/liquid/)
- `priority` is the priority of the hook with higher values being run first

Liquid templates have access to the following variables, depending on which hook they are running in:
- `site` - hooks with `:site` owner
- Same as the `site` object in normal templates
- `doc` - hooks with `:document` owner
- [Jekyll document](https://github.com/jekyll/jekyll/blob/master/lib/jekyll/document.rb)
- `page` - hooks with `:pages` owner
- Same as the `page` object in normal template
- `payload` - hooks with either the `:pre_render` or `:post_render` event
- a hash containing variables to be used during rendering (`:pre_render`) or their final values after rendering
(`:post_render`)
- `files` - hooks with `:clean` owner
- list of [files](https://ruby-doc.org/3.4.1/File.html) to be deleted

For example, the `:site` `:pre_render` hook has the `site` and `payload` variables.

These templates do not have access to [Jekyll specific filters and tags](https://jekyllrb.com/docs/liquid/).

If a command produces a file in `_site`, it must be added to `_config.yml`'s `keep_file` list to prevent Jekyll from
removing it as part of the build.

This is primarily used to invoke external build commands.
Anything more complicated should be implemented as a custom plugin, similar to the `html-minify` plugin.
Loading