The Zen of Watch Maintenance

sinn265 versus sna139

On the left, an aspirational watch, the Sinn265 mechanical with special materials, special mechanical movement and special, ridiculous price. On the right, the Seiko sna139 for the less that 8% of the price…if I could put one together from parts!

If you program and do interfaces, you might like watches. It is a distillation of function and interface and taste. It’s technology as your personal signature and of course, the Very First Wearable.

It might just be a reminder that not everything has to be ‘smart’ but no so smart looking.

You don’t need one any more, but you may want one because of it represents – a self contained universe of design thinking and craftsmanship that solves a problem that has been solved many times before, but in its own unique way.

Since it is a personal signature, when you find one you want, you want it. And when it is no longer available, you have to start thinking, ‘how badly do I want to make this happen?’ The answer may depend on whether you want to pick up a pair of Tweezers.

Here is an album was my first experience some time ago in making a watch I wanted from a few different pieces

JavaScript Promises A+ “Anytime, Anywhere”

Screen Shot 2015-01-15 at 5.54.49 PM

Like Vasquez says: “Anytime, Anywhere”

tl;dr: here is the codepen

Expect all network communication to be asynchronous. You don’t know when requests will come back to you, and you likely have no idea what order they will arrive back. So you write your code asynchronously, same as you do in real life:

“Look, just get back to me when it’s done, ok?”

“Sure thing, I’ll call when it’s ready”

That’s all a Promise is – that conversation and that commitment. And they are a great design pattern to restore some sanity to asynchronous code.

Continue reading

Txt-tris: Hour of Code turns into several hours of code

I love Tetris, but always wanted to have some extra shapes to work with, from a single quantum of block up to a mighty 3×3, Here is a JavaScript/HTML/CSS Txt-tris engine at jsfiddle where you can make your own shapes using the matrix notation. The difference here from other Tetris-y engines is that there is one matrix per shape, and the rotation behavior is specified by setting flags in the newShape function(). For example, square blocks have only one rotation direction, long bars have only 2, others have 4. If you want, set it so only long bars are generated, and achieve hollow glory.

Try it out, and JJ Abrams yourself a few non-cannon shapes!

365 Days of Earthquakes in Canada

365 Days of Earthquakes in Canada Interactive

365 Days of Earthquakes in Canada Interactive

Living in Ottawa, I’ve only felt one at magnitude 5, but it got me thinking that we aren’t entirely stable.

This was a little personal project in using some OSS tools: Data sets from Natural Resources Canada data portal which contains GeoJSON Data embedded in custom data; OpenLayers3 (which is a rewrite of OpenLayers and not backwards compatible) . Try it out here, and grab the source on my Github. Comments and feedback and pull requests welcome.

If you are moving to OpenLayers3, the documentation is autogenerated, but the constructors aren’t really described all that well. The changes were enough to warrant a demo site and a workshop site that cover a lot of cookbook tasks. Find out more about Quakes in Canada at the NRCan quake center. If you want to do something with the datasets at Open Data, you can submit them to their App catalogue here

Where is Rosetta Interactive


Rosetta and Philae are working hard at comet 67P and how they got there makes for some good interactive content.

ESA teamed up with the visualization lab at TECField for this one and chose webGL for the interface. TEC used the ThreeJS javascript library for visualization. Data was loadied into the interface using two csv coordinate files – one for the paths and another for the timestamped milestones on the journey. All 3D model data was stored as OBJ files and texture mapped with png images. Audio uses ogg.

Elegant simple clean interfaces work best when exploring new content that stands on its own. The dash and interface are a DOM overlay on the webgl allowing for simpler responsive layout changes for window size. The milestones really pull the interactive together and it would be interesting to have them denoted as points on the scrubber timeline or allow sequential navigation between them (i.e. [next milestone: encounter with asteroid Stein 3D] )

With exportable and maintainable csv files, data compression is not optimized but export from content creators is kept simple. The app is kept up to date on a daily basis and no web backend is really needed for DB entry. It will be interesting to see if how it is kept up to date while the imagery from Philae on the surface starts coming in. It is likely there is a custom CSV editor to ensure that no errors are made and that orbital data can be imported from other engineering tools.

Any mission can use an interface like this. The spacecraft and target models could be changed up and of the CSV data on paths and milestones.

Social Media:
The big social media aspects for ESA are webcast links, first images, and animated GIFs and simulations of approach and landing. Interactive content showing a timeline has to justify itself in comparison social media and outreach tools which are dense and event-based. They attract a different set of users who want to share in exploration actions not simply the results of the exploration. To bridge the two, embedding of Twtter feed tool, YouTube videos in the milestones section would make this a gateway interface to social media. In the other direction, a ‘goto’ function and embedding capability would make this a tool that could be quickly reference on social media channels (i.e. share this viewpoint and 3 days of orbit time)