When I started this blog years ago I knew very little about writing and marketing. This post is for those of you who want to benefit from my learning process over the years.

This article uses expanding headings. Click anything with an arrow to expand it.

Click me to expand me!

  • Well done
  • Click the title again to collapse it

I disregard a lot of ‘best practices’

Most articles out there will give you advice like ‘define a target group’ and ‘set goals for how much traffic you want’ etc etc. I do not take this approach.

My blog is my outlet to share what I love with others like me.Click To Tweet

In practice that means I break a lot of the blogosphere ‘rules’. For example:

  • I do not write on a set schedule
  • I do not have a clearly defined target group
  • I do not have website traffic goals
  • I do not keep active social media channels

This walkthrough summarizes what I learned in my personal approach. It may or may not work for you, though I think you’ll find these points helpful.

Start now, especially if you don’t need an audience

Many people think either one of two things:

  1. They have nothing worthwhile to say
  2. They don’t need an audience

To the first I say:

In the billions of humans there is always a group that wants to listen to what you say.Click To Tweet

To the second:

Build a blog now so that you have an audience when you need it.Click To Tweet

This post will seem simple, and it is

Especially the checklist might seem to some like “duh, what did you expect”. The thing is that most guides make blogging to complex, and it is not. Don’t get me wrong, there is a lot of optimization you can do (for example search engine optimization) but for starting a blog these are needlessly complicated.

Step 1: Your infrastructure

Namecheap domain checker

Your blog will run on a number of technical platforms. They are pretty easy to use. You will need:

  • A domain name (for example youramazingblog.com)
  • A webhost (the company that manages the computer your blog runs on)
  • A blogging platform (e.g. WordPress)

Choosing a domain

People have a lot of opinions about domain names. In my opinion there are only 2 criteria for a good one:

  • If you say it out loud, people can remember (so no ‘amazin4u.com’ like spelling)
  • Either it captures what you will write about, or keeps it vague enough (e.g. don’t write gardening advice on ‘museumreviews.com’)
  • It should be relatively short (so avoid thisblogissoamazingyouwillnotremembertheaddress.com)

To check out domain names just put them in the search bar at namecheap. You also can use their ‘bulk search’ option to look up the availability of many domains at the same time.

Note on taken domain names: it is usually a big hassle and very expensive to buy a domain name from another person. Instead of $10 you will likely end up paying thousands.

Buying domains and hosting

  1. Get hosting for your domain name (Namecheap is again pretty decent)
  2. Install WordPress on your hosting

Not sure how to do the above? Read through my previous guide. The basics are simple:

  1. Go to namecheap.com
  2. Try out .com/.co domains until you find one you like
  3. Add it to your cart
    Namecheap order screenshot
  4. Click the ‘view cart’ button and add their hosting plan
    Namecheap hosting screenshot
  5. Pay for the products
  6. You will be emailed login details, use those to log into cPanel

Installing WordPress on Namecheap

This will differ per webhost, so I’ll run through namecheap only. The main steps are:

  1. Log into cPanel using the info you got by email
  2. Click Softaculous
  3. Click on the WordPress logo (it’s a big W)
  4. Click on the ‘install’ tab and press the ‘install now’ button
  5. Set the domain to your blog domain (should be the default)
  6. Leave the directory empty, if it asks check the box that overwrites all files (if your system requires input use / as an answer)
  7. Set the site name and description (you can change this later)
  8. Set a username and password
  9. Click the install button
  10. When it’s done you can log in to your WordPress using youramazingblog.com/wp-admin

NOTE: If you bought the domain and hosting separately (so not in the same order) you will have to set the nameservers to the namecheap shared hosting ones. You can find this option under the main domain management page.

Namecheap has a bunch of FAQ questions about cPanel and WordPress here.

What to avoid

  • Stay away from wordpress.com, blogspot.com or hosted platforms
  • Fancy domain extensions like .ly/.me/.whatever, they don’t score well in search engines like google (some nuance there, but for now just go for a .com or .co)
  • Hosing plans above €5-10 a month unless you are expecting major amounts of visitors

The die hard webhosting option

