Notes from
the build.

Thoughts from the years of making software, building businesses, learning in public, and figuring out what comes next.

The full archive

100 POSTS

2025

2024

2023

2022

31 Dec

2022 Year In Review

As has been my custom for the past twelve years, I like to spend a bit of time at the end of the year reflecting on the year that has been, looking ahead to the year that is to come, and noting down these reflections for posterity.

6 Oct

Automatically running Laravel queue worker and scheduler using PhpStorm

I recently switched to Laravel Valet instead of Laravel Sail. However, I wasn't sure on the best way to run Laravel's scheduler and queue worker locally when working on my projects. Luckily, PhpStorm has a feature called startup tasks which work great for this use case.

5 Sept

Creating alerts using Laravel, Vue 3 and Inertia.js

I'm currently working on a new side project using my favourite stack (Laravel, Vue and Inertia.js). I wanted to implement some "alerts" as toast notifications in the app and decided to share how I did it.

1 Aug

Running Laravel Pint in PhpStorm

To get Laravel Pint to automatically reformat your PHP code on save in PhpStorm, configure it as a file watcher to run as an "action on save".

10 Jun

10 lessons I’ve learned as a Software Engineer

I’ve been a Software Engineer and web developer for over a decade now. Companies such as Dell, AOL, and eBay have used my software to create unforgettable experiences for millions of people around the world. I’ve built, run, and sold software companies that have generated hundreds of thousand...

2 May

Staticus

I've done it again 🤦‍♂️ It all started when I wanted to add a menu to this site. "Simple!", I thought. The rabbit hole went like this:

23 Mar

Make Lemonade Podcast

Recently, JR Farr and I had a chat about my career and all the stuff I’ve been up to over the last decade for our new Make Lemonade podcast.

2021

31 Dec

2021 Year In Review

As has been my custom for the past eleven years, I like to spend a bit of time at the end of the year reflecting on the year that has been, looking ahead to the year that is to come, and noting down these reflections for posterity.

1 Dec

Web Dev Advent 2021

In typical last minute fashion, I've decided to get into the festive spirit and do a "web development" advent newsletter this year. Each day of advent I'm going to highlighting a web development tool, tip, or app that I use or recommend in my day-to-day development.

17 Nov

LaterMail

Last week I launched a new side project I've been working on for the last month or so, LaterMail.

16 Jun

Enabling HTTPS (SSL) for Laravel Sail using Caddy

I've been using Laravel Sail since it launched and have loved the simple, Docker-based approach to running Laravel on my local machine. However, recently I ran across the issue that Laravel Sail doesn't support HTTPS (SSL). Under the hood Sail uses the php artisan serve command to serve web pages...

19 Mar

Using stripe-mock with Laravel

Recently, while building Lemon Squeezy I came across the issue of mocking Stripe classes in a Laravel application. If you've ever built any kind of billing system using Stripe in Laravel and want to test it (which you should) you'll understand the problem. Stripe objects tend to be large and comp...

5 Feb

Big Sur iPhone Wallpaper

I’ve taken up digital drawing on Procreate recently. I’ve never been much of an artist but I’m finding it’s an enjoyable escape during lockdown.

2020

2019

2018

2017

2016

31 Dec

2016 Year In Review

As has been my tradition for the last six years now, I like to spend a bit of time on the last day of the year to reflect, consider the year that has been and the year that is to come, and note down some of these reflections for posterity. What a year 2016 has been.

24 Nov

Selling My First Business (Dev7studios.com)

Last week I sold my first business. It’s not the first project I’ve sold, but it’s by far the biggest and was my main source of business income for five years.

14 Nov

Convert the Laravel Spark invoice email to a Mail Notification email

Recently when customizing the invoice email template for Laravel Spark I noticed that it didn’t have any styles applied (raw HTML emails are a bit 1999). Given how good the new Mail Notifications look in Laravel 5.3 I figured it would make sense to convert the existing invoice email template to...

27 Sept

Running PHPUnit Tests in Docker

Recently I came across the situation where I needed to run the PHPUnit tests for the project I was working on in PHP 5.6 as they were failing in Travis. The project was a Laravel project and so was running in a Homestead box using PHP 7.

