Hi, I'm @levelsio. I make Nomad List, Remote | OK, Startup Retreats and Go Fucking Do It. I travel to work from anywhere, bootstrap companies and only own what fits in my backpack. Previously, I founded a music network on YouTube w/ 100+ mln views. Follow my adventures on Twitter or read my posts.

I uploaded 4 terabyte over Korea’s 4G, and paid $48

In February of this year, I arrived in Seoul to live there for two months. We could house-sit my girlfriend’s friend’s house in Hongdae, think of it like Shoreditch or Williamsburg of Seoul. It’s hip and has a big art university in the middle.

This is Hongdae. Yes, looks like Japan, don’t say that to a Korean, they will kill you.


But let’s get down to the brass tacks here, John Hancock, the clock is ticking, Charlie.

Getting a 4G SIM

As any traveler, I arrived in the airport and tried to find a SIM card. Korea is very modern in many ways, but it’s also very traditional and weird in others. It’s a high tech country, but you can’t buy a SIM card as a foreigner, you have to rent it and then when you leave give it back. So I did. I went to the Olleh KT desk at the airport:


I told the KT Staff that I needed unlimited data. I know what unlimited means in most countries, it’s 1 or 2 GB and then they slow you down. So I asked “is it really unlimited?” and she nodded. Cool. Let’s try. It was ~$40 per month. They made a copy of my credit card, which gave me some anxiety but there was no other way. She said.

WiFi okay, 4G awesome

We moved in to the house, it was this cute old Korean house:

811704666_557970949285663794 copy

And I tried the WiFi. For Korean standards it was relatively slow. I think 20 mbps down and 5 mbps up. Then I speedtested my 4G on my phone. It was 100 mbps down and 50 mbps up. It ranged upwards to 70mbps up. What the fuck 1.0.

50 mbps up is insane. Divide that number by 8 (mbps is bit, mb is byte) It means you can transfer 5 megabytes per second. That’s 300 mb per minute, or half a CD. That’s 432 GIGABYTE PER DAY! That’s a normal person’s hard drive, IN A DAY! WHAT THE FUCK 2.0.

Cue my backup situation

I have about 3 TB of backups:

And I have like 6 copies of this 3TB drive spread around the world.

My backup drive’s data goes back to my first computer from 1994. I never lost anything. I almost lost a .BMP image (I drew a tribal scene with a totem pole and a snake) in 1994 when I was 8, because my brother overwritten it on THIS diskette. Yes 18 years ago.

And then I was able to recover it in 2012 (or 16 years later):

Don’t say it’s sexist, it was 1994 and I was 8.

So yes. I never lost any data. I know you can criticize me now if you’re a buddhist. “Everything shall pass” etc. But I don’t care. I like to be 82 years old and then I’m going to watch MY ENTIRE LIFE and everything I made. Whatever you say. Then my kids will save my backups and in 500 years we will all enjoy Pieter’s pictures. Okay they won’t But they might. ANYWAY.

So I said, I have about 3 TB of backups and a 1TB internal SSD.

So since I’m always traveling I have to keep these around, and they’re heavy, bulky and they will crash at some point. I wanted to put them in the cloud. And if anything, with this speed, now was the time.


CrashPlan SUCKS because it caps the upload speed at 2mbps. And its servers suck, they are mostly in the US it seems. The whole service is a joke. So instead I went more raw, I set up an AWS Glacier instance (that means you go to Amazon AWS and ask them to set up a cloud drive for you, it’s not hard, it sounds hard, it’s not hard).

P.S. This is NOT Amazon Cloud Drive (!), this is AWS Glacier. Very different. Although they use the same backend.

The nearest AWS region was Tokyo, so I set it up there. You can always cheaply transfer your whole backup to another region like US or Europe. Or even just have multiple copies for when the asteroids hit the Earth on one side, YOUR DATA WILL PERSEVERE!

I then installed Arq Backup for OSX:

I can’t give enough praise to Arq. And the internet is already full of praise for Arq. It pretty much takes all the hard work out of uploading and downloading your backups to Amazon AWS. Oh and it encrypts your data on YOUR side, before sending it to the server.

I then connected my HHDs, yes that’s a rice cooker on the right. Yes I worked in a kitchen for 2 months. Yes that’s fairly optimal:

Here we go

