As the summer of 2016 draws to a close (it was a nice two weeks while it lasted), the team has been busy again hacking on exciting projects. Here’s what we got up to in August
React + D3 = shiny
Leo spent his hackday making it snow GoSquared logos with React, Redux, and D3. React efficiently handles rendering a bunch of logos as inline SVGs, positioned at random around the cursor according to a distribution generated by D3. On every animation frame, the position of each logo is updated according to a velocity vector, which grows over time to simulate ‘gravity’, giving the appearance of falling snow.
ML all the things!
Geoff explored ways to get more out of chat message data with an enrichment API. Originally he set out to make use of Google Cloud Platform’s vision API to pull out text from any images uploaded with the chat message. The text could then be indexed and used in search for the message, while the additional data about the image could be returned in the API response.
Whilst experimenting with that, he also took the natural language API for a spin, to perform sentiment analysis and entity detection on the chat message text. This data could also be returned in the API response along with the chat message, further offering more insight into the message content.
Due to various limitations along the way this didn’t quite make it to being a fully hosted API. The original intent was to use AWS API Gateway & Lambda, but a frustrating limitation of Lambda is it doesn’t support natively compiled node modules. Furthermore, Google’s Vision API can only analyse images stored on GCP storage, and there wasn’t enough time to lay down the plumbing to make this happen. Still though, a working PoC resulted locally, which still provided some laughs on demo day when making up test strings for sentiment analysis.
Automagic Ruby configuration
One of the reason people love Ruby on Rails is its ability to get a web app up an running in no time, particularly through the use of its generators. Russell thought what better generator could you possibly build then one that would automatically inject our javascript tracking code into each Rails View in you app. Russell built a simple Gem that once installed, you just need to run rails generate gosquared:config ‘your_site_token’
and you’ll have our GoSquared tracking code and GoSquared chat on all your pages, without having to worry about any of that pesky HTML or Javascript.
Moar microservices!
Following on from last month’s hack day, JT set about exploring ways to benefit further from microservices. The decoupling of components inside our user authentication system made it easy to migrate components such as our password system to their own, completely self-contained systems. This gives us much greater control over the access levels and permissions to these systems (which means better security for everyone), and allows us to make under-the-hood changes much more easily.
Tinkering on internal tools
Almost all businesses have some sort of internal tooling. At GoSquared we have GSHQ and 3 years ago it was 🔥💩. Since then we released GoSquared People and our need for our own internal tool has dropped dramatically. Now, if we want to look up a customers profile, see the last session they had online or how engaged they are we just look at their GoSquared People Profile. It’s meant that in the past 2 years GSHQ has only received a total of 44 commits, in comparison GoSquared People has received nearly 4,000.
So Hugh decided to jump back into the GSHQ codebase and see what improvements we could make:
First off Hugh added in Chat and Profile links everywhere, now it’s just one click to start a live chat conversation with any of our customers. As a SaaS business one of our key metrics is Monthly Recurring Revenue (MRR). The team can now see a simple stream of all the updates. User timelines have also been added in, making it easier too spot if customers have had a recent issue or a traffic spike.
Beer.
Ben was on holiday, so he spent hackday drinking beer in Germany. Lucky him.