Pokémon No

Update: A thread in r/pokemongo addresses most of the game playability gripes i express below. Very useful if you’re new to the game. Check it out.

Much hyped Pokémon Go finally launched in Canada over the weekend (while I was out camping). I downloaded it ASAP, after some expected server issues setting up my account, I fired up the game in a few random places on my way back home. I was able to catch a handful of Pokémon at the random places we stopped along the way and a few at home.

I noticed a Pokéstop down the street so I thought I’d try the walk-around-in-circles-staring-at-my-phone-like-an-idiot thing I’ve been hearing so much about… literally everywhere. The Pokéstop was about 600m away and rewarded me with 3 Pokéballs for my efforts. I’m not sure what I was expecting, but I found this to be a disappointing amount. I did not encounter any wild pokémon along the way, so I decided to take a more circuitous route home, in an attempt to stumble across more. I did not.

To be clear, I have no idea how to play this game.

On my walk, I noticed several leaf type patterns pop up on the map, I assumed these represented Pokémon burrowing or scurrying away. So I attempted to follow and capture them.

There is no real in-game indication on how you are supposed to do this. I can’t be sure if I was unable to catch one because I was doing something wrong; there was a server issue; or if it’s intended to be extremely difficult to find a Pokémon. When I finally found one, the process of catching a Pokémon was equally non-intuitive. A target appears overtop of the character, so looks like you’re supposed to try to throw balls right at it. But the “catch” animation seems to happen behind the character. But when you throw a ball behind the character, nothing it doesn’t work! Or maybe it’s random? All-in-all I found it extremely frustrating and disappointing.

After finishing this post I’ll do some research, I’m sure I must be doing something wrong. After all a game with such mass appeal must be much more intuitive.

From a more technical perspective, the augmented reality aspects of the game are a little overblown. The game does 2 things that are being called “augmented reality.”

1) Spawning locations and characters on top of a real world map. I suppose this is interesting, but not a ground breaking technical achievement in 2016. It seems to rely mainly on readily available, quality, map data.

2) The Pokémon appear in the real world! Except they don’t really. The game seems to pick a point, roughly on the horizon and the Pokémon graphics are overlaid over the image of the camera, rather dumbly. Pokémon aren’t hiding behind bushes or taking into account the real world in any way. I caught one that spawned on my son’s face.

Overall, to someone who was a few years too old to be caught up by the original Pokémon craze, the most interesting thing about Pokémon Go is the cultural phenomenon. I think it’s popularity can be attributed solely to the popularity of the Pokémon brand.

I’ll be sure to report back with a followup post after I ask a 10 year old how to actually play the game.


On Audio Blog Posts

Every once in a while, I’ll come across a blog where they author records themselves reading their post. I don’t see it often, I don’t think it’s a trend that’s ever really caught on and off the top of my head I can only think of one blogger (Jermey Keith) who regularly posts audio dictation.

I don’t have a proper microphone and I don’t have an audio engineering background. However, I did produce a reasonably successful Canadian tech news podcast for a while and I miss it.

In any case, it seems like a fun experiment. So for at least my next few posts, I am going to give it a shot.

The Problem with NPM

Whenever you run `npm install` it generates a local, project specific /node_modules/ directory with literally 10s of thousands of files and folders.

Why?! WHY?!

I understand that javascript is a simple scripting language, missing many features that are baked in to more traditional languages like PHP and friends.

I understand that many node modules are a work in progress, that are updated frequently.

I don’t understand the benefit off having these packages sitting inside each project directory.

I understand that disk space is cheap and it doesn’t really matter.

TIL Netflix Packets Never Leave Town!

I got a message from my ISP’s (Shaw) Bandwidth Team today. I wasn’t able to return the call, but I suspect they were calling to scold me about my bandwidth usage.

Some History

Bandwidth cap policies were a knee jerk reaction from ISPs ill-prepared for the era file-sharing on Napster and later voracious bittorrent usage. An era when someone using hundreds of gigabytes of bandwidth every month was likely a digital media hoarder, pirating more MP3s and MKVs than they could ever consume in a lifetime. An era of poor network management technologies, when a heavy movie pirate, could legitimately have a massively negative impact on other customer sharing their node.