So then I tried it. I used my old iPhone as a tethered 4G modem for my MacBook and started transferring. I was expecting this was going to work for the first 2GB and then slow down. But it didn’t.

Then it was 100 GB, and it didn’t slow down. Then the first 1TB transferred. It kept going.

So what now

So what do you do when you know this is going to take a month. And you’re in Korea. Well of course, you go for Korean BBQ A LOT:

811710445_9426532409253838405 copy 811717681_4518911319160444250 copy 811711601_6829933223452307962 copy

It still took me about 20 days to upload the 4TB. But that was because I suck and I sometimes forgot to connect it and was a way for days too. That’s still an average of 200 GB per day.

So now my backup problem is solved. It’s all in the cloud. If my HDD drives are destroyed, it doesn’t matter. Hopefully. It’s in the cloud. From AWS I can transfer it to other regions, like I said. But also to other providers, fairly easily.

Returning my SIM

When I left Korea, I had to return the SIM. The staff lady from KT looked at me stringently and said “you have an overcharge”. Fuck I knew it. How was I going to explain I uploaded 4,000 GB on my phone. She said, “please pay now”. And gave me the bill. Normally it’s like $10 per GB. So I was going to have to pay $40,000. Oh my god:

That wasn’t 40,000. That was 52,700. Wait. My face:

811714186_18161774273219536922 copy copy

But we were in Korea, that wasn’t USD, that wasn’t EUR, that was KRW. That means, that was $48. And the overcharge was $8 because I made some voice calls. Not data.


2 months, 4 TB for $48 per month. Thank you Korea, godspeed to you.


Wireless is the future, no it’s the NOW, and Korea shows it. Europe is trying to put expensive fiber into the ground which is already overflowing with broken copper wiring that they’re pushing slow ADSL over. And US is similar to that. What about just going wireless guys/girls? It’s silly we’re still trying to push so much traffic over old wires.

I have no idea how the Koreans do it, but they do it.

So if you have my backup problem. And you want to finally put it in the cloud, and you’re in Asia, and you want to eat BBQ while at it. Just fly to Korea, go housesitting, get a SIM and transfer your HDD to Amazon AWS.

This fun new reality where people fly places for fast internet…that reminds me of something.

Everything. Went. Better. Than. Expected.

How I sped up Nomad List by 31% with SPDY, CloudFront and PageSpeed

These days building an MVP is easy, launching it is a challenge but if you succeed, usually your site will stay up (since it’s such a basic version). The problem really starts when you start growing your site, and your site’s traffic starts growing with it.

That’s what happened with Nomad List. In half a year it grew to over 500,000 pageviews per month, with over 100 million assets served per month. That’s about 200 assets per page load, mostly pictures of the cities). My tiny Linode NGINX server has been pretty good at handling it, but it hasn’t made the site particularly fast.

The thing is, when your site is going well, you’re now competing with all the other big sites. And they have people dedicated to making everything fast. And the more mainstream you go with your site, the share of “mega fans” of your site that are willing to wait for the site to load will decrease. You’ll be seeing “normal” people visit your site, you know the ones coming from Facebook etc., and if your site isn’t loaded in a few seconds, they’ll call it “slow”.

I mean, honestly, I do the same. So a few weeks ago, I was done with it and stuff had to speed up.


I used Pingdom to test load times. And always picked San Jose, CA as a base server. My Linode is located in London, so I felt that’d be a good test. I must say Pingdom is not incredibly reliable, so I’d take all of this data with a big grain of salt. Load times do vary somewhat even without changing anything.

We continue.

Basic caching

I already implemented basic caching months ago. Why? Well, the city database had become so big with 550 cities and 65 attributes per city (like apartment rent cost, hotel cost etc.), that it was now over 35,000 data points. That’s fine, but there was calculations done on those and they were done on every page load. I know, stupid. It worked in the beginning with 50 cities and 500 data points, not with 35,000. Doh.

I made this:

php -f /srv/http/ — ‘currency=usd’ — ‘units=metric’ > /srv/http/

And built a script to generate static pages for each combination of currency (EUR, USD, GBP etc.) and unit system (metric or imperial). A cron job runs it every few hours or so. I know, tedious, but it works for now until I deploy a new version of the site that does this in a better way.