13 Jul

Backing Up Laravel Homestead Databases

Laravel Homestead is an awesome tool for building Laravel sites. However, sometimes it would be nice if when you did a vagrant destory you wouldn’t lose all of the information in your databases. Or in my case, if you database crashes and you can’t get it back up, it would be great if you had ...

7 Jul

Conditional Breakpoints in PhpStorm

Here is a quick tip: Have you ever been debugging code in a loop and only wanted to trigger a breakpoint if a specific condition is met? In PhpStorm it’s actually very simple. Right click on the breakpoint and add a “Condition”.

28 Jun

How and why I built Web Uptime

Back in May this year I launched a new side project called Web Uptime. Web Uptime provides multi-location website uptime monitoring for your sites. I’m not going to talk so much about what Web Uptime does here, you can see the marketing site to find out more, rather I’m going to talk about ho...

12 May

Becoming a Father

On the 23rd March 2016 at 10:31pm my life changed. I had spent months pre-empting what it would be like to become a father.

11 Jan

Setting up Xdebug on Homestead 4.0 (PHP 7)

As Xdebug has been removed from the default Homestead box you now need to install it manually to be able to use it.

2015

31 Dec

2015 Year In Review

For pretty much five years running now I’ve taken time at the end of the year to reflect on the year that’s been, and look ahead to the year that’s to come. Last year I wanted to continue to work smarter, not harder and strike a better balance of “busyness” in my life. While I’m not s...

30 Oct

The Dangers of Selling under Non-Disclosure

Back in the summer I sold one of my small SAAS apps that had around 100 paying customers. After trying a few private channels someone recommended I try selling the app through a broker. I had sold a few apps on Flippa before but nothing of this value and I wanted to see if I could get a decent va...

6 Oct

Setting up Laravel 5 for Travis CI

