Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
e5018d9
Split main page into columns, add 3rd featured post, split metadata o…
Oct 8, 2025
275f860
Add mailing list signup without backend hookup
Oct 8, 2025
79eb27f
Change categories to pill buttons
ocorey-scottlogic Oct 13, 2025
7f1d36b
Get pictures in circles and grid
ocorey-scottlogic Oct 15, 2025
223e60c
Center names in grid entries
ocorey-scottlogic Oct 16, 2025
6408622
Center names in grid entries
ocorey-scottlogic Oct 16, 2025
586746b
Unrestrict author grid
ocorey-scottlogic Oct 16, 2025
5dd293d
Remove added punctuation in post
ocorey-scottlogic Oct 16, 2025
7097d45
SCSS cleanup
Oct 10, 2025
6be4bcc
Add inital socials
Oct 13, 2025
3e6d1cf
Better sidebar and author header padding
Oct 13, 2025
47bcc5d
Include author picture in link and stop jumping on hover
Oct 16, 2025
a8b27af
Remove unnecessary blank space outputted by jekyll
Oct 16, 2025
51d9367
Replace github-pages with its deps and get pagination working
Oct 17, 2025
03d73b5
Fix page ordering, add better page controls and fix author page
Oct 17, 2025
ab8d67c
Style pagination
Oct 20, 2025
2d96e2d
Load typekit once
Oct 21, 2025
15ca5e2
Avoid splitting people's names
Oct 21, 2025
0c6d172
Add paging to categories
Oct 21, 2025
0ff532e
Remove category specifc title
Oct 21, 2025
13ef0e5
Add search box without backend hookup
Oct 22, 2025
328a63f
Add prettier
Oct 22, 2025
39b68d3
Add authors.json generator
Oct 22, 2025
5296006
Add build & deploy action
Oct 22, 2025
0ff448f
Add minifier for prod builds
Oct 22, 2025
1230f4a
Off by one with logging offset
Oct 22, 2025
0020bb5
Broke a couple bits in a rebase
Oct 22, 2025
b19f1c1
Speed up build times
Oct 23, 2025
44a19ab
Fix post summary categories
Oct 23, 2025
4610121
Add custom filters and begin sidebar changes
Oct 24, 2025
02a909d
Try changing build action to run as a test
Oct 24, 2025
b9be90d
Missed the token
Oct 24, 2025
e94f195
Apparently commonmark has issues with 0.6.0
Oct 24, 2025
f5b7398
Include node for minifier in build action
Oct 24, 2025
9b6a03e
Try with github offical actions
Oct 24, 2025
c5746c4
Too many quotes
Oct 24, 2025
6941be1
Don't use github's builder
Oct 24, 2025
2b28810
Helps to use jekyll
Oct 24, 2025
b88d54f
Add id to setup so it can be referenced
Oct 24, 2025
6a62f2f
Add id to deployment so it can be referenced
Oct 24, 2025
63c2b3b
Move scss compilation into jekyll build
Oct 24, 2025
173c705
Setup node as part of build action
Oct 24, 2025
a40be41
Fix scss url's and load paths
Oct 24, 2025
dc26f0c
Convert generate-json into a proper generator
Oct 24, 2025
80d6e6c
Remove somethings from bundle and include build profiling
Oct 24, 2025
c06cfba
Hopefully only deploy when not in pr, but try build always
Oct 24, 2025
cd80ae9
Bundle js as part of jekyll build
Oct 28, 2025
0d14d1c
Remove leftover from old js bundle
Oct 28, 2025
212ac1a
Helps to put the script output in the correct dir
Oct 28, 2025
3ffed55
Helps to tell jekyll not to remove the generated script
Oct 28, 2025
89381ca
Fix broken categories
Oct 28, 2025
1bd95cd
Fix js bundling and add back HTML minification
Oct 28, 2025
d566430
Switch to mainly ts, begin reducing script entry points, enable more …
Oct 29, 2025
a0147ca
Bump pa11y-ci
Oct 29, 2025
31bae2e
Move bundle-js to new hook-exec and add dev readme
Oct 30, 2025
288f002
Cleanup a bunch of deprecations and warnings
Oct 30, 2025
af3a039
Fix lintPosts errors and specify path to rspack
Oct 31, 2025
1395246
Author list (#2)
ocorey-scottlogic Oct 31, 2025
7344ccd
Rename some variables and files (#3)
ocorey-scottlogic Oct 31, 2025
ee8696d
Try adding baseurl to rspack
Oct 31, 2025
1509387
Run hook-exec commands in shell
Oct 31, 2025
ff2969d
Actually use BASE_URL
Oct 31, 2025
7b6000e
PATH is not what I hoped
Oct 31, 2025
a329a49
Move the slashes
Oct 31, 2025
ebfc2dd
Don't forget author images
Oct 31, 2025
36fb46e
Explictly set default baseurl
Nov 3, 2025
01a9b49
Don't remove type=text on input tags
Nov 3, 2025
8196ad3
Hide partially implemented things
Nov 3, 2025
89a2bcc
Bring back applause
Nov 3, 2025
2b35cb7
Updates from marcin
ocorey-scottlogic Nov 5, 2025
0d77373
Merge pull request #4 from themadprofessor/marcin-updates
ocorey-scottlogic Nov 5, 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