Caching brought down the load time from a crazy 29.89s (which users never saw, as I implemented caching way earlier) to 3.90s.

Conclusion: Caching processing in a page speeds up everything drastically (well doh)


With SPDY enabled, it actually pushed the load time from 3.90s (on SSL) to 3.97s. Not really sure why, maybe Pingdom doesn’t support/measure SPDY? For browsers supporting SPDY, it definitely sped it up noticeable making it much more snappy. Especially on subsequent loads. That means once you’re already on a site, the page loads from then on are much faster. SPDY keeps a live connection between the user and server, so that means it doesn’t have to re-connect on every page load (like HTTP/HTTPS).

Conclusion: SPDY doesn’t change speed significantly according to Pingdom, but does make it snappier on browsers that support it

CloudFront by AWS

@PizzaPete on Twitter recommended me to set up CloudFront. It’s Amazon AWS’s CDN service. A CDN is pretty much a lot of servers around the world that mirror your content, so that when a user requests the file (like a photo of a city on Nomad List), it gets sent from the closest location to the user (e.g. a user in Amsterdam gets the image from London, a user in Shanghai gets the image from Tokyo).

Setting this up was quite easy.

I simply made a script that after scaling my images, would put them up on S3 with S3cmd:

s3cmd put /srv/http/ s3://nomadlistcdnbucket/assets/cities/500px/amsterdam-netherlands.jpg

Then I went into AWS panel and set up a CloudFront distribution that connected to my S3 bucket.

This means that instead of loading the images from, it would now load them from

So did it speed things up? Let’s see.

CloudFront doesn’t support SPDY, only SSL. But with my own server’s SPDY enabled and CloudFront over SSL, load time went from 3.97s to 3.86s. Again, a very tiny difference. Without SPDY and just SSL it decreased to 3.82s. Over HTTP, CloudFront’s speed up was the biggest, from 5.40s to 3.64s. That’s almost 2 seconds!

Conclusion: CloudFront seem to improve load times over HTTP, SSL and SPDY with a very strong effect ovr HTTP


Another tip was PageSpeed, recommended to me by KJ Prince. I think I’m pretty late to the party as Google seems to be deprecating it. But I wanted to try it any way.

It decreased load times on SSL from 3.86s to 3.82s. Over SPDY it actually increased load times from 3.97s to 4.06s! Again, over HTTP the effect was strongest: from 5.40s to 4.13s load times. Almost 1 second won.

Conclusion: PageSpeed seem to improve load times over HTTP and SSL, not over SPDY, with a very strong effect over HTTP

PageSpeed + CloudFront

Let’s combine the two and see what happens.

With both enabled, on SPDY we get 3.95s. Without both enabled, SPDY was actually faster! Over SSL we get our fastest time of 3.79s. And over HTTP, we go from 5.40s to our fastest time of 3.56s. Again almost 2 seconds won.

Conclusion: PageSpeed and CloudFront combined seem to improve load times over HTTP and SSL, not over SPDY.

SSL vs. SPDY on Chrome

Since Pingdom doesn’t give us realistic results for SPDY, let’s test it with Chrome on OSX. I tested it from Bangkok, Thailand on a solid connection. Since my server is in London, that’s 9,526 km far. Pingdom’s connection from San Jose to London was about equal at 8,627 km distance.

Conclusion: On Chrome, SPDY seems to improve load times vs SSL, from 5.24s to 3.58s (-1.66s) or a 31% speed increase.


          Load time Change %
Pingdom Cache HTTP CloudFront PageSpeed 3.56s -1.84s +34%
Pingdom Cache HTTP CloudFront   3.64s -1.76s +32%
Pingdom Cache HTTP   PageSpeed 4.13s -1.27s +23%
Pingdom Cache HTTP     5.40s
Pingdom Cache SSL CloudFront SSL PageSpeed 3.79s -0.10s +2%
Pingdom Cache SSL CloudFront SSL   3.82s -0.08s | +2%
Pingdom Cache SSL     3.90s  
Pingdom Cache SPDY CloudFront SSL   3.86s -0.11s +3%
Pingdom Cache SPDY CloudFront SSL PageSpeed 3.95s -0.02s +0.5%
Pingdom Cache SPDY     3.97s  
Pingdom Cache SPDY   PageSpeed 4.06s +0.09s
Pingdom No cache SPDY     28.45s
Pingdom No cache SSL     29.72s
Pingdom No cache HTTP     29.89s
Chrome Cache SPDY CloudFront SSL PageSpeed 3.58s -1.66s +31%
Chrome Cache SSL CloudFront SSL PageSpeed 5.24s


