Blog Archive
# 2026
- The software development community has a naysayer problem - September 30 2026
- Introducing the Triple Cipher encryption concept - September 28 2026
- Don't couple your Go code to GitHub - September 27 2026
- How to automate AI agents to read JIRA tickets and create pull requests - February 23 2026
- Design Decision: Technical Debt in BillaBear - February 10 2026
# 2025
- Rejecting rebase and stacked diffs, my way of doing atomic commits - December 13 2025
- Finding broken migrations with Bisect - December 11 2025
- AI is a Junior Dev and needs a Lead - August 19 2025
- How to Create Unbreakable Job Security: A Software Developer's Guide to Making Yourself Indispensable - August 4 2025
# 2024
- Creating Dynamic Billing Workflows With Symfony - August 12 2024
# 2023
- The Reality of Not Invented Here - September 4 2023
- Design Decision Separate Dtos - August 28 2023
# 2022
- Design Decisions:Throw Custom Exceptions - December 20 2022
- Design Decisions: Final Classes - December 20 2022
- Conditional loading of Doctrine mappings - December 1 2022
- Design Decisions: Why use final classes - December 1 2022
- GDPR For Developers By Example - August 3 2022
- From 204 requests per second to 480 with a single configuration change - July 1 2022
- Musings About Code Review - June 24 2022
- Musings About Software Development Estimations - June 17 2022
- Code Review: How to make enemies - June 9 2022
- Some Monolog logging best practices - June 3 2022
- PHP Code Quality Tools - May 13 2022
- Using Deptrac to maintain code quality - May 6 2022
- To code or to NoCode? - February 5 2022
# 2021
- How to Scale Complex Data - November 3 2021
- How to Prepare For a PHP Technical Interview - October 27 2021
- Migrate Entities to Microservice From Doctrine - October 20 2021
- How much damage can technical debt really do? - October 14 2021
- How Much of a Difference does Opcache Preloading Make? - October 13 2021
- Is PHP the best beginner language? - October 6 2021
- What is serverless and should you be using it - October 5 2021
- Hiring Developers: How to avoid the best - September 5 2021
- How we think GDPR will going to change the tech landscape - August 26 2021
- How to review your MVP project as a non-technical founder - August 8 2021
- How to remove secrets from log with monolog - August 1 2021
- PHP, isn't that, like really bad?' - July 4 2021
- Business value over correctness - January 23 2021
# 2018
- Is Your It Harmful?: Product Team - September 10 2018
- Ticket Types - September 7 2018
# 2017
- Code Review: Sanity Checks - February 27 2017
- Code Review: Single Responsibility Principle - February 21 2017
- OVH & Docker - Failed to register layer: devmapper - February 6 2017
- Go dep in Docker - February 4 2017
- RabbitMQ One consumer blocking others - February 1 2017
- Increase docker device size on Ubuntu - January 30 2017
- Are you a good developer - January 16 2017
- What I learned with a big database - January 15 2017
# 2015
- Symfony Password encoding - June 1 2015
# 2014
- Hack: Types - November 23 2014
- Don't return null - November 1 2014
- My Opinion on testing code with 3rd party API calls - October 9 2014
- How I use Dependency Injection - June 6 2014
- Revel : How to use Drone.io for testing - April 27 2014
- Revel : Force template format - April 26 2014
- Why Revel? - April 19 2014
- Social Engineering defence - April 14 2014
- Quick rundown on BCAAs - April 1 2014
- xvfb-run and wkhtmltopdf won't run in Jenkins/Apache - March 29 2014
- Observer pattern in golang - March 22 2014
- Why hacking on production code during an interview is a good thing - March 21 2014
- The git-flow branch model is waterfall? - March 20 2014