How to Start a Blog in 15 minutes or less

I remember when I created my first website back in 2001. A very simple site with a few flash games and links to useful pages. Getting a website up and running then was a lot harder than it is today. I wish I had a guide like this to show me how to start a blog.

There were few resources for how to actually do it, WordPress was still a couple of years away from being developed and everything had to be set up manually. I actually bought a book, a physical book, as the Kindle hadn’t been invented yet. This took me through the steps on registering a domain and uploading my files via FTP to a webserver.

Things are a lot simpler these days with 1-Click installs, a wide variety of content systems to choose from and cheap web hosting. However, even though things are easier people still put off creating their own blog. I get asked all the time by people and fellow software developers how to start a blog. Many saying “I really should get round to doing that” but never do. A blog can be a great way to get exposure as a software developer, give back to the community and even make money.

So on that note, stop what you are doing and bookmark this page now. If you have half an hour spare, stay here and we will go through the steps now and you will have a website setup by the time you finish this post.

As I mentioned above there are a variety of content management systems (CMS) to choose from. You don’t need a CMS if you are happy to dive into a code editor to write a new post and then upload it via an FTP client. Even if you are comfortable with that, I wouldn’t recommend it. That little extra effort will almost guarentee you will never get around to writing more than a few blog posts. With a CMS writing a new post will be as easy as writing a Word document. I am going to focus on WordPress in this tutorial. Mainly because it is the most popular of all the CMS’s, it is what I use and it is highly configurable.

Creating a blog can be broken down into these 5 steps which should take more than 15 minutes to complete:

  1. Picking a topic.
  2. Finding and registering a domain name.
  3. Finding a web host.
  4. 1-Click install of WordPress.
  5. Customising the site to your style.

Step 1: Picking a topic

Your blog can be about anything you want, your dog, your cat, your kids, your love of origami paper, anything. However, unless you are purely writing for yourself as an online journal you are probably going to want to pick a topic to write about.

Generally people aren’t interested in the inner details of your day to day life. It is also not good to write about lots of different things. For example, say you wrote a great post about origami and some of the things you have made. Another origami enthusiast might find your post and be excited to read more. They browse around your site and read the next post which is about Mexican food, the post after that is about horse riding. You see unless they happen to have exactly the same interests as you, they will go off and find another site that does cater to their needs.

However if your site was dedicated to origami and the next post was about where to buy the best origami paper they are more likely to bookmark your site and come back again and again.


Step 2: Finding and registering a domain name

I have included the word finding in the title of this step, as the one thing that is a lot harder since 2001 is finding a domain name. The majority of domain names are already taken. Many of them are taken but are for sale with a high price tag.

NameCheap have a good domain search you can use which can be a fast way to find a domain and get suggestions. Hold off buying the domain just yet as I can get you one for free in step 3.

If your lucky may still be available, in which case I suggest you snap it up now even if you don’t plan to use it yet. If you have an idea for a blog name then try it it may still be available. I would avoid hyphens in domain names, it may allow you to get the name you want but people won’t remember the hyphen.