The best result we got is CloudFront + PageSpeed over HTTP with a speed increase of 34% (-1.84s), the second best was from SSL to SPDY with CloudFront + PageSpeed enabled on both with 31% (-1.66s).

The odd result here that there’s no real difference between using only SPDY (3.97s) or only SSL (3.90s) or using SPDY + CloudFront SSL + PageSpeed (3.95s) or using SSL + CloudFront SSL + PageSpeed (3.97s). That might be explained by that SSL slows down all connections, and SPDY only speeds up connections if everything is on one server. If you use a CDN like CloudFront you add more servers to the load times, which the client has to connect with. On SPDY the first connection actually takes a lot of time. From then on it’s fast. So for some sites, it might be faster to NOT use a CDN if they use SPDY.

PageSpeed’s results were negligible.

I managed to speed up the site on HTTP with 34% and on SPDY with 31%. I will keep CloudFront’s CDN enabled for the mere fact that the CDN still might help speed up connections in remote parts of the world. That’s a guess though.

My weird code commenting style based on HTML tags

So I know by now I do most things in programming in a weird and unconventional way, but somehow that has worked pretty well for me. My sites are definitely a bit more buggy than most, but I ship quite a bit faster too. You can’t have it all.

One thing I never was able to learn properly was commenting my code. The way people usually comment code is this:

This was taken straight from PHP The Right Way. The thing I struggle with is that the deeper you get with indentation, the more of a mess this becomes. What if you’re deep in two foreach loops, how do you have any idea which code part starts and ends where? The issue is that the commenting doesn’t segment the code in any way. You can’t see the end of a piece of code.

You can use functions to summarize code in to one line. That solves a lot of things. But making every little snippet of code into a function can slow you down too.

What if there was a middle ground?

I got inspired by HTML, its code is always very clear because you see when a tag starts and ends. It’s pretty clear. So here’s how I comment based on that:

I use this style of commenting in PHP, JavaScript, Obj-C and even Shell scripts and it’s saved me countless of time quickly figuring out what part of a file I’m actually editing and what it does.

Even more fun is that if you use Sublime Text, you can simply fold down the entire parts between tags like this:

It’s probably wrong in the grand scheme of coding laws written up by the board of bearded men who roam around Hacker News. But that’s fine. I don’t have a beard.

Now is probably the time to make HTTPS the default on all your sites and apps

I just spent the last week moving ALL my sites to be HTTPS by default. It’s tedious to set up and pricey ($10/y per domain). But it’s worth it. And if you’re a maker of sites and apps that people from all over the world use (like many of you reading this are), I think it’s your responsibility to set it up by default now. It gives your users increased privacy and security and it even has advantages for us too.

Better security

With HTTPS enabled by default, your users are more secure. Because if you’re letting users login with passwords for example, they’re transferred over an unsecure connection. Even personal data like addresses can be sensitive. Many of us are building apps that include chat functionality, the stuff said there can be sensitive too. This gets especially dangerous with people increasingly working on public/shared WiFi’s (e.g. coffee shops, hotels) where snooping passwords is literally as easy as installing Wireshark. I’ve tried it and I was able to read the packets of most of the people on my hotel’s network. That’s insane in 2015.

Better privacy for your users

With internet spreading to more places in the world, there’s a higher chance your site will be used in places that have less freedom of speech than your country. If snooping on other people’s connections is so easy without HTTPS, I think it’s our responsibility as a site/app builders to at least try to protect our users’s security with HTTPS:

Whenever you use an HTTP website, you are always vulnerable to problems, including account hijacking and identity theft; surveillance and tracking by governments, companies, and both in concert; injection of malicious scripts into pages; and censorship that targets specific keywords or specific pages on sites.

— Peter Eckersley on

Even non-interactive sites should think about this, because the URLs people visit on your site without HTTPS are shared publicly. Stuff like which news a user reads and their particular choice of any other media consumption (think adult content), should be private by default as it increases the odds of being profiled by governments, companies. Even if they have no bad intentions, everyone has a legal right to privacy. For example, reading lots of articles on Wikipedia about terrorism might get you profiled as a terrorist. Luckily Wikipedia already set HTTPS default 2 years ago.

