Profile cover photo
Profile photo
John Beatty
Building the open platform for local commerce.
Building the open platform for local commerce.

John's posts

Post has attachment
At very long last, I’m finally announcing the winner to the HashPAN challenge (apologies it took so long!).

I loved the submissions to this challenge — there was nice array of implementation strategies from OpenCL-based solutions to Java 8 Stream-based solutions. There were 3 standout submissions, so we added some runner-up prizes. Without further ado:

Winner: Danno Ferrin
Prize: 6-Core Mac Pro
Time/Space: 4.5 hour runtime (MacBook Air), low RAM, no precomputed table

It wasn’t quite the fastest, and didn’t use GPUs, but it was the most elegant and readable code, and was very RAM efficient, and Danno gave a great explanation of the problem and various optimizations he performed.

            .map(s -> s.substring(0, 6))
            .forEach(prefix -> LongStream.rangeClosed(0, 999_999_999)
                    .mapToObj(l -> createPAN(prefix, l))
                    .map(s -> new String[]{sha1(s), s})
                    .filter(s -> hashesSet.contains(s[0]))
                    .forEach(s -> System.out.println("card# - " + s[1] + " - hash " + s[0])));

1st Runner Up: John Crepezzi
Prize: Oculus Rift DK2
Time/Space: 2 hour runtime (MacBook Air), low RAM, no precomputed table

I loved this implementation — John implemented this 3 times: Ruby to Java to C/OpenCL. Nice acrobatics across high->low-level languages!

2nd Runner Up: Amédée d'Aboville
Prize: Samsung Gear Live
Time/Space: 17 minutes (MacBook Pro), 11GB precomputed rainbow table

Amédée takes top honors for execution speed: . This is also the best use of off-the-shelf cracking software (rainbowcrack), with various modifications to increase speed, decrease table size, etc.

Congrats to the winners! I’ll be contacting you on email to get addresses of where to send your prizes.

The other submissions were also good. In particularly, Xiao Yu gave a very nice writeup of the problem and key insights to solving it efficiently.

Thanks for playing!

Post has attachment
Animated Photo

Post has shared content

Post has attachment
We're live!

Post has attachment

Post has attachment
At Clover, cash registers get the Office Space treatment. Clover vs. Cash Register (Explicit) (explicit)... Email me at if you're interested in joining our team:

Post has attachment
Clover is aggressively recruiting Android engineers for building an open platform for Android-based retail devices (registers, payment terminals, self-service check kiosks, interactive menu boards, etc.). This is probably the most ambitious, comprehensive use of the Android platform outside Google.

Post has attachment
The taxi driver driver refused to let me use it.

Post has attachment
Anyone know a USB expert that can help us out?

Android hardware engineers at Google #io12 -- I'd love to talk to you about opportunities to build hardened Android equipment for the retail environment.
Wait while more posts are being loaded