You should try and get a .com or regional domain name (e.g. as these are easier to remember, then the new ones such as .club.

Domain names can usually be bought with your web hosting but they can also be bought seperately. Some web hosts even throw in a free domain name to save you the hassle buying elsewhere (keep reading for your free domain name).

If the web host isn’t providing a free domain name then it is worth shopping around for a better deal.

I buy all my domain names from NameCheap. Domain names are available instantly after being bought and they provide dynamic DNS for free which is great for pointing a domain to your Raspberry Pi sitting at home.


Step 3: Finding a web host

You will find there is a huge number of web hosts to choose from. There aren’t many however that are reliable companies that you can trust with your website. The reason I mentioned above about buying a domain separately is because of how many times I have moved web hosts in the past. If you don’t fancy shopping around for a different web host every few months you might want to stick with this one:

Bluehost is one of the biggest web host in the world and they serve a staggering number of sites across the internet. They have a famous 1-Click WordPress install and optimised WordPress hosting to make sure your site is secure and fast. They also offer 24/7 support and a 30 day money back guarantee. If you are just starting out their lowest WordPress plan should be enough unless you plan on hosting lots of photos and videos.

Bluehost are one of these web hosts that throw in a free domain name when you sign up which is worth using if you don’t have one already.

Of course there are plenty of other web hosts around but I haven’t used them so wouldn’t want to recommend them on my website.

You can follow the instructions below step by step and you will have your site set up in no time.


Step 4: 1-Click install of WordPress

This step is going to be more than 1-Click as we need to signup for an account but you will see as we go through the steps how easy it is.

Go to Bluehost and from the menu choose hosting > shared hosting. There is an option for WordPress hosting but it is a lot more expensive even though WordPress can be installed on the lower plan.

From there, scroll down to the hosting plans. Plans start from $3.95/month and this comes with 50GB storage, a free domain name and the ability to have 5 domains and 25 subdomains on the same plan.

Bluehost pricing plans
Bluehost has 3 pricing plans available

You probably only need the Basic plan so click the big green Select button and we shall move on to the signup screen.

BlueHost Sign Up
The Bluehost signup screen

The signup screen will give you 2 options “new domain” or “i have a domain”. We are going to choose “new domain” so we can make use of the free domain name offer. Type in the domain name your found in Step 2 and click Next.

If your chosen domain isn’t available then you will get given a few alternatives to pick from.

Once your domain is picked you will be taken to the account creation page. You can either sign in with Google here or fill out the details the old school way. You also get to pick what additional addons you want. These range from domain privacy protection to site backups. You don’t need any of these to begin with but it might be worth signing up for one at a later date.

Bluehost Account information
Sign in with Google or fill out the account details section
Bluehost Additional extras
There a number of extras you can add for an additional cost. Domain Privacy Protection is worth it if you don’t want to get lots of calls from web agencies.

Below that is the payment information.

Bluehost payment information
Bluehost section for entering in payment information

Once complete you will be sent to a congratulations page like the one below. Here you will need to set up your password.

Bluehost congratulations page
Congratulations you are done!

You should then see the Bluehost dashboard. Bluehost actually installs WordPress by default so if you go to your new domain you should see your new site. If not you might have to wait a little while for the DNS to refresh which can take up to 24 hours.

You will be sent an email with instructions on how to login to your new WordPress site. Remember to change the password once you are in!


Step 5: Customising your site

So many tutorials stop before you get to this point but I think it is an important step. At the end of the day, it isn’t really your blog until you have made your mark. The main way of doing this is by installing a theme and customising the options.

Not all themes are made equal and how much you can change a theme will largely depend on the quality of the theme. Paid themes will allow you to change all colours and other styles while free themes might be more limited.

The recommended free themes you can browse in WordPress are quite good but will also be used by thousands of websites already.

If you are a developer or a personal blogger you might want to take a look at the DevUp Theme. This is my theme made by developers for developers that is currently being used on this site. Of course there a hundreds of good paid themes. Have a look at Creative Market for other premium themes.

If you have downloaded a good theme you should find the customisation options under Appearance > Customise. There, you should be able to change most if not all of the colours used as well as a few layout aspects.



So in 5 not so long steps you should now have a blog set up and ready to go. That is the easiest part done. The hard part is writing useful blog posts every week. That is something I can’t help with but pays off if you are persistent.

If you enjoyed this post on How to Start a Blog you will like what I have in store over the next few weeks. I am going to focus a lot on blogging, how to secure your site, how to get more traffic how to make money and even how Google works. You can subscribe to my email list if you want to get your website off to the best start.


14 SQL Query Performance Tuning Tips

I am going to start this post with a bit of a disclaimer. At heart, I am a .NET developer and not a SQL expert so if there is anything below you disagree with, I welcome the constructive criticism in the comments! Hopefully these SQL query performance tuning tips will be helpful all the same.

These SQL tips and tricks have come from experience of optimising SQL queries over the last year. In several cases these changes have taken queries taking hours down to a few minutes or even seconds.

SQL optimisation is a bit of an art. What will work on one server and data set might not always work on another system, so please take the below with a pinch of salt and do your own analysis.


Loops are a stable construct in any programmers tool box. SQL can do loops as well however they should be used with caution. In .NET we are used to looping over data. Dealing with data a row at a time can also make the logic simpler.

SQL has While loops and Cursors for this process. However, in most cases where I have seen cursors used they can be replaced with set based queries and joins. Loops and Cursors are fine for small one off tasks or batch operations but in my opinion, they have no place in a high performance systems.

If you are doing a large number of updates or inserts I would always recommend using a loop (see batching below).

Functions in the Where clause

Sometimes you need to transform the data before you can specify your filter criteria. This is sometimes done by using a function in the where clause. The most common place I have seen this is around dates. In some cases you aren’t bothered at what time something happened, just that it happened that day. So you will see something like this:

FROM dbo.SomeTable
WHERE CONVERT(DATE, CreatedDate) = '2017-01-10'

This is a problem. Especially if you are using user defined functions, as SQL can’t interpret what the value is going to be until after it calls the function. Dependent on your other criteria this could cause SQL to do a full table scan. It is therefore much better to use a date range in these cases.

FROM dbo.SomeTable
WHERE CreatedDate >= '2017-01-10' AND CreatedDate < '2017-01-11'

Doing the above makes it easy for SQL to interpret your query and therefore use the correct index. Note, I have used ‘2017-01-11’ instead of ‘2017-01-10 23:59:59’ as the later will miss off the last second of the day.

Continue reading

Why I switched from Windows to a Mac, and won’t go back

As a .NET developer I have spent most of my computing career with Microsoft at the helm. So here is my journey to this point and why I can’t see myself going back to Windows.

I started coding when I was 10, with a Windows 3.1 machine that my Dad had brought home from work (I assume they were already obsolete at this point). Since then I have used pretty much every Windows incarnation to date. With the revelation that the start menu made with Windows 95 and the stability brought from Windows 98. Windows ME (:shudder:), Windows 2000, XP, 8, 8.1 and now Windows 10.

To be honest, I quite like Windows 10 but the annoyances that existed with the previous versions are still there. Plus, I have had a few unfortunate circumstance over the last few years that have put me off Windows.

It started with Windows 8. The first version of Windows where I have had to Google how to do a shutdown. You can imagine my relief when they made the genius decision to put the shutdown button back on the start screen. However like many, I didn’t have the seamless upgrade to Windows 8.1 that I had hoped. I had some faith, that after Windows had installed the 170 updates I would be up and running with the new version.

Continue reading

Creating a mandatory Anti-Forgery token

One of the things I love about ASP.Net, is that a lot of the hard work that is required for a creating a secure website has already been done for you. It usually only takes a couple of lines of code to add these features in which means there are no excuses for missing off important security measures.

Anti-Forgery Token

One of these features is the Anti-Forgery token and it can be added to your MVC website with just 2 lines of code. So what is an anti-forgery token? As the name suggests it is a token to prevent forgery! In the same way that someone might forge a signature to pretend to be someone else, it is possible for a malicious person to forge a request to your website without the request coming from your website.

So how is this done I hear you say? Well lets say you have a form on your website for changing user details such as name and email address, and a hacker wanted to change these to something else.

The hacker could create a form on another website which matches the request your website is expecting and post to the same URL. The entire form could be in hidden fields and posted via an Ajax request on page load making it invisible to the user.

If the user is already logged in to your website when the other website posts the form, your website treats it as a valid request and will change the user details to whatever the hacker wants.

So how do we get around this?

Well in the same way that 2 factor authentication works on something you know and something you have. The anti-forgery token works as the something you have (sorry about the poor analogy). The server places a hidden field with a populated anti-forgery token into your form. When a request is made to your website, the server checks for the presence of the anti-forgery token and if it doesn’t exist or doesn’t match the expected value an exception occurs.

As the hackers malicious form doesn’t know what the Anti-Forgery token is the request fails.

Continue reading

Why can’t all programming books look like this?

I have read quite a lot of programming books over the years. A lot of them have been really useful in learning a new programming language and some of them have been less than helpful. Unfortunately, the one thing all these books had in common was how dull they were to read. It’s not necessarily the fault of the author, programming is more of a practical subject and reading pages on pages of code can get a bit dry after a while. Some books do try and add a bit of humour to break up the monotony but even this can get a bit annoying after a while (yes, I mean you Head First).

Continue reading

Problems with VirtualBox + Vagrant on Windows 10

I am big fan of Vagrant. I first discovered Vagrant when I was looking for ways of creating a development environment that I could transfer between various computers (I had a desktop and laptop I regularly worked on).  I even toyed with the idea of installing a Linux distro on a fast USB 3 stick to carry round. It was then, while in my search for the perfect development environment that I discovered Vagrant. However I haven’t got Vagrant on Windows 10 working until now.

Vagrant was working fine the last time I used it, mainly for WordPress theme development. I haven’t touched it for about 6 months now but after typing vagrant up and waiting I was soon greeted with this:

Continue reading

Best Practices for a RESTful API

Nowadays the web is powered by APIs. With applications being used on desktop and mobile, APIs are essential in allowing the code in backend systems to be reused. The most popular APIs from companies such as Facebook, Google, and Twitter use the RESTful API pattern.

Unlike other parts of your web site or app, your API should be designed to be used by programmers, like you. If you have ever used a badly designed API you will know how frustrating it can be to try and integrate with it. So what are some things you can do to make a good RESTful API.

Continue reading

The Big List of Free Pluralsight Courses for Developers

The Big List of Free Pluralsight Courses for DevelopersOne of the most important aspects of being a software developer is the ability to learn new skills quickly. Our industry is moving so quickly you have to keep learning new technologies so your skills don’t get old.

There are many great resources online for learning new skills but I have found Pluralsight to have the largest collection of quality videos out there. Most of the courses on Pluralsight are many hours long and made by well known developers such as Scott Allen, Troy Hunt, Scott Hanselman and Jon Skeet.

I should point out this isn’t a promotional post for Pluralsight, I am just happy customer.

What is a little less known about Pluralsight is that there many courses that are free to watch without an account. Here is a list of all the free Pluralsight courses I have found that would be useful for developers.

Continue reading

Analysing Google Play to find a profitable app idea – Part 5: PlayDrone

So far I have used the PlayDrone data to find out what the most downloaded free games, paid games and paid apps are. There are many useful queries that can be run to try and find a profitable app idea. For example, you could look at apps with lots of downloads but with a bad user rating. You could then look at the comments for that app and find out why the users are dissatisfied with it and make a better app! You could even get a list of all paid apps that have made at least £10,000 if you wanted. It could also be useful to look at apps that have failed, by running a query to find apps that have never been downloaded and then find out why, so your apps don’t suffer the same fate.

You can download a 735MB Json (JavaScript Object Notation) file that contains details of the 1.4 million apps on Google Play as of 31/10/2014 from the Internet Archive. I had some fun writing a console app that inserts details about all these apps into SQL, so that queries can be run against it. You can find the source code for this on my GitHub account with the imaginative name of PlayDrone2SQL.

Continue reading