Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
b35c2e7
Split main page into columns, add 3rd featured post, split metadata o…
Oct 8, 2025
09b7bbb
Add mailing list signup without backend hookup
Oct 8, 2025
7b0a821
Change categories to pill buttons
ocorey-scottlogic Oct 13, 2025
447e569
Get pictures in circles and grid
ocorey-scottlogic Oct 15, 2025
93584a6
Center names in grid entries
ocorey-scottlogic Oct 16, 2025
e6c251e
Center names in grid entries
ocorey-scottlogic Oct 16, 2025
a58c5c2
Unrestrict author grid
ocorey-scottlogic Oct 16, 2025
d52b928
Remove added punctuation in post
ocorey-scottlogic Oct 16, 2025
d74c3f5
SCSS cleanup
Oct 10, 2025
7c9b1ac
Add inital socials
Oct 13, 2025
57274bd
Better sidebar and author header padding
Oct 13, 2025
a6c31a4
Include author picture in link and stop jumping on hover
Oct 16, 2025
b2a5530
Remove unnecessary blank space outputted by jekyll
Oct 16, 2025
1e4a3c0
Replace github-pages with its deps and get pagination working
Oct 17, 2025
4ba5168
Fix page ordering, add better page controls and fix author page
Oct 17, 2025
9745985
Style pagination
Oct 20, 2025
7775114
Load typekit once
Oct 21, 2025
6da7fd9
Avoid splitting people's names
Oct 21, 2025
799b1c3
Add paging to categories
Oct 21, 2025
5640470
Remove category specifc title
Oct 21, 2025
1ba998d
Add search box without backend hookup
Oct 22, 2025
28cca1b
Add prettier
Oct 22, 2025
54a13a8
Add authors.json generator
Oct 22, 2025
46786a6
Add build & deploy action
Oct 22, 2025
8dd0aca
Add minifier for prod builds
Oct 22, 2025
affd376
Off by one with logging offset
Oct 22, 2025
cee4cc6
Broke a couple bits in a rebase
Oct 22, 2025
be26180
Speed up build times
Oct 23, 2025
2c16cd4
Fix post summary categories
Oct 23, 2025
da3c1f4
Add custom filters and begin sidebar changes
Oct 24, 2025
0658f22
Try changing build action to run as a test
Oct 24, 2025
ff90017
Missed the token
Oct 24, 2025
51d1ccd
Apparently commonmark has issues with 0.6.0
Oct 24, 2025
460d4e7
Include node for minifier in build action
Oct 24, 2025
51b9683
Try with github offical actions
Oct 24, 2025
7839b0e
Too many quotes
Oct 24, 2025
0f689ac
Don't use github's builder
Oct 24, 2025
20e70db
Helps to use jekyll
Oct 24, 2025
897b366
Add id to setup so it can be referenced
Oct 24, 2025
d15753c
Add id to deployment so it can be referenced
Oct 24, 2025
b8b1092
Move scss compilation into jekyll build
Oct 24, 2025
ab7dfe4
Setup node as part of build action
Oct 24, 2025
8eb7064
Fix scss url's and load paths
Oct 24, 2025
259525d
Convert generate-json into a proper generator
Oct 24, 2025
c209749
Remove somethings from bundle and include build profiling
Oct 24, 2025
4e10719
Hopefully only deploy when not in pr, but try build always
Oct 24, 2025
f518c1e
Bundle js as part of jekyll build
Oct 28, 2025
28fee01
Remove leftover from old js bundle
Oct 28, 2025
86edad2
Helps to put the script output in the correct dir
Oct 28, 2025
0cef441
Helps to tell jekyll not to remove the generated script
Oct 28, 2025
60dc558
Fix broken categories
Oct 28, 2025
1958e2f
Fix js bundling and add back HTML minification
Oct 28, 2025
e2e6e9c
Switch to mainly ts, begin reducing script entry points, enable more …
Oct 29, 2025
9fdd708
Bump pa11y-ci
Oct 29, 2025
20f07e6
Move bundle-js to new hook-exec and add dev readme
Oct 30, 2025
4df79bc
Cleanup a bunch of deprecations and warnings
Oct 30, 2025
6f4bfc1
Fix lintPosts errors and specify path to rspack
Oct 31, 2025
74bf707
Author list (#2)
ocorey-scottlogic Oct 31, 2025
cde4a8e
Rename some variables and files (#3)
ocorey-scottlogic Oct 31, 2025
b9f698f
Try adding baseurl to rspack
Oct 31, 2025
5b9a272
Run hook-exec commands in shell
Oct 31, 2025
5a9d1ca
Actually use BASE_URL
Oct 31, 2025
20f1eb0
PATH is not what I hoped
Oct 31, 2025
c87f2c0
Move the slashes
Oct 31, 2025
baa53ea
Don't forget author images
Oct 31, 2025
e145807
Explictly set default baseurl
Nov 3, 2025
d997056
Don't remove type=text on input tags
Nov 3, 2025
32553f9
Hide partially implemented things
Nov 3, 2025
feb0e14
Bring back applause
Nov 3, 2025
3a032e4
Updates from marcin
ocorey-scottlogic Nov 5, 2025
fb09494
Lazy load author list images
Nov 3, 2025
e74b07c
Hide featured posts beyond page 1 (#5)
ocorey-scottlogic Nov 10, 2025
4656091
Updated Navigating Enterprise Ai Architecture and 1 other file
Nov 4, 2025
7ff8929
Updated Tools For Measuring Cloud Carbon Emissions Updated For 2025
Nov 4, 2025
764aa90
Updated Accelerating Financial Process Automation Scott Logic Finos F…
Nov 4, 2025
cd38967
Updated Accelerating Financial Process Automation Scott Logic Finos F…
Nov 4, 2025
16a69e8
Updated Rapid Development With Devin
Nov 4, 2025
7f528df
Change category's post summary list to full width
Nov 10, 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"
}
}
]
}
52 changes: 45 additions & 7 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,50 @@
source 'http://rubygems.org'
gem 'github-pages'

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