Continuous integration testing is awesome and if you build software with a team you really should have it up and running. Travis CI is a free (for public repos) service which connects to your GitHub repositories and automatically runs your tests whenever someone pushes to your repo (all configura...

27 Sept

WordPress Dependency Management

Recently I’ve been thinking a lot about WordPress and Composer (see my recent series on using WordPress with Git & Composer over on Delicious Brains) and how WordPress might implement dependency management at the core level. As more and more plugin developers start making use of Composer to...

17 Sept

Up and Running with Grunt Part 3: Automating Grunt Tasks

In this tutorial we look at automating Grunt tasks (so you don’t have to re-run grunt all the time) using the “watch” task.

14 Sept

Up and Running with Grunt Part 2: Creating a Gruntfile

In this tutorial we look at setting up and Gruntfile and installing a SASS package to compile our style.scss file.

10 Sept

Up and Running with Grunt Part 1: Installing Grunt

For a while now I’ve been wanting to be better at “sharing everything I know”. I’ve also been wanting to start doing video tutorial series. So today I’m launching the Build The Web YouTube channel (as a partner to the Build The Web Newsletter) which combines these two goals.

27 Aug

Expecting

It’s great to finally be able to announce that my wife and I are expecting a wee bundle of joy in March next year. It’s been a bit of a long road for us with many trials along the way.

3 Aug

Testing defines in PHPUnit

This one tripped me up recently. Say you are wanting to test a bit of code using PHPunit that relies on a defined constant. You don’t want the define() to affect your other tests, you only want it to apply for this specific test.

14 Jul

Watching Our Words

Apparently your tongue only makes up 0.4% of your total body weight, yet it has the power to crush or empower people around you. I don’t think anyone would argue that our words have a strong impact on those we converse with each day, and yet how long do we take to consider what it is that leave...

24 Jun

My Mac OS X Bash Profile

For a while now I’ve been beefing up my .bash_profile script with useful aliases. If you don’t know what .bash_profile is then read this great article which explains what it is and contains loads of useful info for getting started.

4 Jun

WordCamp Miami 2015 Review

Last week I attended my fist WordCamp in Miami. As I said before it really was a week of firsts. It was my first time in the USA (and my first time in Miami obviously), my first long haul flight, my first WordCamp and the first time meeting the Delicious Brains team.

15 Apr

I’m Changing My Job

For the last 3.5 years I’ve been working as a web developer over at ZillaMedia. In my time there I have worked on some awesome projects including building Snippi, working on PremiumPixels and building WordPress themes for ThemeZilla.

2 Apr

Structuring Sass for Web Apps & Larger Projects

I’ve been using Sass (specifically Scss) as my preprocesser of choice for some time now and it’s invaluable for taming your CSS when building larger projects (such as web apps).

2014

31 Dec

2014 Year in Review

It’s that time of year again to look back, take stock and reflect on what a year has brought. At the end of last year I resolved to be working smarter, not harder. While I may have achieved this goal to a certain extent there have been certain unforseen situations in 2014 which have hindered my...

3 Dec

PHP concepts to learn before diving into Laravel 5

Laravel is an awesome framework for PHP and I have been using the upcoming version 5 (currently in alpha) for some time now. Being a big, powerful framework Laravel has always suffered from a steep learning curve, and the update from 4 to 5 is no different.

28 Sept

Git is Way Too Complex

Recently I have migrated over from Subversion to Git as my VCS of choice. While Git has many great features and is much faster than SVN I still think its way too complicated for the average user.

23 Sept

Fixing NPM EACCES Error on OS X

So if you’ve installed Node using root permissions you might get an npm ERR! Error: EACCES when trying to install npm packages. This means you need to use sudo every time you want to install a package (not ideal). Apparently this is the case when you use the .pkg installer on OS X.

11 Sept

On Scottish Independence

I’ve been wanting to get my thoughts on Scottish Independence down in a coherent fashion for a while now, so here goes.

27 Aug

The Ideal Image Slider

While a lot people seem to applaud the death of the image slider these days, I still see them used all over the place and I still have to occasionally implement them myself. In short I don’t think they are going away any time soon.

4 Jun

How Raneto got to the front page of Hacker News for $0

On Monday morning around 11am I released Raneto my new project for creating Markdown powered Knowledgebases in Nodejs. After I came back from lunch (around 2pm) I was stunned to see I was at spot no. 6 on the front page of Hacker News and remained there for the rest of the day.

25 Mar

How to Decrypt an Encrypted SSL Key

A couple of times recently I’ve ran into the issue where I have receieved an encrypted SSL key from my registrar, but my hosting software won’t allow me to use an encrypted SSL key. The good reason for this is that if the key is encrypted, you’d have to enter the passphrase every time the w...

20 Feb

Cow Launcher

Over Christmas I decided that I wanted to achieve two goals this year that I have been putting off for a while. I wanted to make a game, and I wanted to get an app on the Apple App Store.

24 Jan

Becoming a Devtrepreneur

Recently a fellow Devtrepreneur contacted me to ask a few questions about my path to becoming a Devtrepreneur. So I decided that I would make my answers public in the form of this blog post so that others might gain a bit of insight into what has worked for me.

2013

31 Dec

2013 Year in Review

I like to take the opportunity at this time of year to look back, take stock and be thankful for what the year has brought. As with last year, this year has had its up’s and down’s but in general has been a good year.

27 Nov

Pricing is Hard

Over at Dev7studios we sell WordPress plugins and Web Apps so I’ve had to make decisions on single product pricing as well as SaaS pricing over the years, and none of it has been simple.

28 Oct

Selling to a Mass Market

One of things I discovered after launching the Nivo Slider WordPress Plugin was that the people who bought the plugin were not the people that I had expected to buy the plugin.

11 Sept

PHP Relative Time Function

Nice and simple. Converts a date to a relative time (e.g. “3 weeks ago”).

24 Aug

OS X Terminal Command to Find All Assets

So here is something which just came in handy. This Terminal command finds and lists all of the assets (JS/CSS/Images) of your “assets” folder in your web project.

8 Aug

Bootstrapping a Small Software Business

I’ve been running a small Web Development company for more than two years now. Dev7studios has been successfully profitable from day one. That may sound great, but that is partly because we are such a small scale company. In fact Dev7studios started as more of an outlet for my development ideas...

14 May

JavaScript Date.toMysql()

This just came in handy for me. It extends JavaScript’s Date() object and adds a toMysql() function for when you need to convert a JavaScript Date object to a MySQL Datetime format (in UTC).

27 Mar

Devtrepreneur

I always feel a bit guilty calling myself an “entrepreneur”. I mean I do run a successful company which I’ve bootstrapped myself (“successful” here meaning that it is a profitable lifestyle business where I can afford to hire a few extra folks to help spread the load). But I don’t thi...

2012

2011

21 Dec

Nivo Slider: The Story So Far

I should start this article by explaining the fact that I am not a born and bred entrepreneur. I’m a developer at heart who has literally stumbled upon “success” just as I was beginning to get interested in the whole business side of the web. I’ve been wanting to write this article for a ...

7 Nov

Getting My Web Development On

So today I started my new job as a full-time Web Developer working for Orman Clark. Working from home has been great so far, and I’m loving my new iMac that I purchased recently to help me get my work done more efficiently.

11 Oct

The Next Chapter

For the last 3 years (excluding my final year of uni in-between) I’ve been working as a Software Engineer with a company that specialise in North Sea Oil and Gas. While the job has been enjoyable enough, as time has gone on, one thing has become very clear. I don’t want to work in this industry.

4 Sept

BioThemes Closes

A year after starting development work on BioThemes, and about seven months in business, John O’Nolan and myself have decided to shut down BioThemes. We both feel this is the right decision and neither of us feel upset that we’ve reached this point.

4 Jun

Nivo Slider WordPress Plugin

So last week I launched the official Nivo Slider WordPress Plugin. It’s been a while in the making so it’s good to finally get it out. It’s also the first step towards the Nivo Slider Pro package, so this one isn’t free.

10 May

Forget the Recession, Start a Business

I was interested to hear Lord Alan Sugar’s opinion when asked about the new season of The Apprentice. Talking about the show’s new prize (£250,000 investment rather than a job) he said...

24 Mar

You Don’t Need a Brilliant Idea to Start a Startup

In this article Paul Graham states that “you don’t need a brilliant idea to start a startup”. I’ve been thinking about this recently and about how true it is.

20 Mar

The Nivo Slider is 1 Year Old

Today marks the 1 year anniversary of the now world renowned Nivo Slider. To celebrate here are some fun facts about the slider over the last year.

2 Feb

BioThemes

For the past few months now I’ve been hinting that I’ve been working on something huge and exciting but couldn’t tell anyone what it was all about. Well today I can finally reveal what it is that’s been keeping me busy and excited and I’m sure you’re going to love it.

2010

22 Dec

I don’t think I’ll forget 2010

As a year draws to a close I always find it helpful to look back and take stock of what has happened over the year, and this year has been an especially mental year for me personally. It’s good to be thankful for what you have in your life and what you have achieved or been blessed with over th...

12 Oct

Developers, Design is Important

I think part of the problem with a lot of developers today is that they don’t spend enough time caring about design. Maybe they are scared of design, maybe they simply don’t want to learn how to do it or maybe they just think it’s not their job.

27 Sept

Strict comparisons (===) in PHP

Have you ever seen a statement like if ($a === $b) and wondered what the whole triple equals thing is all about? Well it is actually quite simple. Assigning and comparing variables in PHP goes like this:

2 Aug

I’m Married

If you’ve maybe been wondering why I’ve been so quiet over the last few weeks and if you don’t follow me on twitter then you probably should know that I got married two weeks ago. I’ve been going out with Fiona now for 5 years and we had been engaged for 2 of those.

14 Jun

I’m Qualified

I received my exam results the other day. I’m now an officially qualified Software Engineer with a Bachelor of Science Honours degree from Strathclyde University. I received a Second Class Honours degree, upper division (which translates as a 2:1).

3 May

Developers, Sell Your Scripts

Before I even begin saying anything this article is not about encouraging developers to sell their scripts on sites like CodeCanyon (not that there is anything wrong with that). Rather I am going to take you through the process of things I did when creating the Nivo Slider, other than simply crea...

2009