Freelance Diaries #2 - Prospective Clients

Today marks three week since I started freelancing. It's crazy how fast it's gone by. These last three weeks have been all about one thing; sales!

If there's one thing I've learnt, it's to never stop selling. You might think a project is in the bag, but until the deposit has been paid it is not guaranteed (even then you never truly know). Already have a two month project? Then you should be aiming to book a project for after.


  • Number of deals: 15
  • Deals lost: 5
  • Proposals written: 4
  • Estimated value of all proposals: £71,500 - £91,500

Organising Deals

To help me keep track of all my deals I am using a website called Pipedrive. This is what my Pipedrive dashboard looks like:

Pipedrive uses a similar layout to a Kanban board. You can add, remove or change any of the columns to suit your needs and add or move cards ("deals") around the board. It also has a load of other features like: bcc'n emails and "activities", but I like to just keep it simple.

Contact Made

Once there has been two way communication between the prospective client and I, I will add a deal to the Contact Made column. During this time we would have spoken about the project so that I can get an understanding of the main concept. It is also very important to check that they are aware of costs, time and my payment terms. If app development is new to the client I usually highlight a small and large portfolio piece of mine and explain how long they roughly took to complete.

Proposal In Progress

I've uploaded my proposal template on Github for anyone to use. It's pretty straight forward. I start off with describing the audience of the project. Working on Togethera taught me that building for your audience is crucial. Then I move onto an overview of the app; this is basically a user story of the main flow of the app.

Next it's the technical overview. If I'm also building the web API I will layout some rough model designs. These are not final but it's a very useful exercise to get an overview of how to organise the data. For the app I write a overview of all the potential screens. If there are already designs, then I put an image of each screen into the proposal and give an overview of it's functionality. Throughout the proposal I also highlight any questions, recommendations or ideas that I have.

Depending on the size of the app there could be a couple of "main features". These are the focus of the app. Is it a weather app? Then viewing the weather forecast is the "main feature". For the main features, I just go into more depth.

If the screens haven't been designed yet then I'll use POP to put together a mockup. I write about doing this in a previous post.

The majority of projects will use third party services. Whether that's S3 for file storage or Intercom for customer support, I write them all down. Sometimes they won't have their own SDK's so I might need to write a small (or maybe large!) library for the API.

Below this I highlight any unknowns that I have. Having too many unknowns makes it hard to give a semi-accurate estimate.

Last but not least, is the estimate. This will either be a single value or a range.

Proposal Made

Once the proposal has been sent, I'll move the deal into the Proposal Made column. From here it will either go two ways: they reply and the deal is moved into Negotiations Started or I don't hear anything back...

Don't panic, it's cool, they don't hate you.

So far, pretty much every time the client has been refining or rethinking the idea, trimming down on some feature or just awaiting input from their colleagues. After about a week I usually send a follow up email to check if they had a chance to look at the proposal and if they have any questions.

Prototyping With POP

There are lots of prototyping tools out there, though I find that a lot of them are focussed on designers. Their focus being that you have a Sketch mockup and want to turn it into something that looks and responds as much as possible like a real app. What I wanted was a prototyping tool that was aimed at the "before design" phase.

I then found POP. In short, POP lets you take photos of your hand drawn mockups, add tap areas and link them all together. 

Here's an example of an app I'm currently working on:

iPhone Stencil

To make drawing the sketches quicker and to give me a rough screensize guideline, I had a iPhone 7 sized stencil designed and 3D printed!

It's not 100% perfect yet but I think with a few more design tweaks I think it will be awesome. I'd love to have them in metal too.


Pact Coffee ASAP Button

I'm a long time subscriber to Pact Coffee (referral link), it's awesome and very reasonably priced.

It has a great feature where you estimate the number of coffees you drink per week so that they can send you your next bag just in time before your previous bag runs out.

Though, some weeks can be tougher than others and you suddenly find yourself quickly running out! 😵

No problem, you can just login to their website and click a button that says "Ship today", but by the time you have made you coffee, ate a biscuit, read an email and got back to your desk, you forget 😰 At least, this is what happens to me.

This week has been all about writing proposals, so I thought I'd take a break and write a simple one button iOS app that would change my order to "Ship today".

Pact do not have an API so I figured I'd have to just scrape their site. I threw together a small Rails app that would act as the API for the client. At first, I tried to use Mechanize though I then realised the Pact site is written in React (at least I think). Mechanize doesn't work with Javascript. To get around this I ended up using Capybara and PhantomJS. I built two endpoints: "auth" and "ship today".

The iOS app is super simple. It just implements the two API endpoints, stores the email and password in the keychain and I threw 1Password in there because every app should have 1Password integration.

Since I've built this hacked together API, it would be great to connect some sort of IOT button to it. 

Freelance Diaries #1

On the 1st January 2017 I am going freelance 🎉. It has been about 3 years since I last freelanced.

