|
Tom Butler's programming blog
|
Intern |
Sender Juice |
|
Code
|
Intern |
Sender Juice |
|
Articles
|
Intern |
Sender Juice |
|
About
|
Intern |
Sender Juice |
|
Contact
|
Intern |
Sender Juice |
|
Transphporm
|
Ekstern |
Sender Juice |
|
Dice
|
Intern |
Sender Juice |
|
Maphper
|
Ekstern |
Sender Juice |
|
Insphpect
|
Ekstern |
Sender Juice |
|
Evict Your Darlings: Banish dotfiles from your home directory
|
Intern |
Sender Juice |
|
v.je - an Easy to set up development environment for Docker
|
Intern |
Sender Juice |
|
Why are you still using XAMPP?
|
Intern |
Sender Juice |
|
Setting Up a Modern PHP Development Environment with Docker (published on sitepoint.com)
|
Ekstern |
Sender Juice |
|
It's probably not time ditch CentOS for your server
|
Intern |
Sender Juice |
|
How to get sendmail working in docker PHP
|
Intern |
Sender Juice |
|
11 things you may have overlooked when you made your website live
|
Intern |
Sender Juice |
|
Eliminate Render Blocking CSS using HTTP/2 Push
|
Intern |
Sender Juice |
|
Forcing a browser CSS cache reload with HTTP/2 Server Push
|
Intern |
Sender Juice |
|
Immutable MVC in PHP (Part 2) - Immutable CRUD application
|
Intern |
Sender Juice |
|
Immutable MVC: MVC In PHP 2019 Edition (Part 1)
|
Intern |
Sender Juice |
|
Guide: Using Let's Encrypt SSL Certificates for local or network server
|
Intern |
Sender Juice |
|
Routing all traffic through an OpenVPN client on a CentOS 7 NAT
|
Intern |
Sender Juice |
|
Put the pro in programmer: A guide to writing better code
|
Intern |
Sender Juice |
|
Inheritance vs Composition: Composition wins by knockout
|
Intern |
Sender Juice |
|
Immutability vs Encapsulation: Schrödinger's immutability
|
Intern |
Sender Juice |
|
Git Forked: The decentralised but better connected git ecosystem I'd like to see
|
Intern |
Sender Juice |
|
Dice - A minimalist Dependency Injection Container for PHP
|
Intern |
Sender Juice |
|
Transphporm - A new approach for PHP templating
|
Intern |
Sender Juice |
|
Maphper - A n ORM with an array like API.
|
Intern |
Sender Juice |
|
CSS3 in Internet Explorer
|
Intern |
Sender Juice |
|
The View gets its own data from the Model
|
Intern |
Sender Juice |
|
Maximising View reusability with View Helpers
|
Intern |
Sender Juice |
|
Hello World
|
Intern |
Sender Juice |
|
Real world example (part 1)
|
Intern |
Sender Juice |
|
Deploying MVC on the web
|
Intern |
Sender Juice |
|
Create a router using Dependency Injection
|
Intern |
Sender Juice |
|
MVVM, MVC it's all just roman numerals to me
|
Intern |
Sender Juice |
|
Constructor Injection vs Setter Injection
|
Intern |
Sender Juice |
|
The "courier" anti-pattern.
|
Intern |
Sender Juice |
|
Are Static Methods/Variables bad practice?
|
Intern |
Sender Juice |
|
Encapsulation: Don't Look Up
|
Intern |
Sender Juice |
|
The $this variable isn't as Object-Oriented as you think it is
|
Intern |
Sender Juice |
|
Finding creative ways to break encapsulation isn't clever
|
Intern |
Sender Juice |
|
PHP: Annotations are an abomination
|
Intern |
Sender Juice |
|
Empty interfaces are bad practice
|
Intern |
Sender Juice |
|
Stop the sprinf() abuse
|
Intern |
Sender Juice |
|
Hazard 1: 90% of everything is crap
|
Intern |
Sender Juice |
|
Hazard 2: I've always done it that way
|
Intern |
Sender Juice |
|
Hazard 3: COOL!
|
Intern |
Sender Juice |
|
Hazard 4: You are not clairvoyant
|
Intern |
Sender Juice |
|
Is programming an art form?
|
Intern |
Sender Juice |
|
The importance of getting terminology correct
|
Intern |
Sender Juice |
|
Git Forked: Goodbye GitHub, you'll be briefly missed
|
Intern |
Sender Juice |
|
11 things you may have overlooked when you made your website live
|
Intern |
Sender Juice |
|
PHP & MySQL - Novice to Ninja, now available!
|
Intern |
Sender Juice |
|
4 reasons you should not have logic in your database (cascade delete, foreign key constraints, triggers, etc)
|
Intern |
Sender Juice |
|
Google Analytics And Fonts Are Probably Costing You In Lost Sales
|
Intern |
Sender Juice |
|
v.je - a 97mb minimal web development virtual machine
|
Intern |
Sender Juice |
|
A better solution to coding standards
|
Intern |
Sender Juice |
|
PHP Autoloaders should not be case sensitive
|
Intern |
Sender Juice |
|
PHP: PSR-0: Pretty Shortsighted, Really
|
Intern |
Sender Juice |
|
Find every combination of an array
|
Intern |
Sender Juice |
|
Why I don't have a comments section
|
Intern |
Sender Juice |
|
-
|
Intern |
Sender Juice |
|
NoF5 - Never press reload again!
|
Intern |
Sender Juice |
|
CSS3 in Internet Explorer (deprecated)
|
Intern |
Sender Juice |
|
The View gets its own data from the Model
|
Intern |
Sender Juice |
|
MVC Models are not Domain Models
|
Intern |
Sender Juice |
|
Immutable MVC: MVC In PHP 2019 Edition (Part 1)
|
Intern |
Sender Juice |
|
Immutable MVC in PHP (Part 2) - Immutable CRUD application
|
Intern |
Sender Juice |
|
Hello World
|
Intern |
Sender Juice |
|
Real world example (part 1)
|
Intern |
Sender Juice |
|
Deploying MVC on the web
|
Intern |
Sender Juice |
|
Create a router using Dependency Injection
|
Intern |
Sender Juice |
|
MVVM, MVC it's all just roman numerals to me
|
Intern |
Sender Juice |
|
Immutability vs Encapsulation: Schrödinger's immutability
|
Intern |
Sender Juice |
|
Encapsulation: Don't Look Up
|
Intern |
Sender Juice |
|
The $this variable isn't as Object-Oriented as you think it is
|
Intern |
Sender Juice |
|
Finding creative ways to break encapsulation isn't clever
|
Intern |
Sender Juice |
|
Slutty Software is good software: Tight and loose coupling in OOP
|
Intern |
Sender Juice |
|
PHP: Annotations are an abomination
|
Intern |
Sender Juice |
|
Empty interfaces are bad practice
|
Intern |
Sender Juice |
|
Stop the sprinf() abuse
|
Intern |
Sender Juice |
|
Constructor Injection vs Setter Injection
|
Intern |
Sender Juice |
|
Inheritance vs Composition: Composition wins by knockout
|
Intern |
Sender Juice |
|
The "courier" anti-pattern.
|
Intern |
Sender Juice |
|
Are Static Methods/Variables bad practice?
|
Intern |
Sender Juice |
|
A guide to writing better code
|
Intern |
Sender Juice |
|
Hazard 1: 90% of everything is crap
|
Intern |
Sender Juice |
|
Hazard 2: I've always done it that way
|
Intern |
Sender Juice |
|
Hazard 3: COOL!
|
Intern |
Sender Juice |
|
Hazard 4: You are not clairvoyant
|
Intern |
Sender Juice |
|
To assert or not assert, that is the question.
|
Intern |
Sender Juice |
|
4 reasons you should not have logic in your database (cascade delete, foreign key constraints, triggers, etc)
|
Intern |
Sender Juice |
|
v.je - an Easy to set up development environment for Docker
|
Intern |
Sender Juice |
|
Why are you still using XAMPP?
|
Intern |
Sender Juice |
|
Routing all traffic through an OpenVPN client on a CentOS 7 NAT
|
Intern |
Sender Juice |
|
Guide: Using Let's Encrypt SSL Certificates for local or network server
|
Intern |
Sender Juice |
|
Is programming an art form?
|
Intern |
Sender Juice |
|
The importance of getting terminology correct
|
Intern |
Sender Juice |
|
SoCcam's Razor: Applying the Single Responsibility Principle using a practical approach
|
Intern |
Sender Juice |
|
PHP & MySQL - Novice to Ninja, now available!
|
Intern |
Sender Juice |
|
Google Analytics And Fonts Are Probably Costing You In Lost Sales
|
Intern |
Sender Juice |
|
v.je - A 97mb Minimal web development virtual machine
|
Intern |
Sender Juice |
|
A better solution to coding standards
|
Intern |
Sender Juice |
|
PHP Autoloaders should not be case sensitive
|
Intern |
Sender Juice |
|
PHP: PSR-0: Pretty Shortsighted, Really
|
Intern |
Sender Juice |
|
Find every combination of an array
|
Intern |
Sender Juice |
|
Why I don't have a comments section
|
Intern |
Sender Juice |
|
Split/explode a string in PHP with an escape character
|
Intern |
Sender Juice |
|
Git Forked: Goodbye GitHub, you'll be briefly missed
|
Intern |
Sender Juice |
|
Git Forked: The decentralised but better connected git ecosystem I'd like to see
|
Intern |
Sender Juice |
|
A guide to Transphporm's caching implementation
|
Intern |
Sender Juice |
|
my Gitter chat
|
Ekstern |
Sender Juice |
|
Publications
|
Intern |
Sender Juice |