I'm a software developer with expertise in cyber security, IoT/embedded devices and data science.
The new MacBook Pro 15"'s discrete GPU is not for acceleration; it's to run multiple 5K displays.GRAPE: the Generic Risk Assessment Process Explained 10 Jan 2017
Risk assessment doesn't have to be boring. Or DOES IT?CPU clock rates are meaningless now 15 Nov 2016
Cooling capacity and turbo clock rate are better indicators of CPU performance.How to enable the oplog on Ubuntu MongoDB for Meteor 15 Aug 2016Etymotic ER4XR review 5 Jul 2016
A little more bass wouldn't hurt, but these are amazing IEMs.More MPI performance optimisation 4 May 2016
Running identical tasks across MPI nodes might be a bad idea on cloud hosting.Turbo Boost and MPI 4 May 2016
Turbo Boost violates assumptions made by MPI developers.How I build Meteor apps 28 Mar 2016Connecting Meteor to Sentry 11 Mar 2016
Kadira is going away and Sentry is better, anyway.How to deploy a Meteor project on your VPS using Docker 19 Jan 2016
One-step deploys, your choice of hosting.How to fix your Skull Shaver Bald Eagle if it turns itself off 18 Jan 2016
It's probably full of hair.Why Apple would make a phone with no headphone jack 18 Jan 2016Persistent computer hardware myths 17 Jan 2016Dell P2715Q review 5 Jan 2015BitTorrent Sync 1 Oct 2014Implementing XKCD-style passwords on a real website: lessons learned 9 Jul 2014
The XKCD webcomic recommends using passwords made of a collection of random words. Here's what I learned when I enforced this policy on a public website.How to set up a private IPython parallel cluster 3 Jun 2013Attacks on Proximity Card Systems 28 May 2013
Commonly deployed proximity cards are trivial to sniff and clone.A quick guide to using MySQL in Python 3 Jul 2011A few notes on the Lenovo X220 13 Jun 2011
I bought a Lenovo X220 to run Ubuntu. Here's how I got it running nicely.File synchronisation algorithms 18 Jun 2008
While developing a file synchroniser (along the lines of Dropbox) I documented the details of file conflict resolution.Getting Started with the BlueSMiRF Silver V2 Bluetooth Module 9 May 2008Kinesis Advantage keyboard and learning Dvorak 27 Jan 2008
My primary keyboard is a Kinesis Advantage. Here's how I transitioned to it and (almost) switched to Dvorak at the same time.Migrating your data between todo list programs 27 Jan 2008
There are lots of great options for todo list tracking. Unfortunately, most don't make it easy to export or import your data.
IoT devices usually can't be updated, so carefully consider what information is released in a public vulnerability disclosure.How to extract firmware from a device 20 Dec 2016Why extract firmware? 20 Dec 2016Miscellaneous 19 Dec 2016
Thoughts that don't really fit anywhere elsePressures on highly regulated industries 19 Dec 2016
Change is super expensive, so security is usually skipped.Software developers shouldn't build threat models 19 Dec 2016Why is IoT security different? 19 Dec 2016How do we fix IoT security? 13 Dec 2016Negative reporting and security research 13 Dec 2016
Reports of effective security are more useful than reports of broken security right now.Design assuming your security controls will fail 10 Dec 2016
Everything breaks, given enough time.Frequently asked questions 8 Dec 2016Commentary on the Sony IPELA IP Camera backdoor 7 Dec 2016How does firmware get onto the device? 7 Dec 2016The same keys on every device 7 Dec 2016
After manufacturing, every device is identical. This causes security problems.What is IoT? 26 Nov 2016
Embedded systems have been here for decades. You just didn't notice.Blockchains on IoT devices 25 Nov 2016Hardware classes of embedded/IoT devices 23 Nov 2016
Most IoT devices do not have the hardware required to support strong technical security controls.