There are some downsides to using regular webhosting. One being that you pay relatively much for performance, and you have no control over your server. In this section we’ll set up our own VPS server. Please note:

For most people regular hosting is fine, the below die hard guide is for geeks and other badasses that don’t mind things breaking on them.

Are you a student? Get $50 free credit here.

Follow these steps:

  1. Get an account at Digital Ocean and hook up a payment method (paypal/credit)
  2. Log in and click the create droplet button
    Digital ocean create droplet button
  3. Choose the Ubuntu 16.xx 64x
    Digital Ocean choose operating system
  4. Choose the $5/month droplet
    Digital Ocean Droplet size
  5. Choose a datacenter close to the place most of your users will be (this is not super mega important)
    Digital Ocean choose region
  6. Under ‘select additional options’ check ipv6 and backups (backups cost 20% extra, your call)
  7. Ignore the SSH keys unless you are a developer (in which case you know what to do there)
  8. Give your droplet the name of your domain and click the green button
    screen-shot-2016-09-24-at-10-22-45After your droplet is generated you will receive an email with instructions
  9. If you are on mac, go to step 10. If you are on windows download and install Git through this link, we will use this to connect to our server.
  10. On mac, open your terminal (look for it in your app drawer or spotlight). In windows open Git Bash (which you just installed). Either way you should see a screen that looks mega professional.
    Terminal screenshot
  11. Grab the email you received with login details
    Ssh details
  12. Go to your browser and type the ip (the number) into the address bar. It will not work. This is because the server is not configured. We’ll fix that next.
  13. Type ‘ssh root@theipfromyouremail’ and wait. When it asks if the key is ok type ‘yes’ and press enter. This will start the login procedure to your server.
    Ssh command
  14. Type the password. You will not see it type! And press enter after. It will now log you into your server.
  15. It will say “Changing password for root. (current) UNIX password:” Basically it wants you to choose your own password. So put in the current one, and then choose your own. Remember next time you need to use this new password. You are then logged in.
    SSH Logged in
  16. Whatever we type now does nothing to our own computer, but modifies the server in the Digital Ocean datacenter.
  17. Type ‘wget https://raw.githubusercontent.com/actuallymentor/setup-script-LEMH-stack/php7/setup.sh‘, this downloads the server setup script I wrote a while ago (read the license here).
    wget script
  18. Type ‘bash setup.sh’
    Run script
  19. Wait for the magic to finish. This will take a good 10 minutes usually. So long as stuff moves all is good. When in doubt, just wait. It’s finished when you see:
    Script done
  20. For the fun of it, out your server ip in your browser. You will see it not shows stuff, yay!
    PHP info screen
  21. Type nano /etc/nginx/sites/youramazingblog.com’ where youramazingblog.com is your domain. This will put you on a command line text editor. Your mouse does not work here, keyboard only.
  22. Go here in your browser, edit the domain names and paste the text into the terminal. Yu can also paste to the terminal first, just note that you need to edit the text with the arrow keys and keyboard.
    Nano screenshot
  23. Press ‘control+x’ and when asked if you are sure press y. Then press enter to confirm.
    Exit nano
  24. Type ‘service nginx restart’
  25. Now type mysql_secure_installation
  26. When asked for the root password, type ‘root’ and press enter
    Change root password: y (and then set a password)
    Remove anonymous users: y
    Disallow root login remotely: y
    Remove test database: y
    Reload privileges: y
  27. Type mkdir ‘/var/www/youramazingblog.com” (nothing visible will happen), this will make the folder where your website files will be
  28. Type “cd /var/www/youramazingblog.com/”, this navigates us to your website folder
  29. Type “wget https://wordpress.org/latest.tar.gz”, this wownloads WordPress
  30. Type “mv wordpress/* ./”, this will move wordpress to the current folder (it was extracted to a subfolder)
  31. Type “mysql -u root -p”, it will ask for the password we chose during mysql_secure_installation
  32. Type “CREATE USER ‘wordpress’@’localhost’ IDENTIFIED BY ‘password’;” but change the password to a password of your choosing. Also don’t forget to end with a semicolon.
  33. Type “CREATE DATABASE wordpress;”
  34. Type “grant all on wordpress.* to ‘wordpress’@’localhost’;”
  35. Type “FLUSH PRIVILEGES;” and then type “exit”
  36. Type “chown -R www-data:www-data *”
  37. Type “find . -type d -exec chmod 755 {} \;”
  38. Type “find . -type f -exec chmod 644 {} \;”
  39. Now in your browser go to http://www.youramazingblog.com/ and you will see this:
    Wordpress install
  40. Click “let’s go”
  41. Database name: wordpress
    Username: wordpress
    Password: your chose this in step 32
    Database host: localhost
    Table prefix:: wp_
    Click Submit
  42. If it says “can’t write wp-config.php” do the following:
    In the terminal type “nano wp-config.php”
    In here paste the content that wordpress showed you in the browser
    Control+x to save (press y and then enter)
  43. WordPress now asks for Basic site info, go ahead and type your information
    Website data
  44. Click “install wordpress”
  45. You can now visit your website at http://www.youramazingblog.com/ and login to the backend panel through http://www.youramazingblog.com/wp-admin

Want to enable super mega ukulele speeds for your website? This is easy, but might lead to some instability. Simply log into the server with ssh and:

  • Type “nano nano /etc/nginx/conf/fastcgicache.conf”
  • Change set “$skip_cache 1;” to “set $skip_cache 0;”

Step 2: Setting up your blog

Pick a theme

Out of the box wordpress looks pretty ugly. It is however capable of importing designs made by other people. Read this manual page that covers how.

To find good themes you can browse Themeforest. Personally I make my own themes, but I do not recommend you do this unless you do it as a fun programming project.

Generally I tend to find around $60 a decent price tag for a theme. Remember, you are saving yourself a $2000 developer by picking a theme instead of hiring a webdesigner.

How to install a theme

Installing a theme is relatively simple:

  1. Log into your backend (at example.com/wp-admin)
  2. Under Appearance click ‘themes’
    Appearence screenshot
  3. Next to the ‘Themes’ heading click ‘Add new’
    Add new theme
  4. Next to Add themes click ‘Upload Theme’
  5. Upload the .zip file you got when you bought/downloaded your theme
  6. Now activate your theme
    Activate theme

WordPress plugins you should use

Plugins are little snippets of functionality you can install to WordPress using the below menu item:

Wordpress plugin menu item


Read this page if you are unsure how to do this.

Step 3: Giving people a reason to sign up for emails

Popup example

The single most important thing for the long term success of a blog is a healthy email list. In my experience sending out email newsletters if incredibly valuable, and if done well people love it.

If you send newsletters you would want to receive, most people will love themClick To Tweet

The reason you need an email list is simple:

If you ever need help from a group of people like you, you'll have a great big list of them.Click To Tweet

I’ve used my email list for a number of things like:

  • Getting help promoting a research project
  • Asking for opinions on products I’m making
  • Getting help spreading the word on a project/product

How to choose a freebie

People are happy giving you their email if you offer something of value. In my experience:

  • Newsletter signups work if you have incredible content that people love, most people do not sign up for these
  • Free eBooks work very well in my experience. This blog for example gives away Scott Young’s free eBook on Holistic Learning
  • Reminders work well in my case, every one of my posts has a reminder/pdf signup box

In choosing a catch I suggest asking yourself what you would like to get for free, and then work from there. Maybe you’d love a pdf with amazing cake recipes/ Maybe you would enjoy a document explaining how to grow your own tomatoes. Perhaps a guide to choosing the best coffee? Take your pick.

Once you have decided, either create the pdf or ask someone who already created one if you can spread it for free.

How to implement a freebie

PDF signup

There are two big ways to offer your free product/catch. Each of them have benefits and drawbacks:

  • Signup boxes unobtrusive but people use them less
  • Popup forms work very well but some people hate them (note: most don’t mind the popup so long as the offer is valuable to them, useless popups suck)

I solve this dilemma by simply implementing both. Note though that my popups are only shows once per user to prevent the ‘in your face’ factor.

Remember the golden rule: Don't be annoying. You are trying to be useful to people, to trying to abuse their attention.Click To Tweet

How to manage email lists

There are a myriad of ways to manage email lists:

If you are serious about setting up a long term blog I’d recommend using Sendy. While it is harder to set up it is incredibly cheap in the long run.

All of the above providers will give you a piece of html code (a <form>) that can be pasted anywhere to show a signup form to your email list.

Popups and boxes in WordPress

There are a number of ways to implement signup forms. The most common are:

  • Putting a form in a widget
  • Using a popup
  • Adding forms to the end of articles

How you want to add your form will depend on where and how you manage your email list. Many people starting out with MailChimp simply copy and paste their sign up for for example.

To add a form as a widget navigate to Appearance > Widgets and use the Text widget to paste your HTML form into.

While I personally write my own plugins I would recommend you have a look at the following ones for popups and other optin measures:

Step 4: Write posts

As mentioned before, I write things for people like me. It’s a way to get things off my chest, and usually at least some people enjoy reading it. There are a number of important principles to keep in mind.

Write some posts before you go live

Before you start promoting your blog to the world, make sure it at least has some articles on there. The you only get one first impression, so make it count. Don’t worry too much about it though, this is not a make or break moment for your blog. There are plenty of blogs who flew under the radar for a long time. Not using the initial momentum would be a shame though.

Write long evergreen articles

I have a preference for long and in depth articles. The reasons for that are simple:

  • People appreciate in depth articles
  • The posts are usually relevant for years
  • The content is more likely to be useful

You can write really nice short posts, and they can be helpful for sure, but my personal experience is that long articles do far better.

Quality over frequency

Many bloggers recommend that you post once a week or even once a day. While that is a valid strategy, in my experience writing good things gets you a far better audience that writing more frequently.

There are stretches of months where I do not write articles. Sometimes because I’m too busy, sometimes because I feel I do not have enough in depth or quality knowledge to write about something.

Start publishing

While it sounds conflicting to the above, I urge you to start publishing things as soon as you can. I’m not saying to publish crappy material, but don’t turn perfectionist.

It will take you months if not years before you have determined your optimal styleClick To Tweet

Only once you start publishing will you get feedback from your readers.

Step 5: Tell people about your blog

It sounds so simple, but to many people it is now. It takes a lot of courage to create something and then tell the world that you did.

Many beginning bloggers (and programmers, designers etc) promote their blog anonymously because they fear their friends and/or family would not approve.

In most cases the fear is unfounded though. Telling people about my blog (which in the beginning was quite, ehm, amateuristic) led to the best feedback and encouragement.

Once you shared your stuff on your own channels try sharing it on other social media. There is no ‘best’ channel. Try them all and see which works best for you. In my base that is Reddit and my personal accounts.

Next steps and advanced tricks

Once you have the basics up and running there are a number of things you can do to grow beyond what you are now.

Guest blogging is a great way to get visitors

In the beginning you will not get a lot of visitors. If you want to attract them the best way in my experience is to write an article for a far bigger blog, and to link to your own blog in that article.

When I started blogging I wrote a post for Hack the System, which singlehandedly sent me thousands and thousands of visitors.

When doing guest blogging:

  • Pick blogs with an audience that you like
  • Blogs that ‘sound big’ are not often useful (e.g. the blogs of magazines)
  • Be sure that your guest post are the best content you created

If you are considering guest blogging, read this article.

Search engine optimization

In the past people tried to trick search engines like Google into showing their websites. More and more though Google is getting far better at filtering articles. My experience over the past years has been:

The best search engine optimization is to ignore search engines and write for peopleClick To Tweet


  • Thanks so much for this post. Steps 3 through 5 are most helpful for me, as Steps 1 and 2 are generally plastered all over the internet, but no one really talks enough (at least in my opinion) about Steps 3 through 5. I really appreciate this as I’d like to start a blog myself. Also, you mention that if you’re considering guest blogging to read “this” article, but there is no link.

    • Glad you enjoyed it 🙂

      This started as a little how to for a friend. 3 through 5 are some of the most important ROI factors in a blog. Most beginner posts indeed don’t cover them.

Leave a Reply

Your email address will not be published. Required fields are marked *