Better referral data

You know how in Google Analytics, you’re getting less and less referral info these days? Well that’s also because HTTP referrers cannot share it with HTTPS hosts and vice versa. It means that if your users come from a HTTPS site previously (like Google itself), you won’t be able to see any referral info. If the referral is HTTPS and you are HTTPS, you can though. With more sites switching to HTTPS as default in the future, this seems like a good choice.

Google ranks you better

(..) we’re starting to use HTTPS as a ranking signal. For now it’s only a very lightweight signal (..) But over time, we may decide to strengthen it, because we’d like to encourage all website owners to switch from HTTP to HTTPS to keep everyone safe on the web.

— Zineb Ait Bahajji and Gary Illyes on Google’s security blog

Google has stated it will now reward HTTPS-default sites with higher ranking in search results. It also rewards fast sites (with low loading times) and sites that are responsive (with a mobile-friendly layout). So that means combining those, theoretically gives you a boost.

There’s one disadvantage:

Load times increase over HTTPS. Right? It makes things slower. But does it always have to be like that? No. Actually HTTPS can be faster than HTTP:

There’s a secret though, that site uses Google’s new protocol SPDY which is lightning fast and secure.

Setting it up HTTPS with SPDY

You can set up SSL on NGINX for free too, although I’d recommend just paying NameCheap $10/y to buy the Comodo SSL certificates as they’re less troublesome to set up and more reliable.

Also SPDY works with NGINX now, so that’s easy to set up too. Bjorn Johansen wrote a nice article on how to get the latest version of NGINX with SPDY and then enabling SPDY. It’s literally changing this:

listen 443 ssl;


listen 443 ssl spdy;

Have a lot of NGINX virtual server configs to change this? Try this (watch out for those curly quotes, WordPress somehow changes them, no idea why, they should be ordinary single quotes).

find . -name ‘nginx.conf’ -exec sed -i ‘s/443 ssl/443 ssl spdy/g’ {} \;

Yes people, DevOps is getting really easy these days :D

Do the economics of remote work retreats make any sense?

Lots of remote work retreats have popped up lately. They’ve started to attract many people interested in working remotely from exotic locations, not wanting to do it by going to the other side of the world as lone nomads (as we do), but instead doing it as part of a group that’s either in a fixed location or also traveling. They’re called startup retreats, startup holidays or coworkations. It’s a very very young market and an interesting one, because nobody really knows what’s the right product to offer yet.

Without a real product, there’s already a great deal of interest in them: QZ and TechInAsia write about them and they’ve been upvoted to the frontpages of Hacker News and Product Hunt.

So what’s the economics of organising these retreats? If this new market of work tourism is a thing, is there money to make here?

A selection of retreats

Remote work retreats come in different shapes and sizes. Let’s see which are some popular ones. There’s Startup Getaway (or now called Livit Spaces) in Bali which was one of the first retreats for startups ever:

Livit Spaces offers stays for entrepreneurs to work on their startup without any distractions or daily chores. A place where they can immerse themselves in the most productive environment, with a strong network of like-minded, passionate people. We suggest stays of at least 30 days in order to blend with the Livit community, discover the emerging startup scene on this island of Gods and experience the exotic beauty of Bali.

A few months ago, Nomad House launched, also in Bali:

Nomad House is a housing solution that offers flexible living arrangements while bringing together great people; to stimulate ideas, incubate projects, and create the best possible home; in the best locations in the world.

And then there’s one in a less exotic location: Austin, TX, called Nomad Pad:


Nomad Pad is solving the housing headache 1 pad at a time. Each new pad is a new hub for remote work and play. There are currently 3,300,000 Digital Nomads worldwide. Location independent professionals – web designers, programmers, artists, photographers, marketers and freelancers – all capable of moving around the world, but there still isn’t a housing system that caters to their needs. Relocating causes numerous headaches, usually centered around finding suitable housing.

The Caravanserai announced a few months they want to open premium houses around the world for members to travel through on a worldwide subscription basis. Something like a timeshare, It’s currently looking for investors:

Caravanserai is starting the first global co-living provider. Sign a single lease, and you can roam among magical properties across 3 continents.

