Writing
Sustainable Software Engineering cheatsheet
Practical tips on environmental sustainability for software developers, frequently updated. Topics covered include infrastructure, compute, removing unnecessary code & content, storing less, transferring less, and helping your users to make a difference.
GitHub blog: Increasing developer happiness with GitHub code scanning
An article I wrote for the GitHub blog in 2021 on "How GitHub uses code scanning to increase developer happiness, and how you can too."
The Behavior Oriented Design of an Unreal Tournament Character
Academic paper published in the proceedings of the 2005 International Conference on Intelligent Virtual Agents. Joanna J. Bryson was my co-author.
This paper was based on my dissertation, which was published as a Technical Report by the University of Bath.
I also got co-author credit on POSH Tools for Game Agent Development by Students and Non-Programmers, published in the proceedings of CGAMES06.
BDD is bigger than I thought
Why Behaviour-Driven Development is more than just natural-language end-to-end tests. This article was featured on HackerNoon.com in 2018, although their latest redesign messes up some of the formatting of older articles, hence me linking to the Medium version above.
Semantic Versioning when you change the required programming language version
If you change the version of a programming language that your software requires, which semantic version number should you bump? Featured in PHP Weekly newsletter in 2018.
"Tests as contract" — using automated tests to help teams work together
Using automated tests to define the contract with a third-party supplier of an API.
Put your money where your mouse is
Encouraging tech companies to donate to software projects they use, and to involve their employees in that process.
Connecting to Google's Natural Language API with Python on App Engine
The "missing manual" for Google's Natural Language API with Python (as of 2016). This article was mentioned on Google's Cloud Platform blog (search for "White October").
Combining multiple forms in Flask-WTForms but validating independently
A how-to for Python's Flask framework, published in 2019.
Lessons from inexperience: Learning from idealism and your previous managers
How to reframe inexperience as a positive when starting a new role. Originally posted on the Lead Developer conference blog back in 2015.
This isn't a complete list: Much of my online writing was only on the deceased White October Blog. I may in time rescue the best of that from the Internet Archive and add it here too.
Presenting
Much of my presenting has been internal-only and not available publicly. Presentations here are ones I've given externally, or that I particularly want to share more widely. I'm happy to give any of these talks (except those marked with an asterisk) at meetups or conferences - just get in touch!
5 actions you can take right now for more sustainable web design
Presented at Oxford Geek Night in January 2024.
Design Patterns and Ruby
An introduction to Design Patterns, and how programming in Ruby can give a different approach to using them. Presented at Oxford Ruby User Group (OxRUG) in 2023.
What I look for when reviewing code
My colleagues at GitHub have been kind enough to comment favourably on my code reviews, and I've noticed that I often pick up on things that others don't mention. This "live demo" code review (hence no slides link) walks through some of those things.
Unicode and PHP webapps (*)
An introduction to Unicode and what it means for PHP development. Presented at PHP Oxford in 2018.
BDD != Gherkin, so what is it? (*)
A mini workshop at the Cukenfest Unconference in 2019. There weren't slides or a detailed writeup, but I tweeted a picture of the brainstorm the attendees came up with.
Elsewhere
sam
at this domain.
Miscellanea
A past incarnation of this site had details of my computer-gaming interests. I don't get much time for that these days, but here are the two downloads I offered on that old site: A map of Sheets Heath in Brookwood for Carr Software's Capture the Flag, and a map of the Labion Caves in Space Quest 2 (print-friendly version).
Back in 2005, I worked as a Foreign Language Assistant in a secondary school in Germany. I created some resources for language lessons which other Language Assistants might find helpful.