Design for Realtime – User experience principles for realtime and reactive systems

Great set of example videos (both right and wrong) on how to properly build interfaces that are updated reactively – without a page refresh (viz. “the realtime feed”). Imagine the difficulty in communicating the rationality of the system to the end user. In the realtime world our challenges are not only to build delightful features, …

Fail them faster

GDS – Government Digital Services – recently reworked a few application forms they have. Instead of letting the user complete everything, and then – at the end – give a notice that they’re not eligible for some reason they’ve put a simple yet clear disclaimer at the very start of the completion process. We knew …

FBSimulatorControl – A Mac OS X library for managing and manipulating iOS Simulators

Just launched by Facebook: FBSimulatorControl, A Mac OS X library for managing, booting and interacting with multiple iOS Simulators simultaneously. FBSimulatorControl works by linking with the private DVTFoundation, CoreSimulator and DVTiPhoneSimulatorRemoteClient frameworks that are present inside the Xcode bundle. Doing this allows FBSimulatorControl to talk directly to the same APIs that Xcode and simctl do. …

I know what you did last summer

Yes, bram.us is still a thing. Save a few posts mid July not that much has happened around here. So, what have I been up to the past two months? Here’s a small list (saving the best for last): I reviewed a book I went diving I renovated my house I went camping with my …

The Martian

During a manned mission to Mars, Astronaut Mark Watney (Matt Damon) is presumed dead after a fierce storm and left behind by his crew. But Watney has survived and finds himself stranded and alone on the hostile planet. With only meager supplies, he must draw upon his ingenuity, wit and spirit to subsist and find …

Web Bluetooth API in Chrome

navigator.bluetooth.requestDevice({ filters: [{ services: [‘battery_service’] }] }) .then(device => { // Human-readable name of the device. console.log(device.name); // Indicates whether or not the device is paired with the system. console.log(device.paired); // Filtered UUIDs of GATT services the website origin has access to. console.log(device.uuids); // Attempts to connect to remote GATT Server. return device.connectGATT(); }) .then(server …