Recent Posts

Curve – the solution to business FX woes?

About a year ago, I decided that enough was enough, and I had to find an alternative to Paypal to cut costs. At the time, we were paying PayPal around £300 per month, which was at their 2.9% rate, generally plus a 1% cross border fee (i.e. we were paying them almost 4%). Although Elavon gave me the runaround, Worldpay offered a surprisingly good solution for a fraction of the price. Moving from Paypal to Worldpay was one of the best decision I’ve made.

FX Fees

However, I’d yet to find an equally good solution to the smaller but still substantial FX fees we pay for various software and hosting products in USD and EUR. I’d looked into currency accounts where the cost and headache of getting one and reconciling it would have outweighed the benefit and “travel” credit cards that, instead of paying cashback, simply don’t charge FX fees.

I didn’t want to have to reconcile two credit card accounts, nor did I want to give up the Membership Rewards that I get from running business expenses through my American Express. However, I was deeply unhappy that American Express charge a 3% FX fee on top of the £450pa card fee.

To make matters worse, although I have been a happy occasional customer of Transferwise, and was eagerly anticipating their stress-free currency account service, when it was launched, I realised that it doesn’t come with a card. Most of these software and hosting services rely on card payments.

Imagine Curve

I read about Curve on a travel site. Essentially, it’s a prepaid card, similar to Revolut. However, whereas Revolut prohibits business use, Curve is specifically for business use. Well, allegedly. The offers for Topshop, Goldsmiths and Dorothy Perkins might suggest that it’s a commercial card purely because commercial cards attract a higher acquisition fee but that’s not my problem.

The other key difference, which is a big help from a business point of view, is that rather than having to keep the card topped up or getting another statement to reconcile, each transaction is converted to GBP immediately and billed in GBP to the card of your choice. In this case, my business debit card. Therefore, I can rely on my business bank statement and I have a receipt from Curve and from the merchant with a complete paper trail.

It gets better

Not only is this a very easy way of cutting FX fees from 3% (Santander / American Express) to 1% (Curve), you can also attach several Visa and Mastercard credit and debit cards to it and pick the right card for each purchase. You can even reassign the card a purchase is funded from after the purchase. Again, this is probably more useful for personal users, of whom I’m sure there are many, because a the FX fee could be offset by using a cashback Visa/Mastercard credit card.

Also, you’ll get £5 free on the card the moment it arrives (code: TENPY) and the whole order, verification and activation process is really smooth. The limits are also, in my view, reasonable for most small businesses.

To make it perfect

I understand that Curve have to sustain grow their business and to do that, they have to charge their customers. However, I would like to see an option to pay a fixed monthly/yearly fee in place of 1% of my FX spend. This would persuade me to use the card more without having to think of the fee at each purchase, especially with larger purchases.

Rant: expensive developer programmes

Before I spoke to Sage yesterday, Apple topped my list of biscuit-taking developer programmes. Getting anything on to the App Store is a convoluted process requiring a myriad of Apple devices, one or more paid subscriptions and navigation of a bloated IDE and a completely unhelpful QA process.

If you want to create an iOS app, you’d need an Apple computer (£400-4000+), at least one device to test on (£400-1000ish) and a subscription ($99 per year) even to keep an existing app on the App Store. After creating the app in Xcode, which is awful, you’d create a multitude of certificates and submit it with the built app to Apple’a QA process. Recently, the QA team seems to be providing the same rejection reason to every developer – it doesn’t support IPv6 – even if the problem is actually something else. Therefore, developers have to guess what Apple might not actually like about the app and re-submit.

However, developers can’t simply ignore Apple products because their market share is so great.

Yesterday, I spoke to Sage, the accounting software provider, about their development programme. It costs £1500+VAT per year just to be granted the right to create software that modifies the Sage database. By comparison, a perpetual licence of their Sage 50 accounting software, that is by far the most widely deployed version, can be bought from a distributor for around £380+VAT.

Sage is reportedly keen to encourage developers to get on board. They need to realise that their relationship with developers is mutually beneficial. Xero, which seems to be eating Sage’s market share gradually, has a much better approach and, as a result, has a huge range of options for users who want to add functionality to their accounting package.

Good to Great by Jim Collins

Good to Great by Jim Collins analyses commonalities between highly successful businesses and their differences to mediocre businesses.

Contrast to most other books in this category

The books I’ve read in this category have had at least one good take-away point but many of them are just that – a good take-away point wrapped in a lot of fluff so that something can actually be distributed and sold. Nobody would pay for a few bullet points on a postcard. I would put Lean Startup in this category – the only key message in the book can be summarised by the below image.

Spotify's MVP model

In contrast, Good to Great’s author is Jim Collins. He is an academic and the book draws on a the findings and the journey of a large research project that he headed at Stanford University.

Brief summary

The research team selected companies listed on the New York Stock Exchange that out-performed the average for their vertical for 12 (?) consecutive years by at least three times. This is important to rule out the tail wind of an industry-specific boom, the tenure of one individual and happy coincidences. Picking publicly listed companies means that financial data is easy to come by and as accurate as possible.