And then there’s the retreats without a fixed location like Remote Year:

Remote year is a one year program where you travel around the world with 100 interesting people while working remotely.

…and the most successful Hacker Paradise:


At Hacker Paradise, people come from all over the world to get away from the hustle and bustle of their daily lives to learn new things, work on side projects, and find some work/life balance. When traveling with our community, you don’t have to worry about housing, workspace, or meeting amazing people – we take care of all that for you.


Here’s what they charge:

Name Price Location
Nomad House $525/m Bali
Hacker Paradise $1,050/m Traveling South East Asia
Startup Getaway $1,350/m Bali
The Caravanserai $1,600/m Mexico City, Lisbon, Bali (Planned)
Remote Year $2,000/m Traveling South East Asia + Europe
Nomad Pad $3,000/m Austin


But do their economics make any sense when we already have AirBnB, hotels and hostels that are good enough for most people? What do remote workers need more than normal tourists really? In that respect, do any of these retreats’ business models make sense? What’s the economics here?

Let’s calculate this

$40/night * 8 people = $360/night
$360/night * 40% discount = $192/night
+ Lunch, dinner, group activity = $7360/m
+ 2 staff * $3000 = $10,360/m
+ 30% profit margin = $13,468
+ 10% sales tax = $14,814/m
= $1,851/m per person
= $61/night per person

Take Bali as an example. A hotel with double bed, swimming pool, internet and breakfast near Ubud (the center of the island) is $40/night. If you put 8 people in there, it’s $360/night. With 8 people, you can probably get a max 40% discount negotiating with the hotel/bungalow, so it’s $192/night. Adding lunch and dinner adds $80/day (2 x $5 x 8 people). In the weekend you probably want to add a group activity or tour at $50 per person, or $400/week total. So now we’re at $7,360/month ($192 x 30 + $400 x 4 weeks). So that’s $920/month per person.

That’s cost though, what about making it a business with a 30% profit margin and salaries for the organizing staff? Organizing 8 people, you probably need at least 2 people on staff. So that’s at least $3000 x 2 people as a normal (minimum) salary. So $10,360/month, add profit margin of 30% at $13,468. Now add sales tax of 10% in Bali, if you want to do things legally and it’s $14,814/m or $1,851/m per person or $61 per night:

So that’s the minimum pricing. If you go below that, you probably won’t be making any money, and the model doesn’t make any sense vs. AirBnb or a standard hotel.

What’s the market here?

So yes, I think the economics make sense. There is a market here. But it’s a premium one. If you’re going low-cost ($500/m), you’re competing with hostels and cheap hotels. If you’re going mid-range ($1000/m), you’re competing with AirBnB’s. Premium ($2000/m and up) is where the money is. So who has that money? Funded startups have it. And companies with serious revenue that can afford to spend at least that on a team retreat. Increasingly, the rich and wealthy tech people are the ones who have the money, and they will spend it on services that make their life easier and better, like Uber. And like a remote work retreat.

Also remember that remote work retreats are great perks to attract talent. Think of all the SF/SV companies fighting for talent. Throw an exotic retreat in the mix as a perk and the geeks will flock to your company. Yes I’m talking to you Google, Facebook, Amazon. They already pay $10k/m salary, so another $2k/m sometimes is peanuts for them.

Why am I telling you all this? Obviously sneakily since I’m building, the AirBnB for startup retreats, and I’m still trying to figure out what a retreat really should be and what the price level should be. Tweet me if you have any feedback on this, my calculations might be off :)

Don’t grow up

Don’t grow up

The idea that you need to do anything is stupid. And people always used to tell me that, like “oh you need to grow up”. To do what?! To die? To fall into line? To follow a pattern?

You don’t need to do anything. Nobody needs to do anything. You need to breathe. You need to eat food. The rest of it is just a structure that we invented to give ourselves something to do when we wake up in the morning. “Oh it’s 9 am, time to go to work”. Work is not real! The car is not real. Life’s not real.

This is what’s real: heartbeats. And when they stop, all that shit you created and stockpiled and worked for means nothing! It’s just objects that don’t even exist when you’re dead.

When you’re dead you go to another dimension where you can’t take this stuff with you. Or not. Or the lights just shut off.

—Joe Rogan in JRE #466

My adventures and stories