I would never condone the hostile vilification of customers that these sorts of policies brought on. However, I am a reasonable person and I can understand where the ISPs were coming from. One the one hand they had the MPAA to deal with, on the other than they had technology and networks that were still maturing and not totally up to the task.

Times Change(d)

In 2016, it is a completely different landscape.

ISPs, hardware vendors and standards bodies have come a long way in improving network congestion. One of the reasons you don’t see buffering youtube videos is not because your ISP and copyright lawyers have convinced your neighbour to stop pirating with bittorrent. It’s because the the network has improved in general.

Even if your neighbour has stopped torrenting movies though, they’re probably consuming media online than ever. If he’s anything like me, he’s been using perfectly legit streaming services and the amount of bandwidth used by these streaming services is just as intensive as bittorrent. Netflix and friends are not doing anything magical to compress the video any more than the high quality rips you can find on the pirate bay.

Free-for-all (well, except the customer)

However, they have done something magical that makes these bit free for your ISP.

In 2014, Netflix revealed that they provide an “Open Connect Appliance” to ISPs. Free of charge.

Netflix’s OCA is a $20,000 server, that sits inside your ISP’s datacenter and stores a good chunk of Netflix’s library. They give it away for free because it is key factor in loading Netflix movies without having to wait for buffering. It stands to reason that Youtube, Crackle, Akami or any company looking to provide fast content has a similar set up (but they haven’t said as much).

Before today, I assumed that Netflix probably only had a few of these boxes in each ISP’s network. I assumed Shaw’s would be located in Calgary or wherever their HQ is.

Nerd Stuff

Then I dug into it by using very rudimentary investigation tools. Every resource on the internet has a unique URL and Netflix’s URLs seem to have logical names, so it wasn’t really too hard to figure out.

Here’s the breakdown:

When I load a video from Netflix it’s served from a URL that starts with: https://ipv4_1-lagg0-c005.1.ywg002.shaw.isp.nflxvideo.net.

This isn’t a website you can actually visit, it’s just the URL were Netflix videos are hosted. For me.

You see, before I even load the video, Netflix has figured out the closest physical location of the video file I’ve requested. When every second of load time counts, every kilometre of fibre is important. Hosting a file in Winnipeg instead of Calgary makes a difference.

I think it should be clear to most what’s going on in the URL, but if not. I’ll break it down further. URL are ordered from right to left.

.net = network
.nflxvideo = their stock symbol + the word ‘video’
.isp = Internet Service Provider, indicating that every URL above sub-domain are for an individual ISP
.shaw = my ISP
.ywg002 = Airport Code for Winnipeg + 002, probably the #2 OAC in Winnipeg
ipv4_1-lagg0-c005.1. = It’s hard to guess what exactly this means. It almost looks like it has something to do with my connection type.

In other words, when you request a video from Netflix your request does not get routed through expensive backbone connections to some far away server in Dallas or San Francisco, it does not even leave the city! It might only good a few metres down the street.

To further confirm this, I ran a traceroute, a command that follows a packet through the network.

Screen Shot 2016-06-30 at 12.41.48 AM

I’m uncertain where those IP addresses are physically, they don’t have convenient hostnames that give it away. Maybe a Shaw employee could leave the details in the comments. But it’s clear that the packets absolutely stay inside Shaw’s network.

Stop Harassing Customers

In conclusion, when packets do not leave your ISPs network, your ISP does not have to pay a third-party to transmit and receive those packets to and from their destination. Whether you are watching 1 hour of Netflix per week, or 100 hours, it doesn’t cost your ISP any more money.

If this is true for other content providers and content distribution system (and it probably is), then we actually have a network architecture where the heaviest data is the least expensive, if not completely free.

Harassing customers about bandwidth usage is non-sensical.


Update for clarity: The IP addresses that the Shaw related hostnames resolve to are owned by Shaw themselves (as verified by ARIN).

Ev Williams and the future of online publishing

Great piece on Ev Williams and the open web.

Yet his run near the top has been remarkably consistent. While other CEOs in his early-web cohort have left the industry, or have become writers or consultants, Williams has stuck around, leading companies. His startups have nearly all specialized in the same abstract medium: text boxes.

Ev Williams is The Forrest Gump of The Internet