Tall, Snarky Canadian

Python core developer. Works at Microsoft (Azure Data Science Tools).

Page 3

My impressions of Dart

TL;DR: What do you get when you design a dynamic programming language that is fast, familiar to programmers, and meant to compile down to JavaScript? Dart.

Why does Dart exist

Dart is an attempt to provide a programming language for the web that’s a bit more sane than JavaScript. The fact that JavaScript: The Good Parts exists and is 172 pages long tells you what kind of language JavaScript is at the moment. To me, the fact that there are so many “don’t do that” rules to JavaScript and you are always told to use just a subset of the language suggests that JavaScript currently has some rather sharp edges and needs some work.

So Google asked the developers of V8 to create a new programming language for the web. They knew they needed to compile down to JavaScript, so that automatically puts limitations on the language since any semantics that can’t reasonably be represented in...

Continue reading →

Security of cash vs. bank accounts vs. Bitcoin

A co-worker recently gave a talk that explained how Bitcoin worked and it was interesting to hear how you should protect your bitcoins. When you think of cash, it’s basically some physical good which you own while you have it in your possession, and lose when you don’t have it. It’s very straight-forward and easy to comprehend. The biggest downside is there is no backup if you screw up, e.g. if you leave a $20 bill lying around and someone takes it there is no way to get it back. But this does mean you have complete control over money.

With a bank account, you have certain guarantees to protect your money. If someone steals your bank card information you have federal guarantees to get a refund for the fraudulent charges made against your bank account. This does mean, though, that you have to entrust your money to the bank and that they won’t go under, lose your money, etc. While the...

Continue reading →

Should my family get tablets or laptops?

With the assumption that everyone in my family has a smartphone of some kind, the question becomes whether members of my family should buy a laptop or a tablet as their primary computing device while at home. I think my general answer is choose one or the other depending on whether you need a keyboard regularly, but you will only want either a laptop or tablet and not both.

I did a blog post once about why I thought the tablet craze has died down. I basically said that the differentiator between a tablet and a small laptop like a Chromebook was the lack of a keyboard. If you type a lot then the lack of a keyboard on a laptop can be a hindrance. While you can get keyboards for tablets, they typically are structured such that you must have a flat surface to place the tablet and keyboard on, unlike a laptop which will work as-is in your lap.

I have continued to agree with this assessment...

Continue reading →

What phones my family should use

UPDATED on 2014-03-28


When it comes to phones I advise my family to buy (in order of preference):

  1. The latest Google Nexus phone from Google Play or the latest iPhone
  2. Other Google Experience phones from Google Play
  3. Some other option that will vary a few times a year
  4. A Google Nexus phone purchased from a telecom

The latest Google Nexus phone from Google Play or the latest iPhone

My top suggestion is either a Nexus phone from Google Play or an iPhone. this is to make sure that my family have the best phones currently on the market for their dollars, and thus probably last the longest as well as have the best features. It also means they will get updates the longest for these phones, once again leading to them lasting longer.

Google Nexus from Google Play

I’m an Android user. I prefer Google’s policies for their app store, the fact Android’s source code is available, etc. For...

Continue reading →

Radical idea: make the CBC web-only and use their spectrum for internet access

Depending on which government body is talking, Canada is aiming for either 100% broadband access by the end of 2014 or 77% broadband subscriptions by 2019. Now Canada has a population density of 3.7 people/km2 which ranks it around 230th in the world in population density. In other words, while 90% of the population lives within 160 km of the longest non-militarized border in the world, 10% don’t and they can live as far north as the 76° parallel (as a reference point, the US border is either the 45° or 49° parallel). That can make getting broadband to everyone difficult.

But what if the Canadian government repurposed something that already had a great reach within the country? TV reaches many places thanks to its ability to travel long distances and penetrate walls, etc. This is why using the white spaces between TV channels has been appealing for providing broadband access. But where...

Continue reading →

The shift towards telecoms becoming just a dumb pipe

With the purchasing of WhatsApp for $19 billion, the visibility of the various messaging apps has been raised (e.g. WhatsApp, Hangouts, Kik, Line, WeChat, Viber, Facebook Messenger, SnapChat, BBM, Skype). Apps like Skype and BBM have been available in some form or another on phones for years, but the key thing is that the amount of people now actively using at least one of these messaging apps has exploded over the last year; WhatsApp alone has over 400 million users and they will just continue to grow. These various messaging apps are growing more and more features which displace what your traditional mobile telecom provides you. So what exactly is needed to make your telecom company a truly dumb pipe?

Messaging apps are obviously a direct shot at SMS. It has been said that messaging apps are costing telecoms $33 billion/year in SMS fees . To me, I wish SMS was entirely an add-on to my...

Continue reading →

caniusepython3 1.1.0

I just released caniusepython3 1.1.0 to PyPI. Various tweaks and fixes as is usual with a N.1 release, but there is one neat, new feature:

python setup.py caniusepython3

If you use setuptools in your setup.py you now have a custom command available to you once you install caniusepython3. That means you can now specify your dependencies to caniusepython3 through:

  • setuptools-based `setup.py
  • pip-compatible requirements file
  • Metadata file (e.g. PKG-INFO)
  • comma-separate list of dependencies

I think that covers all of the major ways a project can specify their dependencies. If I missed a way or you have any other issues then please file an issue.

View →

My experience creating caniusepython3

Having been so heavily involved with the creation of Python 3, I’m constantly trying to figure out ways to help more of the community make the switch. While doing what I can to make Python 3 an obviously superior version to Python 2, that only goes so far. At some point you have to start addressing the issues that are acting as blockers for people in general.

At this point I believe the biggest blocker for people is other people. =) What I mean by this is that I have stopped hearing people tell me that they don’t see a reason to switch to Python 3, but instead they tell me they are blocked by a dependency that has not switched over. This then becomes a perpetual issue as people check their dependencies once and then never think to check them again to see if anything has changed; having to manually go through a bunch of PyPI project pages to look at trove classifiers and such is not...

Continue reading →

My guess as to why tablets have not taken off

Re/code has an essay entitled, “Our Love Affair With the Tablet Is Over”. I think I agree.

Our 1st generation Nexus 7 tablet lives underneath our sofa. I originally put it there to use as the TV remote for the Chromecast, but I find myself simply using my phone. Since my phone is perpetually in my pocket or within arm’s reach, it’s even more convenient than trying to reach underneath the sofa to unplug the tablet which is perpetually charging. I also thought I would use the tablet to play games on, but once again I find myself doing that either on my phone when I have a random minute somewhere or on my PS3 when I have more like an hour to game.

I have always viewed tablets as a information-consuming device, not a information-producing device. You can quite comfortably browse the web, read emails and books, watch videos, etc. But beyond writing short emails and such, chances are you...

Continue reading →

Using Chrome Mobile Apps to make Oplop an Android/iOS app

My consistent password generator project – Oplop – started life as a Python script, became a website, got packaged up as a Chrome extension, which then morphed into a Chrome app. There are also implementations by others for Emacs, webOS, Perl, SL4A/Android, and J2ME. In other words this project has been ported to a bunch of different platforms.

But two platforms it has not been officially ported to is Android and iOS. While Oplop works fine as a web app, the issue is the lack of easy copy/paste spoils the user experience. It has led to a constant back-and-forth in Oplop’s web app design to try and balance functionality for both desktop and mobile, with the desktop typically winning as that’s where I use Oplop the most.

But I knew that the clipboard was accessible for Android and iOS apps so I knew that if I did something as a native app it could work and allow me to work around the...

Continue reading →