Software Developer. Computer Geek. INTJ.

Category Blog

Setting up Gitea

This is how I set up my Gitea instance on my Ubuntu server…

Azure Portal – First Thoughts

Today I am starting to explore Microsoft Azure, starting with the Azure Portal (equivalent of the AWS Console)…

Setting up CLion to work with Arduino

I already did a couple of tutorials using the Arduino IDE, but I’m used using PhpStorm and missed the interface and key bindings. So I decided to upgrade to the JetBrains All Products Pack (since I also want to learn…

Setting up a Quake III Arena private server

Server setup Set up a Linux server. I used a DigitalOcean Standard $5/mo (1GB, 1CPU) droplet with Ubuntu 18.04. A desktop machine would be fine too – even the same one you’re playing on – as long as all players…

Forwarding incoming HTTP/HTTPS connections by hostname with HAProxy

This is how I set up HAProxy to forward HTTP/HTTPS connections to our single office IP address to several backend servers based on hostname.

Using Docker Toolbox on Cygwin

Notes: Docker For Windows is newer and officially recommended over Docker Toolbox, but it doesn’t run on Windows Home edition (only Pro) because it requires Hyper-V. The following instructions may or may not apply to Docker For Windows (I haven’t…

AWS Route 53 white label nameserver setup

How to set up your own nameservers –, etc.

Creating AWS EC2 instances with the AWS CLI

aws ec2 run-instances …

AWS IAM setup

aws iam create-account-alias –account-alias davejamesmiller…

AWS CLI setup

sudo pip install awscli…

Laravel Breadcrumbs Redux

I’ve decided to start working on Laravel Breadcrumbs again…

Laravel’s Dependency Injection Container in Depth

Laravel has a powerful Inversion of Control (IoC) / Dependency Injection (DI) Container. Unfortunately the official documentation doesn’t cover all of the available functionality, so I decided to experiment with it and document it for myself.

Windows 10 Creators Update notes

Today I installed Windows 10 Creators Update on my laptop (ASUS ROG). It wasn’t as straightforward as I would have liked… I decided to keep notes, in case the same thing happens on any other computers or at the next Windows…

Downloading old websites from

With Wayback Machine Downloader.

First Blog Post

This is the first blog post I’ve written in several years* (except at work). I’ve just decided to start blogging again, and I thought I’d start with why…

Tracking your SEO progress

How do you know if your SEO campaign is working? You track your progress over time in several key areas, analyse the results and adjust your strategy as necessary.

Conversion Rate Optimisation (CRO)

SEO is all about getting more visitors to your website – but just having more visitors isn’t the end goal. Ultimately you want those visitors to spend money with you, click on adverts, spread the word, etc. CRO is the process of increasing the percentage of visitors that take those desirable actions.

Avoiding black hat SEO practices

Black hat SEO is the practice of artificially increasing your search ranking by violating the search engines’ guidelines. While this can work in the short-term, you could be penalised or even blacklisted when they find out.

Technical SEO

As a website owner, content optimisation and link building are two things you can do to improve your search engine rankings – but there are also things you need your web developers to do on your behalf.

Off-site SEO – Building external links

When it comes to SEO, optimising your content is important, but not the whole story – other websites can affect your search ranking too. To rank highly, you’ll need to work on building valuable incoming links.

Content SEO – Optimising your web content

When it comes to SEO, content is king. It’s the thing search engines care about most, and a significant part of your SEO campaign. So, once you have planned your campaign and identified the terms you want to rank for, it’s time to get stuck into optimising your content.

Planning your SEO campaign

The first step in any SEO strategy is to do some research to work out what key phrases you need to promote your website with. What makes you stand out from the crowd? What searches are your target audience making? And how do you optimise your website for them?

Creating an SEO strategy

Search Engine Optimisation (SEO) is work done to improve the position of a website in search engines such as Google…

An introduction to agile software development

Agile is a way of managing software development projects that emphasises regular communication and collaboration, rather than strict processes and specification documents. Here we explain what this means for our clients, and when we think it’s the right method to use.

New VAT rules for websites

From 1 January 2015, businesses selling digital services to private consumers (B2C) in the EU must pay new VAT, the Mini One Stop Shop (MOSS) in the customer’s country and at their rates. We explain how this could affect your online sales.

CryptoPHP backdoor in pirated CMS themes & plugins

A backdoor that has been dubbed “CryptoPHP” was found hidden in pirated (“nulled”) themes and plugins for WordPress, Drupal and Joomla.

My Recommended PuTTY Settings

I use PuTTY all the time to connect from Windows to my Linux servers via SSH. These are the settings I use (that differ from the defaults).

.uk Domains

In June 2014, Nominet will open up registration of domains directly under “.uk”, removing the need for “”. We explain what’s changing and how this affects you.

Keeping your passwords secure

Very bad things can happen if your password is discovered by a hacker, so it’s vital to keep your passwords secure. Here we bring you our top tips to help you avoid your email account / website being hacked.

Installing PHP 5.4 on Debian 6 (Squeeze)

Debian 7 (Wheezy) is due to come out soon, but I didn’t want to wait to upgrade to PHP 5.4, nor to install the release candidate. I tried using the Wheezy repository, but got dependency errors. Fortunately Dotdeb provides packages for…

Installing Dnsmasq for wildcard local domains on Debian

I use this to point all subdomains of a domain to my local development server.

Automatic updates for Debian

Originally I was using apticron to email me whenever new security updates were available and then manually applying them, but with 3 Debian servers and frequent updates this was getting annoying. So I decided to automate it.

Automatic upgrades for phpMyAdmin

In order to ensure phpMyAdmin is kept up to date without having to manually upgrade it, I decided to find a way to script it. I found the instructions here, but here’s a more detailed version.

Synergy hotkey to toggle screens

Synergy is a cross-platform program that lets you share a keyboard & mouse between multiple computers over a network. (I use it for controlling my MacBook using my PC keyboard and mouse.) Synergy supports hotkeys, but there is no way to…

Installing PHP 5.2 FastCGI on a cPanel server (alongside PHP 5.3+)

This is based on my instructions for Debian and a bit from this forum post. It requires root access and you must be comfortable using the command line.

What is a CMS (Content Management System)?

A CMS is a system that allows you, as a non-technical user, to easily manage the content of your website, without needing to learn anything advanced (such as HTML)…

Cookies law deadline passes with updated guidance from the ICO

In May 2011, the Information Commissioner’s Office (ICO) gave UK organisations 1 year to comply with the new cookies law, which requires them to get permission before using cookies on websites.

1 year later, that law is now fully in effect. In this article we look at the latest updates from the ICO, and see what solutions other websites have used.

Are you complying with the new cookies law?

In May last year a new law came into effect that requires all websites to get consent from the user before using cookies. In December the Information Commissioner’s Office (ICO) issued further guidance, which you must comply with by May 2012.

Installing PHP FastCGI with suEXEC on Debian

Most of the time I’m happy with mod_php. It’s certainly the most efficient way to run PHP. But there is one major downside – all scripts are run as the Apache user (www-data). We can get around this by using…

Installing Ruby on Rails 3.1 + Ruby 1.9 on a cPanel 11.30 server

cPanel 11.30 doesn’t support Ruby 1.9 or Ruby on Rails 3.0/3.1, only Ruby 1.8 and Rails 2.3. They are working on supporting Rails 3 in cPanel 11.34, but that could be 12 months away still, so for now we have to install…

Automatically mounting a Samba share at boot on Debian

First you’ll need somewhere safe to put the username & password. We’ll store them in /etc/sambapasswords, and make that only readable by root.

Generating a self-signed SSL certificate for Apache

1. Generate a private key, 2. Generate a certificate signing request, 3. Self-sign the certificate, 4. Configure Apache…

The Checklist Manifesto – Summary

The Checklist Manifesto is a very good book about effectively using checklists. This is my summary of the advice, in the form of a checklist

Write tweets in your own words instead of retweeting

Sometimes retweeting is good – you can quickly share something you’re interested in with your followers. If you want to say exactly the same thing as the original author, retweeting makes it very easy. But sometimes wouldn’t it be better…

Connecting PHP to Microsoft SQL Server on Linux

Here is how to get PHP 5.2 on Linux (specifically Debian/Ubuntu) talking to a Microsoft SQL Server database

Installing PHP 5.2 FastCGI on Debian 6 (Squeeze)

Debian Squeeze comes with PHP 5.3. This is good, because PHP 5.2 is no longer maintained, but causes problems for old applications that can’t support it (e.g. ViArt 3, because it uses Zend Encoder). Rather than permanently downgrade PHP for the whole server,…

Splitting up PHP Mate

I have decided to split up PHP Mate, my “general-purpose” PHP library, into several smaller libraries…

Setting up Wake-on-LAN (with a Debian server)

Today I set up Wake-on-LAN (WOL) on all the PCs at work. It was pretty easy actually.

Mounting Samba/CIFS on Linux as a regular (non-root) user

smbmount //server/filestore /path/to/mountpoint/ -o user=dave,pass=XXX,dir_mode=0700,file_mode=0600

How I set up my Debian web server

Recently I moved my websites to a Memset virtual private server (VPS). Rather than pay an extra £7.50/month for cPanel, I decided to configure it myself. This is my notes about what I did. It’s not designed to be a guide…

© 2021 Dave James Miller — Powered by WordPress

Theme by Anders NorenUp ↑