The author identifies twelve companies and for each, identifies a comparable company in the same vertical that performed roughly on average for the same vertical in the same period. The book explores a series of commonalities between the companies in the first category and the differences between them and the comparison companies. The focus is on the people within the company – their leadership skills, their worldview and so on.

What’s reassuring for me

I didn’t read this book for reassurance. However, the book devotes a chapter, that is preceded by a clear message that it is a particularly important chapter, to what I had come to believe is the most important skill for a small business owner.

Brutal honesty

Companies are full of numbers – profit, revenue, growth rate, customers acquired and lost, people acquired and lost, marketing ROI and so on. However, sometimes the numbers aren’t what we want to see. Perhaps a period was turbulent and the numbers for that period are embarrassing. Perhaps one project was particularly bad and distorted the average – and it feels easiest to move on and forget about it. Perhaps some people within the company generate much less value than others but fixing it could open new a can of worms.

What I have come to believe is the most important skill for a small business owner is the ability to be brutally honest. That is, to start with unbiased numbers, to do broad and unbiased analysis regularly, to draw unbiased conclusions and to act on them without bias. It’s often easier to gloss over a subject, to accept a situation as inevitable and to tell the message that you want to tell.

However, by conducting broad, regular and unbiased analysis, forming unbiased conclusions and acting on them systematically, you can start to work on making the changes you really need to make.

Docker for CI/CD

As our team has grown, we’ve seized the opportunity to improve processes that had previously been held back by our small size. Steering an organisation towards continuous delivery and away from the waterfall model is interesting in itself but for now I want to focus specifically on how well Docker is suited for CI/CD.

Docker recently (relatively) rolled out a tool called docker-compose. Very simply, it’s a YAML file that you can create yourself in under a minute that defines the set of Docker containers your application uses. For each container, you can either use your own Dockerfile or one on a public repository. You can also set any environment variables, links between containers and where your project should be mounted in each container.

For the developer, it’s remarkably simple but for the development process, it’s a paradigm shift. Now that docker-compose file has been created, it can be added to your Git/SVN repository so that not only is your code on the repository but the environment in which it runs is too.

This means that, if you deploy your application using the docker-compose file in your repository, in your staging environment, and everything works, then there is very little that would stop it working if you repeat the same process on production. It also means that, because the process is contained within a YAML file, if something does go wrong, not only do you have an audit trail for your code to help you but you also have one for the environment in which it runs.

This is the foundation of CD – but what about CI?

Well, if you use programmatic tests – be they unit tests, frontend test and/or server configuration tests, you can write a small script that runs them and add it to the repository as well. After setting up your containers with docker-compose, you can run your tests on the Docker containers it creates. If the tests pass on staging, it is very unlikely they would fail in production.

I can’t overstate just how easy this is and how well it can work. In just two months, we’ve moved all of our development to Docker-based CI/CD – and we’ve written our own software to automate all of the heavy lifting:

  1. We have a web hook set up in GitHub so that GitHub reports each push
  2. Our system (built in 2 days) runs clones the repository at the commit that was just pushed
  3. It then runs the docker-compose file contained within the repository and runs tests specified in a separate YAML file on the corresponding containers
  4. The output is captured and stored in the system and we get alerted via Slack if a test fails (typically we know if we’ve broken something within 3 minutes of pushing)
  5. If all of the tests pass and if the commits are to the master branch, another command could be run to copy the repository at that commit to production.


Ubiquiti Networks EdgeRouter Lite review

About 2 years ago, our small (tiny at the time) company moved into an equally small office. Having an Asus AC58U VDSL router at home that offered good reliability, throughout and control at home, I bought an AC58, the cable version, for the office. No major problems until recently.

We now have about 15 VMs, 6 computers, a smart TV, an Airtame, a smart printer and various other SIP and mobile phones and tablets connected to a 50Mbps symmetric connection. During the day, our developers are browsing the web, listening to Spotify and the SIP phones are making and receiving calls. At night, the VMs run backups.

Packet loss became frequent, latency increased and the DHCP server often did strange things.

Ubiquiti Edgerouter Lite

I took the opportunity to get us an EdgeRouter Lite from Ubiquiti Networks, a 3-power firewall/router that can supposedly do 1 million packets per second. It runs Ubiquiti’s own EdgeOS which seems to be Unix based and comes with a great GUI and an apparently powerful CLI (which I’ve yet to try).

DHCP issues are a thing of the past (though admittedly we took the opportunity to statically address some equipment), latency is noticeably lower and throughput is noticeably better. The old Asus router is now being used as an access point so even wireless devices have benefited. The next step will be to replace the Asus router with a dedicated access point with a stronger signal so that the meeting room in another part of the building can benefit from our connection.


I’ve not had the chance to test the CLI yet, or the need to use it. However, the GUI (after updating it) is great albeit missing a few nice-to-haves. You can configure multiple networks and routing tables for each. You can configure QoS and SPI if you want them. You can also configure a range of more advanced settings such as MTU and OSPF.

What’s missing – well, historic analytics are only available when SPI is enabled, meaning that you have to trade privacy and throughput for analytics, if you want it. The routing table doesn’t let you set the remote IP address – so if you want to expose a service to the WAN,  it has to be publicly accessible.



