How I Work From Anywhere in the World
I am currently in Perpetual Traveller mode, living out of a suitcase and slowly drifting around the world while running my business. This is made easier by an array of tools and websites which I think are wildly underappreciated.
What follows are some indispensable tools for the travelling hacker. And no, this isn’t some clickbait-y listicle. There isn’t a single affiliate link here.
Global heat map
Exactly where I travel to is largely dictated by weather and cost. I think the easiest way to coordinate this is by making a rough plan of where you want to be over the next several months, with weather being the first data point to filter on. After all, there are plenty of wonderful places in the world, but there are very few that are pleasant all year round. Those that are, e.g. Monaco, are usually prohibitively expensive. So the first question is:
Where in the world is the weather nice in March?
To answer that question, I use this interactive global heat map on Tableau. You choose an acceptable temperature and precipitation range, and a week of the year, and it shows all the places in the world that fit within those desired ranges.
Once you know roughly where you want to be in a given month, you can start whittling down further by things like cost and culture. The image above suggests I’ll want to be in the southern hemisphere in March, but where exactly? Well, I know the US is relatively expensive so I’ll give that a miss. I assume Mexico is quite expensive because the tourists who travel there are probably mostly US citizens, and thus have money. I don’t know much about South America, but there appears to be significant political unrest. It’s also quite far from where I am now. Much of MENA is quite dangerous and not exactly culturally liberal (though I look forward to returning to Morocco at some point). India and Sri Lanka both seem promising. South-East Asia would be an ideal choice. Australia is too far, too expensive, and currently on fire.
Perhaps unsurprisingly, I’m flying to Thailand next week. I’m not too concerned about the Coronavirus; judging by the numbers the mortality rate is quite low.
It’s important to remember that while it’s a good idea to stay abreast of what’s happening around the world, media sensationalism sells copies. Read, but don’t be consumed by it. The world is not going to end in 12 years. We won’t all die from this new virus. We are not on the brink of World War Three.
Travelling somewhere is one part of the cost equation, but actually being there is another. I can comfortably afford a train ride from Poland to Switzerland — and I love Switzerland — but living there longer term would be a struggle financially. I use the Cost of Living Comparison tool on Numbeo to try to understand how far my dollar will go.
Speaking of finances, you can sometimes make your dollar stretch even further if you’re willing to get creative, and you don’t even need to be a couch-surfing hippie. House-sitting is a potential way to live rent-free (often in very nice properties in idyllic locations). Sometimes this involves taking care of the owner’s pets.
Another option — if you don’t suffer much from seasickness, and you can work with only a semi-reliable internet connection — is going sailing. There are plenty of people with boats but nobody to sail with. There are sites like Find a Crew that connect aspiring deckhands with boat-owners.
If internet connection is a major obstacle to the latter option, consider this anecdote: I chartered a yacht between Athens and Mykonos for a week, and I had reliable, fast WiFi — faster than any mobile connection I’ve ever had in the UK — in the middle of the sea all week. I wrote code and worked as normal while sitting under the stars on top of a catamaran while keeping watch on my night shift.
I still don’t know where that WiFi signal came from.
Scott’s Cheap Flights
I’d rather not fly if I can help it, but I’m not yet in a position — not financially nor temporally — to afford to travel everywhere by train. You know how everyone wants to make millions and then sit on a beach and plough through Mojitos? Not me. I want to make millions and then travel by train from Scotland to Singapore.
So that only leaves flying (it’s a sad time we live in where there are fewer options to travel by cruise ship). There are many potential travel hacks around flying, but to be honest I don’t know of many. One thing I did make use of was a service called Scott’s Cheap Flights. You would sign up, and they would send you an email every so often with extraordinarily low prices on long distance flights.
Unfortunately for some reason SCF has stopped sending me deals; I think because my “global base” is Europe. That’s why I’m not linking to them. However, I’m quite sure they had a number of competitors, so with a bit of searching you’re bound to find a service that fills this need.
For an idea of the potential savings, I usually pay around £800 for two return tickets to Bangkok from somewhere in or around Europe (usually Warsaw, Kyiv, or Moscow). The SCF service once sent me a deal for the same price between Kyiv and Bangkok, but in business class! When you’re travelling for 16 hours, that kind of upgrade makes a world of difference.
Mark Smith is the hero we need, but not the hero we deserve. I love The Man in Seat 61. It’s one of my favourite websites, and it’s made in such a way that can really only be done by someone who cares deeply about their work. I refer to this website all the time.
Train travel is my preferred way of moving around a continent, especially when it’s an overnight trip and you have your own compartment to sleep in as you gently roll through the countryside. Exactly where you are in the world makes all the difference, of course. The trains in Europe are wonderful. The trains in the UK are an embarrassment. In Poland you can ride on the Pendolino for a few hours between Gdynia and Warsaw for €30, and sit in the restaurant on the train with a cold beer and a delicious schnitzel made by the on-board chef. In the UK, a ticket for the same distance will cost you more than three times that, and the “meal” you’ll get for the same price will be a burning hot microwaved panini. Garbage.
A couple of years ago I visited Amsterdam for one night to see a Nine Inch Nails concert. I wanted to travel east again the following day, but it was tough finding a reasonably economic way of making that work. Perhaps by train? No. Expensive. Fly to Berlin, and then a train to Warsaw? Ends up costing about the same. So, I go have a look on Seat 61 for some insider knowledge.
Written on one of the pages is this gem.
If you don’t see any cheap fares at www.bahn.de, for example when booking at relatively short notice or on a busy day or date, here’s a clever trick which can often reduce the cost. Go to Czech Railways www.cd.cz and book from Amsterdam to Prague (if you want Amsterdam to Berlin) or from Prague to Amsterdam (if you want Berlin to Amsterdam), first clicking More options then Travel via and entering Berlin as a via station. For example, on a busy Sunday afternoon booking only a week ahead, bahn.de had no sparpreis fares available at all on one afternoon train from Berlin to Amsterdam and wanted over €109 on another. The Czech Railways site had tickets available from Prague to Amsterdam for only €61 which included that first afternoon Berlin-Amsterdam train as part of the journey. Buy, print out your ticket and travel! It is perfectly legitimate to use only the Berlin-Amsterdam part of a Prague-Amsterdam ticket and there are no problems doing this - German conductors are able to scan Czech ticket barcodes. Well worth knowing!
My girlfriend and I used this opportunity to go and visit Prague for a few days before continuing by rail to Poland.
Sometimes governments like to try to stop citizens from viewing some online content. That can for example be because they have a dispute with a particular organisation, or because they don’t morally accept some kinds of content. I am currently in Russia where the government has blocked not only specific sites like LinkedIn, but also millions of random IP addresses. A few weeks ago I was in Turkey where for a few years until just two weeks ago, Wikipedia was blocked.
There are various virtual private networks I could use to circumvent these blocks (though many are terrible and also not free), and perhaps I could even use Tor (though I’ve never tried), but the solution I’m currently using is sshuttle. You just point it at some remote machine you can SSH into, and all your traffic is tunneled through there instead.
Use it like this:
sshuttle -r jgt@my-remote-machine 0.0.0.0/0
Somewhat related: I sometimes need to work around WiFi hotspots that enforce a time limit on your usage. I’ve found changing my MAC address is often a good way to get around that.
NixOS & a remote builder
Because I travel often, machine portability is important. I still work on a MacBook Air (though I wish I could have a slightly smaller form factor, like the old 11” Air). In fact, the equipment I use to do my job is almost exactly the same as when I wrote about it over six years ago. I even use the same pair of big Bose headphones! Buy better quality stuff and you’ll save money, because it’ll last longer.
The problem though is that
I spilled some exquisite Georgian red wine in my
laptop and now my keys are sticking this machine is a bit underpowered for the
kind of work I do. I write Haskell full-time, and I’ve spent a significant
proportion of the last few years sitting around and waiting for GHC to compile
What’s more, my Haskell projects run on Linux servers. I work on MacOS, which has a completely different architecture. You can’t compile a Haskell program on a Mac and run it on a Linux machine. For a long time, I ran NixOS locally inside Docker just to be able to compile stuff before deploying it. This was a miserable experience. I don’t recommend it.
A few months ago, I invested in setting up Cachix, Hercules CI, and a build machine on Hetzner. For €40 per month, I get a beefy machine to do my bidding. I’m renting a dedicated machine with 64 GB DDR4 RAM, and now compiling my Haskell projects is so much faster. This was a huge quality of life improvement, and now after Riskbook compiles in 8 minutes instead of about an hour, I can deploy it to our AWS EC2 machines in under 20 seconds with NixOps.
I have since removed all traces of Docker from my machine.
Thanks to Domen Kožar and Robert Hensing for helping me with this, and all the nice people at NixCon in Brno for being cool.
My preferred method of communication is by email. It works everywhere in the world, it’s asynchronous, and I can use it to organise all my travel documents and other miscellanea. Just having a Gmail account wouldn’t quite cut it for my purposes though. I often need to reference archived mail without an internet connection, which means all mail data must be synchronised and stored locally. I use mbsync for this, which is sometimes called isync.
I’m using mutt as my local email client, and I compose all my emails with the same tool I use to do all of my other writing: vim. I can search through archived mail using notmuch, and the job of sending email is handled by msmtp.
I no longer host my own email on Google, because:
- I don’t trust an advertising company to not capitalise on the contents of my mail.
- They don’t implement IMAP folders correctly.
Instead, I actually pay money to a service called Fastmail. Synchronisation is significantly faster than it ever was with Gmail, and I’m happy enough with the service to continue paying them.
You need to be somewhat a masochist to set all of this up nicely, but I’m not willing to compromise on a tool which coordinates so much of my work and life.
Naturally there are a number of other tools I use for managing my work and life in general, but those are more generic, e.g., Trello and Slack. I will say though that I don’t favour that kind of ephemeral communication, and over the years I’ve become increasingly attracted to long-form written communication like they recommend in the Jason Fried and David Heinemeier Hansson books.
Do you know of a good tool or website that I’m missing? Let me know!