Tech Blog

 

Zero downtime schema updates for mongodb / mongoengine

In IoT workflows, there is rarely an opportunity to take a system offline whilst updates are applied. In some situations a message queue can be used to hold back a torrent of incoming messages (from MQTT or AMQP), however this can only happen for so long. When your database reaches... Read more


A Serial Communication Library for Arduinos

Recently, we’ve been working on a large internet connected machine. This involves quite a large amount of electronics to drive all it’s motors, actuators and sensors. In a recent upgrade we redesigned the electronics and ended up using a system distributed across multiple arduinos, necessitating a communication protocol which could... Read more


SWmobile talk

Thanks for having me SWmobile! I’ve uploaded a web version of my deck, which you should be able to see below: Read more


Really simple MQTT IoT logging with Keen IO

We’ve blogged about Keen IO before, and love using MQTT in our IoT projects. So we decided to combine the two! Announcing KeenMQTT. MQTT is perfect for distributing and acting on near realtime data, but there isn’t much in the way of historical data access. That’s where KeenIO comes in.... Read more


ESP8266 Bootloader Modes and GPIO state on Startup

Introduction The ESP8266 is an extremely cheap wifi module with a fairly capable processor on board. Recently, it’s exploded on the hobbyist scene due to its low cost. Even better, there’s a high level development platform available (NodeMCU) which runs eLua code making programming quick and simple. We’ve been using... Read more



Zoetrope bringing some IoT fun to Business Showcase South West

Zoetrope exhibited their IoT consultancy offering at the Business Showcase South West show on the 14th and 15th of May, the decision to attend the show was taken at quite short notice and we had only limited time to put together an engaging and fun display. We decided to take the... Read more


Web spaghetti - @drupal, @getbase, @zapier and web hooks

At Zoetrope, we keep very close ties between engineering and sales (we’re still all in the same room after all!). As part of this we attempt to reduce the number of copy-paste type tasks. On the Zoetrope homepage you may have seen this Demo registration form: This form pings off... Read more


Angle Sensor Breakout Board Giveaway

Giveaway! Edit: Thanks for all the comments, some brilliant ideas. If we could send one to everyone we would but unfortunately we only have three. We'll be sending them out soon. We’ve recently made up a batch of the angle sensor boards described below, leave a comment if you’d like... Read more


Reverse Engineering Wireless Pro Studio Lighting

Introduction At Zoetrope we always want to make sure our photos look as good as possible, this means ensuring the lighting is perfect for every shot. We currently use a number of Lencarta UltraPro 300 studio strobes to light our photos but in some cases, the power of the flashes... Read more


Beyond JPEG: Videos and emerging image standards

We’ve recently been investigating file formats to allow our animated 3D product photography to be optimised for different use cases, rather than just on the web. Currently our viewer loads 108 JPEGs of various sizes depending on the user’s device. In some situations, a javascript environment may not be available... Read more


Integration Testing with Protractor, WebdriverJS and Sauce Labs

Edit: See our follow up post to this which explains how we’ve refined our process. We’ve recently begun automating integration tests of the Zoetrope widget. When releasing any new code which could affect clients in production we have to be very careful, mainly ensuring that cross-browser compatibility is retained. WebdriverJS,... Read more


Javascript translations with google drive forms and gulp.js

We worked hard to keep the Zoetrope Engage™ Viewer (ZEV) embeddable widget as independent of language as possible. Most users find interacting with the widget very simple and require no help at all, however we wanted to ensure that it’s obvious that the image is interactive in words too. As... Read more


Replaying user interactions from Keen IO data

At Zoetrope we create engaging product photography allowing viewers to rotate and interact with products on ecommerce sites. One area we have been working on is analytics for the image viewer embedded in our client’s sites. We wanted to see how users actually behave while viewing a product; whether they... Read more


In Pursuit of Better Tethered Autofocus

Getting our images looking perfect is a huge priority at Zoetrope, and to help with this we developed a small utility providing a web interface to DSLR cameras. One issue we have is that using autofocus on our products is sometimes difficult - the small screens on cameras make it... Read more


Refining our UI Regression Tests

A few months ago we wrote about using Saucelabs and Protractor to create a testing framework around our javascript 3D photography viewer. Since then we’ve made a few changes to our process. Our previous process We started out by using Protractor and Saucelabs to grab screenshots of the viewer at... Read more