In reverse chronological order Thoughts and Writings

Current interests

  • BuckleScript, Bloomberg's transpiler that lets you write JavaScript using OCaml (or Reason, which is Facebook's syntax for the same language). I'm the author of bs-virtualdom, a virtual DOM library written in BuckleScript. Like Elm, it's based on the functional/reactive application model.
  • TypeScript, a typed superset of JavaScript. I'm the author of ts-postgres, a PostgreSQL client library written in TypeScript which supports pipelining.
  • Pony, an open-source, object-oriented, actor-model, capabilities-secure, high-performance programming language.

Most of my open-source contributions are available via Github.

Sat, 5 May 201808:19:00 GMT

Security questions as 2FA violate GDPR

I have an on-going discussion with Kucoin, a cryptocurrency exchange, on the issue of whether I can remember security questions that I alledgedly have entered into their system such as:

  • What is my first dog's name?
  • What is your mother's maiden name?
  • Etc.

Now, you should never put real information in such fields, but it turns out that if you put in random strings, someone might eventually prompt you for them which is why it's a good idea to write them down — which I didn't.

But here's the thing: they're still considered private information. And so as part of GDPR, I have a right to see this data, or have it removed from their system. Hence, in terms of 2-Factor Auth, using security questions is as weak as being able to reset authentication by e-mail.

QED. But Kucoin still hasn't succumbed to my argument.

Sat, 10 Dec 201608:30:00 GMT

The technical interview

Dilbert, Wednesday August 27, 2003

The key to passing a technical interview is to stop and think.

If she says she can do it
Then she can do it,
She don't make false claims

– David Bowie

Fri, 26 Sep 201411:00:00 GMT

A Skip Dict for CPython

A skip dict is a data structure that maintains a sorted set. There's an implementation of it in Redis — see for example the ZADD command — but I needed something simple that worked inside Python itself and ended up writing a package with an implementation in C that still provides a fairly idiomatic Python interface.

It's released and available on PyPi as skipdict and works on CPython 2.7+ and 3.3+. For more reference, see this answer on StackOverflow.

Wed, 26 July 200611:00:00 GMT

Art