Skip to content

HTML 5 Canvas Fingerprinting

About two years ago, companies began using the the HTML5 element Canvas to draw unique graphic fingerprints of browser users. The fingerprint can include the web browser used as well as specific operating system specific settings and all header information that are transferred during connection..

for more information:

  1. Canvas Fingerprinting Sites – Lists sites sorted by Alexa rank that use fingerprinting scripts.
  2. Cross-browser fingerprinting test 2.0 – Another fingerprinting test.
  3. Fingerprinting Guidance – Document that defines different types of fingerprinting.
  4. Mozilla Wiki entry on Fingerprinting
  5. Pixel Perfect: Fingerprinting Canvas in HTML – The research paper from 2012 which mentioned the method first.
  6. The Web never forgets: Persistent tracking mechanisms in the wild – Research paper from Princeton and KU Leuven, Belgium that analyzes several fingerprinting methods including canvas, evercookies and cookie syncing.

reblogged from


mastering python

“Side Project Rules To Live By

Remember these rules when you’re working on your projects.

1) Learn From Mistakes
2) Kill The Boring Bits
3) Go Big Or Not
4) Have Fun!

Because why would you waste your extremely limited and valuable time on anything else?

Here are good side project ideas: Python Practice Projects for Python specific projects or Karan’s Side Project Ideas for language agnostic ones.”

reblogged from

tricky user interfaces

and here’s a “journey map” of how it’s done:

more at


onward to 8192


two of several 4096s done on an “extended” version (one of three versions i’ve tried) of Gabriele Cirulli’s tile game. the algorithms used do influence the ease and fun of play.


updated: make your own 2048?

udacity now has a 2048 mini course where you’ll learn:

  • How a computer program works (specifically small web applications like the 2048 game).
  • What HTML, CSS, and Javascript are and how they interact to make a functioning web application.
  • How to make small changes to HTML and CSS files that have very large changes in a program (large enough to turn the original 2048 game into a drastically different Udacity version).
  • How to use Github to make a copy of an open-source program, make changes to that copy, create your own version, and then host that version so you can share it with your friends.
  • Why open-source is such an amazing idea 🙂

“To participate in Udacity courses, please make sure your computer meets the following minimum requirements.


  • An up-to-date version of Chrome or Firefox is strongly recommended.
  • We also support Internet Explorer 9 and the desktop versions of Internet Explorer 10 and above (not the metro versions).
  • At this time, mobile browsers are not supported.

Internet Connectivity

  • Download: 2+ Mbps recommended; minimum 1 Mbps.
  • Upload (for full courses & proctoring): 0.5 Mbps upload speed.

Operating System

  • PC: Windows XP or higher with latest updates installed (note: Internet Explorer 8 is not supported).
  • Mac: OS X 10.6 or higher with latest updates installed.
  • Linux: Any recent distribution that has the supported browsers installed.


  • Ability to watch YouTube videos is required. If YouTube is blocked on your network, please contact your IT support or internet provider.
  • If you do not use the html5 player, or are using Internet Explorer, you will need Adobe Flash Player v11 or above.


Adobe Flash Player v11 or above.

  • Recommended for watching YouTube videos, especially on Internet Explorer.
  • Required for online proctoring with ProctorU (some Georgia Tech courses only).

Webcam & Microphone

Required for course graduation exit interviews (Full Course) and online proctoring (Georgia Tech).

  • Webcam: 640×480 or higher resolution.
  • Microphone: built in to most webcams and laptops, or freestanding. Not a headset for proctored exams.
  • Proctored exams only: You can check your system satisfies requirements at You will connect to a live person who will test your equipment for you for free!

Google Hangouts

Required for onboarding sessions and exit interviews with Coaches in the Full Course Experience.

check out the course overview here.


this course is, unfortunately, in its present form, a facade. after going through Lesson 1, there was no Lesson 2 to take on. there are also no course materials, scanty instructor comments (it took a student to explain that a “div” means a division), and a zipped package of video downloads that does not unzip. overall, it feels more like a hackers’ invite than an MOOC.

what’s the best thing about it? the hosts — or rather, the instructors as UD248 designates them. they’re wholesome, friendly, and much like your neighbor’s kids. they’re so unlike your idea of coders. they call a block of HTML/CSS code “these guys.”

on toilet paper

toilet paper algorithms

After some self-observation and discussion, we discovered that three different algorithms were in use: large, small, and random.

  • Algorithm Large: Always take paper from the largest roll.
  • Algorithm Small: Always take paper from the smallest roll.
  • Algorithm Random: Don’t think — select the roll randomly

We had assumed that Algorithm Random was most natural. After all, we had bought the dual-roll holder specifically so that we wouldn’t have to think. But were our selections truly random, we would chose each roll roughly equally, so they would both empty at the same time — or close. Algorithm random is not the one to use. To use toilet paper requires thought.

Our self-observations revealed that we really didn’t use the random algorithm — people are seldom random. The most natural: that is, we soon discovered, was to reach for the larger roll. Alas, consider the impact. Suppose we start with two rolls, A and B, where A is larger than B. With algorithm large, paper is taken from A, the larger of the two rolls until its size becomes noticeably smaller than the other roll, B. Then, paper is taken from B until it gets smaller than A, at which point A is preferred. In other words, the two rolls diminish at roughly the same rate, which means that when A runs out of paper, B will follow soon thereafter, stranding the user with two empty rolls.

Algorithm small turns out to be the proper choice. With algorithm small, paper is always taken from A, so it gets smaller and smaller until it runs out. Then paper is taken from roll B, which is full size at the time of the switch.

Yikes. We never realized that you had to be a computer scientist to use toilet paper. Worse, we didn’t realize that thinking was required to select the roll.



 more? here’s a preview of The American Mathematical Monthly’s paper on the problem

father of the information age


Fresh hacks every day

Don Charisma

because anything is possible with Charisma

The Grand Narrative

Korean Feminism, Sexuality, Popular Culture


This site is the bee's knees


helps you have more fun with knowledge creation

Ask a Korean!

rebooting a coding journey

Stupid Ugly Foreigner

Walk softly and carry a big stick. You'll need it to fight the monkeys.

Gusts Of Popular Feeling

rebooting a coding journey

I'm no Picasso

rebooting a coding journey

The Daily Post

The Art and Craft of Blogging