Projects
Personal projects I’ve been working on
- Compliments: A quick react app to share compliments from the Reply All podcast. You can view it here (Protip, you can change the name).
- Fixtures: A module that allows users to create fixtures for automated testing. Silverstripe projects have traditionally loaded fixtures via yaml files. We had a need to create fixtures programmatically, so I made a module to achieve it. This supports dependencies using a very basic implementation of Kahn’s algorithm.
- Impetuous: A module to statically cache responses via middleware in Silverstripe. Designed to be extended upon allowing projects to use it with different circumstances/context around cache lifetime and invalidation strategy.
- Telescope: A reimplementation of Laravels Telescope in Silverstripe. Front end is written as a SPA in React.
- Recipes: A recipe website built for my partner. Uses Gatsby for the frontend and stores files in markdown. Makes use of Netlify CMS for easy editing and free hosting. View it here.
- Safezone: Basic react app used to create “safe zones” for images based on ratios
Some of the open source contributions I’ve made:
- Silverstripe Assets (recursive performance issue): Read more about it here.
- Silverstripe Assets (
Folder::find_or_make
bug fix): This was found when trying to track down why folders were being duplicated in the database. - Silverstripe CMS (Increase performance of the CMS through caching): When profiling the CMS performance for a client web site, I found that 7ish% of the time taken for a request was generating CSS classes for page icons.
- Silverstripe CMS (Reduce complexity): Removed code for checking if an item was archived that was implemented differently elsewhere.
- Silverstripe Versioned (Fix incorrect state): When
DataObjects
were archived the instance of theDataObject
would retain their previous version. - DNA Design Populate (Add support for Fluent): Projects using fluent wouldn’t have their data correctly purged which meant exceptions would be thrown when trying to rebuild the data