The adage, “buy once, buy well” applies to this router. The consumer versions that do include WiFi offer less control and seem to fare worse in user tests so this is a good option for home as well as work. I wouldn’t hesitate to use this for a small group of servers in a datacentre environment either.


Airtame review

Airtame is one of a myriad of HDMI dongles to wirelessly connect computers to TVs. Airtame is, annoyingly, one of the more expensive options but there seems to be a steady supply of new and unwanted units on eBay at much more reasonable prices.


There wasn’t much of an “unboxing” experience, perhaps because their target users are corporates and public sector organisations. It looks like a USB stick so you might expect it’d be a similar size – it’s noticeably larger than that and, depending on the port layout on your TV, it might preclude the use of the neighbouring HDMI port. There is an extension cable in case your HDMI port is on the rear of the TV and the TV is wall mounted, and a USB cable to plug into the TV to power the unit.



The setup was very, very easy. Switch the TV to the appropriate HDMI input and switch your computer to the WiFI network displayed on screen. Then, open the Airtame app for Windows, Mac or Linux (!) and you can (optionally) configure it to use your existing network, set up a screensaver, set up a password and so on. The ad hoc network makes setup quick and easy, and makes the unit suitable for taking with you. Just as it’s easy to take it with you and present anywhere, it’s also very easy to leave it attached to your TV and let guest speakers connect with minimal preparation.


The performance is surprisingly good. With the Airtame and my MacBook Pro connected via AC WiFi, the lag, although noticeable, was much shorter and less frustrating than expected. It’s not well suited to movies but for presenting – either with a slideshow, short video clips or sharing your screen, it is very smooth.


I highly recommend this product. The companion apps are great, performance is great and the ease of use in unparalleled. This is the device for you if you hate faffing with technology when you’re already running late.

Recruiting software engineers

The dynamics of tech businesses are often said to be unusual, from the extensive freedoms given to developers, to the scale of funding that is thrown at American and Canadian startups, to the willingness. to take on immense challenges. This week, The Economist commented on the unusually short period in which shareholders often demand a return on their investment.

It’s often said that talented software engineers are unique in that they are as highly regarded as traditional professionals (doctors, lawyers…), intelligent, well paid, but also often work from home, late at night, after a few beers. A tshirt, jeans and messy hair are perfectly acceptable and, for those who do work in an office, the office is rarely just a series of desks and chairs – pool tables, stocked fridges, mini-golf courses and so on are all justifiable.

The reason for this is well expressed in the first chapter of Peopleware. People who work with their hands are often interchangeable parts of a machine and sometimes easily replaced due to the abundance of labour. People who work with their minds make a unique, multifaceted contribution. It’s for this reason that, in my view, nothing short of the best fit should suffice when recruiting. A bad fit could do more than add dead weight – it could change the overall company dynamic for the worse.

Around nine months ago, I realised that I would need to grow our (very) small team, and that whereas great clients weren’t in short supply, people who can do more than just implement functionality are in short supply. I approached three recruiters. One had unique access to talent at the local university, another was a sole trader and the third owns an established recruitment company. The latter two claimed to specialise in tech recruitment roles and came recommended to me.

We would expect to pay them an absolute minimum of £3000+VAT for each candidate that we recruit. We would expect that they would weed out the majority of candidates before we see them as they are obviously unsuitable, then we would interview the rest and perhaps, we would make an offer of employment to something like one in 20 of the original list. In other words, we should expect to pay an absolute minimum of £150+VAT for each remote possibility because it takes time to build up the list, filter it, meet good candidates, buy them a coffee and chat to them, and so on.

In reality, however, I found that I was constantly pushing all three recruiters to action and giving them a range of tools to broaden their search, such as detailed profiles of people who I know would be a great fit, great flexibility with regard to salary and a willingness to meet any candidate they can find myself.

After some time, I realised the problem. Software engineers are inundated with recruiters sending them copy-paste recruitment adverts whenever their Linkedin or GitHub profile contains certain keywords. A great example is how software engineers with “Chef” in their Linkedin skills list, when it is obvious that their culinary skills are not their strongest asset (!), are targeted for food service jobs. As a result, techies tune out recruiters and recruiters scale up their automation in the hope of finding anyone who might be a suitable candidate. It’s a vicious circle.

Realising that the time I used pushing recruiter and trying to scout out an effective recruiter could be better spent, I attempted it myself. I built up my own lists from word of mouth and highly targeted Linkedin and GitHub searches, and I pestered everyone I knew who could feasibly know someone who could know someone. I travelled up and down the country and bought an awful lot of coffee. I had much greater success than I had expected because, as it happens, candidates prefer to speak to someone who understands the role and is able to make decisions, and universities, public bodies and friends of candidates all like to see more and better employment.

It took about a month – but I finally had a short list of great people who I knew I could work with, and who I knew were willing to consider a change of career. They all had other commitments, from a PhD thesis to complete and submit, to leases, notice periods and so on. That’s ok though, because I know that between now and Christmas, I there are 6-7 great candidates who will be willing and able to make the move and I know that every one of them would be a great fit.