A Blog About Software Development
About
This is my website about software development, primarily, but not exclusively, on iOS and using Swift.
Built with Jekyll and hand-written CSS — no front-end framework and no JavaScript dependencies. Gratefully forked from Jesse Squires, though little of the original design survived the 2026 redesign.
Requirements
Dependencies
Gems
Updating gems
$ bundle update
Usage
Installation
$ git clone https://github.com/vermont42/racecondition.software.git
$ cd racecondition.software/
$ bundle install
$ git config core.hooksPath .githooksThat last command enables the repo's pre-commit hook, which rejects HEIC/HEIF images. It is per-clone local configuration and is not tracked by git, so a fresh clone runs no hook until it is set.
Building the site
$ bundle exec jekyll buildPreviewing the site locally
$ bundle exec jekyll serve # Now browse to http://localhost:4000
Writing a draft
$ bundle exec jekyll serve --future --drafts --watchCreating a post
$ scripts/new_post.sh
Checking the built site
$ scripts/verify_site.sh
Validates the Atom feed, the JSON feed, and the sitemap, and confirms that every internal link in _site/ resolves. CI runs it on every push, and again before the deploy syncs to S3.
Deployment
Pushes to master are built and deployed to S3 and CloudFront by .github/workflows/deploy.yml. The CloudFront Function handling the www → apex and /blog/ → /archive/ redirects is checked in at infra/cloudfront/redirects.js.
License
Copyright © 2018-present Josh Adams.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