I've decided to try and keep a diary to share my experiences, lessons and the highs and lows. This first post is focussed on getting started, what do I need? It will be localised to the UK, but it's likely your country has a similar setup.

I've also created a repo on Github with useful freelancing resources.

Getting Started

So after much thought, I decided to go freelance. Before that official "I'm freelance!" date arrives, there are few things I needed to take care of:



It's very possible that thing's will start slowly, especially, if like me, you are starting at the start of January. 

I don't want to force myself into having to take crappy work. To give myself some freedom, I saved around £9K.


Registering a LTD Company

There are bunch of reasons to have a LTD company, rather than being a Sole Trader.

Registering one is really easy. The Gov UK website has lots of information about registering. You can also use a service like 1st Formations, that will register the company for you plus other things like VAT.


VAT Registration

You will need to register for VAT if (dated: 29/12/2016):

- Your VAT taxable turnover is more than £83,000 (the ‘threshold’) in a 12 month period
- You receive goods in the UK from the EU worth more than £83,000
- You expect to go over the threshold in a single 30 day period

The first rule only really affects me. However "VAT taxable turnover" is quite vague. I'm currently waiting to hear from my accountant about what exactly is "VAT taxable turnover". For example, if all my work is from the US, I would presume that it wasn't "VAT taxable turnover". ¯\_(ツ)_/¯ TLDR: if any doubt ask a professional.


Business Bank Account

In the UK, there is no legal requirement to have a business bank account for a LTD company. However, I find it just cleaner to keep all business activity separate from my personal account. Plus my poor accountant will have a headache trying to work out what transactions are business and what transactions are me buying dishwasher salt.

In the past I have had my business bank account with HSBC. They were perfectly good, though one issue I had was that whenever I wanted to sync Freeagent with the account, I had to input a key code. This would mean that the account would rely on me to keep everything in sync. I've decided to go with Santander this time as a key code is not required to sync with Freeagent. 



I would really recommend getting an accountant. They will save you money, time and stress. Just do it.

I really like Freeagent so my main requirement is that the accountants can use Freeagent.

Freeagent has a webpage showing some of the accountants that use it's software.

I have chosen Gorilla Accounting. They seem heavily focused on freelancers and have a reasonable flat rate of £85/month. I've only just registered with them but will update this post if I'm unhappy and choose another company.


Business Insurance

Insurance is something you don't think you need it until you need it, then it's too late. Same as the accountant, just get it.

I'm going with Jack. Like the accountant, it's focussed on freelancers and the website is really nicely done. Plus, you get some cool free stuff when you sign up.


All Set!

That's it! All pretty simple. If you're interested in going freelance or just have any questions, feel free to email me or leave a comment below!


Automatically Controlling a Dehumidifier with a Nest


On the desk I have a Nest. For those that don’t know, the Nest is a “smart” thermostat. Along with being able to do Thermostat things smartly, it can also detect humidity.

Wouldn’t it be cool if, when the Nest detects that the humidity has risen past a certain threshold, the dehumidifier is turned on and is turned off again when it goes below the threshold? Of course it would be…

Graphs are awesome too, so let’s throw a graph in there, showing outside temperature, inside temperature and humidity.

To get started, you’re going to need a few things:


I created two recipes; one to turn on the dehumidifer and one to…well…turn off the dehumidifer.

The recipes are simple. They use the Maker channel and the Wemo switch channel.

The Maker channel basically exposes a URL that we can trigger by sending POST or GET requests too.

Installing Recipes

Off Recipe

  • Visit here
  • Set Event Name to low_humidity
  • Select your Dehumidifier’s Wemo Switch
  • Click Add

On Recipe

  • Visit here
  • Set Event Name to high_humidity
  • Select your Dehumidifier’s Wemo Switch
  • Click Add

Maker URL’s

You need to get your Maker URL. You can get this by:

  • Visiting here
  • Click “How to Trigger Events”

Now copy that URL. It should look something like:{event}/with/key/XXXXXX

Next, we need to create two URL’s. One with low_humidity event and one with high_humidity. You should now have:

Deploy To Heroku

  • Go to this Github repo
  • Click the magic Deploy To Heroku button

Almost there, just two more things. Heroku should now ask you for some environment variables.

  • Nest email address
  • Nest password
  • IFTTT turn on URL (high_humidity event)
  • IFTTT turn off URL (low_humidity event)
  • Humidity threshold
  • Forecast IO API Key

Last but not least you need to setup the Heroku Scheduler.

When viewing your application in Heroku, there should be a “Heroku Scheduler” addon. Click it. Add a job to run rake collect_reading every 10 minutes. It should look something like this.



You should now have a webpage.

To test everything out, you can go to your application settings in Heroku and change the HUMIDITY_THRESHOLD config variable to something really low. When the scheduler next runs your dehumidifer should turn on!

Now if I could only automate emptying the dehumidifer…