Code Hardware Software Tech Web

Going Mac – Part 1

Part of documenting my transition to web dev on Mac is to record what needs to be set up  & configured. Should things ever go awry, this post could be a shortcut to getting back to a work-ready state.


Apps etc installed

The following needed to be installed manually.

The following were installed via the commands in the next section.


Other tasks

Show hidden files. Apparently this needs the command line!


Commands run

/usr/bin/ruby -e "$(curl -fsSL"

brew update
brew upgrade

brew tap homebrew/dupes 
brew tap homebrew/versions 
brew tap homebrew/homebrew-php 
brew tap caskroom/fonts 
brew tap caskroom/cask 
brew install node
npm install --global gulp-cli 

brew unlink php70
brew install php71

brew install git-flow-avh
brew cask install font-fira-code
brew cask install iterm2
brew cask install gimp

sudo xcodebuild -license


Other changes




Code Hardware Software Tech Web

Going Mac – Part 0

I’ll soon be starting a new job,  still in web development (as I have been for disturbingly more than a decade), though this time it’ll be in-house and for a huge company.

I’ve been persuaded to go over to what I’ve long considered the dark side; Apple.

I still don’t believe I’ll ever pay for Apple products with my own money, but it’s becoming clear that Windows really isn’t keeping up with the ease of development on MacOS, and my future employer will be the one stumping up the cash so what’s to lose?

This is to be the 0th in a series of posts on my conversion, or will that be “enlightenment”? 0th not 1st because I’ve not started yet – I’m just beginning to look at what tools I’ll likely be using.

Where I spend most of my work days at the moment is in the excellent JetBrains PHPStorm and I’m very pleased to see that I will be able to stick with it. The other software I use is the also excellent FileZilla and the frankly pretty ropey SourceTree. I will likely ditch both and finally get round to instead using the built-in functionality of PHPStorm, and, of course, modern deployment methods.

I’m a fan of the command line, but it’s always been in *nix (mostly Debian on web servers and Raspberry Pis), so I’m hoping that the move to Apple will mean I can actually do all the modern web dev things instead of spending so much time persuading Windows to let me.

So far, I’ve used all the contemporary techniques (proper MVC development, proper git usage like branching and pull-requests, npm, gulp, Sass), but never all in one project, and I’m really looking forward to it.

Code Tech Web

WordPress config snippet for dynamic domains

Quite why this isn’t how WordPress works by default, I’ll probably never know.

$domain = 'http' . (false ? 's' : '') . '://' . $_SERVER['HTTP_HOST'];
define( 'WP_SITEURL', $domain );
define( 'WP_HOME', $domain );

If anything, this snippet is for my own reference.

Prevents redirects on development / staging sites without changing the wp-config.php

Code Tech Web

CSS3: Rounded Table Corners (No images)

You cannot give a whole table (<table>) rounded corners using CSS, browsers will ignore it, you must round the corners of the cells (<td>) inside.

The following uses CSS2 selectors (:first-child etc) and CSS3’s corner-rounding border-radius to selectively round the outer corners of the cells in the corners.
This will work for any size table.

table.rounded-corners tr:first-child td:first-child {
	border-top-left-radius: 5px;
table.rounded-corners tr:first-child td:last-child {
	border-top-right-radius: 5px;
table.rounded-corners tr:last-child td:first-child {
	border-bottom-left-radius: 5px;
table.rounded-corners tr:last-child td:last-child {
	border-bottom-right-radius: 5px;
Code Tech Web

PHP Bug: json_encode() misleading warning on object with private properties

I have found a peculiar issue with PHP’s json_encode() function.

If you have an instance object with private properties and use json_encode() it will give you a very misleading warning.

class ExampleObject {
    private $privateProperty;
$obj = new ExampleObject();

results in

Warning: json_encode() … recursion detected …

There are two workarounds in the comments for the function at but this is simply a PHP bug as far as I am concerned.