{"id":1221,"date":"2016-10-13T14:51:27","date_gmt":"2016-10-13T14:51:27","guid":{"rendered":"https:\/\/gosqeng.test\/?p=1221"},"modified":"2019-11-28T11:23:28","modified_gmt":"2019-11-28T11:23:28","slug":"september-hack-day","status":"publish","type":"post","link":"https:\/\/www.gosquared.com\/blog\/september-hack-day","title":{"rendered":"September Hack Day"},"content":{"rendered":"<p>Autumn is rolling on, and the team has been busy <a href=\"https:\/\/www.instagram.com\/p\/BLJWPw_gFD6\/\" target=\"_blank\" rel=\"noopener noreferrer\">breaking in<\/a> our nice new office. Never fear, though, for we still managed to fit in a Hack Day in September. Here&#8217;s what we got up to.<\/p>\n<h2>Chat, but on Android!<\/h2>\n<p>Having recently taken over development of our iOS Chat SDK, Ben began to wonder how much effort it would take to build out a much requested Android SDK. Whilst we are not new to Android (<a href=\"https:\/\/play.google.com\/apps\/testing\/com.gosquared.inbox\">try out our Inbox beta today!<\/a>) there were a lot of unknowns to consider.<\/p>\n<p>Setting out to hack together a bare-bones implementation of Chat for Android, by the end of the day he had a working implementation that could show chat, send and receive messages and keep inline with the host apps styling.<\/p>\n<p>It\u2019s definitely early days for our Android SDK but this Hackday work led us to put it firmly on our roadmap so stay tuned!<\/p>\n<h2>Fancy customer intelligence<\/h2>\n<p>Qualifying prospects and identifying who are set up to get the most value out of your product or service can arguably be one of the most important steps in your sales process. You always want to make sure you&#8217;re spending the right amount of time with the right customers, but getting to that point can usually be quite a time consuming process.<\/p>\n<p>There will be common characteristics of businesses who are set up to take a lot of value from GoSquared but qualifying them can be manual and repetitive.<\/p>\n<p>With any tasks involving those attributes, there&#8217;s usually a better way to go about doing it. As a SaaS platform set up to help online businesses operate better, there are commonalities we can infer from a prospect&#8217;s websites to see which are currently set up to take the most value from GoSquared. If we can identify things on a business website such as a user systems and other analytics platforms and customer communication tools, we can make a reasonable assumption that they&#8217;ll be able to see a lot of value of having all of those tools centralised in one place.<\/p>\n<p>Russell built a qualification tool in Ruby that is able to parse a website and identify any of these commonalities. Then based on a set of rules, programmatically qualify the likelihood of them seeing value in a GoSquared demo. In those cases we&#8217;re able to proactively reach out to make sure they\u2019re set up to take as much value out of their GoSquared trial as possible. As a tool it has helped us streamline our sales process and ensured that we\u2019re spending our time as effectively as possible with our clients.<\/p>\n<h2>A language that isn&#8217;t JavaScript!<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/engineering\/16_09_30_flocking_02.gif\" alt=\"\" \/><\/p>\n<p>Leo\u2019s hackday was spent learning and hacking around in <a href=\"http:\/\/elm-lang.org\/\">Elm<\/a>, a functional language for the browser that, among other benefits, offers a very compelling guarantee that <a href=\"https:\/\/guide.elm-lang.org\/error_handling\/\">no runtime errors<\/a> are possible. Rather than write a webapp, however, Leo used the language to implement a version of the \u2018<a href=\"https:\/\/cs.stanford.edu\/people\/eroberts\/courses\/soco\/projects\/2008-09\/modeling-natural-systems\/boids.html\">boids<\/a>\u2019 flocking simulation. Boids explores the concept of emergence, common to many natural systems, whereby complex behaviour arises out of much simpler interactions between individuals. In simulating flock behaviour, each boid follows just three rules: it avoids collisions; steers itself to match the general heading of nearby boids; and tends towards the perceived centre of the flock.<\/p>\n<p>If you\u2019re already familiar with <a href=\"https:\/\/facebook.github.io\/react\/\">React<\/a> and <a href=\"http:\/\/redux.js.org\/\">Redux<\/a>, the architecture of Elm apps is very similar (and in fact inspired Redux): your program defines a model; a function for rendering the model to the browser window; and various actions that update the model in order to drive the app forward. This makes implementing boids in Elm relatively straightforward: our <a href=\"https:\/\/github.com\/LeoBakerHytch\/elm-boids\/blob\/e3f25dc941825afee08bc49dbef71a0fb41ff6df\/Boids.elm#L26-L38\">model<\/a> is just a list of boids, each of which has a position and velocity; the <a href=\"https:\/\/github.com\/LeoBakerHytch\/elm-boids\/blob\/e3f25dc941825afee08bc49dbef71a0fb41ff6df\/Boids.elm#L231-L248\">view function<\/a> draws each boid to a canvas in the browser window; and finally we define <a href=\"https:\/\/github.com\/LeoBakerHytch\/elm-boids\/blob\/e3f25dc941825afee08bc49dbef71a0fb41ff6df\/Boids.elm#L152-L182\">rules<\/a> that are called on every animation frame to update the velocity (and position) of each boid.<\/p>\n<p>Hopefully you\u2019ll agree that the result bears at least a passing resemblance to a <a href=\"https:\/\/youtu.be\/XH-groCeKbE\">flock of birds<\/a>.<\/p>\n<h2>Graph many of the things<\/h2>\n<p>Geoff built on a previous hack day (link to the last one where we did smart group metrics) where we built Time Series graphs to show how many people are in a Smart Group over time and visualised them on a dashboard. During that hack day we built everything as rough-and-ready code that ran only on Geoff&#8217;s local machine. In this hack day, Geoff put together a proper API that can be access via public net to load time series graph for any Smart Group. This allows our team to plot metrics for any group they&#8217;d like to analyse over time, which has proved useful for visualising our internal DAU\/WAU\/MAU metrics for GoSquared Live Chat which we announced last week.<\/p>\n<h2>ELB Party<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/engineering\/16_09_30_http2_all_the_things.jpg\" alt=\"\" \/><\/p>\n<p>JT set about switching some of our <a target=\"_blank\" href=\"https:\/\/aws.amazon.com\/elasticloadbalancing\" rel=\"noopener noreferrer\">Elastic Load Balancers<\/a> over to AWS&#8217;s new <a href=\"https:\/\/aws.amazon.com\/elasticloadbalancing\/applicationloadbalancer\/\" target=\"_blank\" rel=\"noopener noreferrer\">Application Load Balancers<\/a>. These new load balancers from AWS give us slightly imrpoved performance over the older ones, along with built-in support for HTTP\/2 and WebSockets.<\/p>\n<p>All requests to the GoSquared site, our CDNs and our API are now served over HTTP\/2 via these load balancers where the client supports it (most modern browsers). You may recently have noticed a slight speed-up in the loading time of data in the GoSquared dashboards and apps &#8211; this is thanks to HTTP\/2&#8217;s improved support for parallel requests.<\/p>\n<p>Notably, we haven&#8217;t switched over our main tracking infrastructure to the new load balancers yet &#8211; JT experimented with this, but we were seeing some performance issues, so for the time being all tracking requests are still served via HTTP\/1.1. We&#8217;ll probably follow up with further details here on the Engineering Blog once we have got to the bottom of these issues, with an explanation of how we&#8217;ve made things work.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autumn is rolling on, and the team has been busy breaking in our nice new office. Never fear, though, for&#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1452],"tags":[],"class_list":["post-1221","post","type-post","status-publish","format-standard","hentry","category-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.6 (Yoast SEO v19.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>September Hack Day - GoSquared Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.gosquared.com\/blog\/september-hack-day\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"September Hack Day\" \/>\n<meta property=\"og:description\" content=\"Autumn is rolling on, and the team has been busy breaking in our nice new office. Never fear, though, for...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.gosquared.com\/blog\/september-hack-day\" \/>\n<meta property=\"og:site_name\" content=\"GoSquared Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GoSquared\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-13T14:51:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-28T11:23:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/static.gosquared.com\/images\/engineering\/16_09_30_flocking.png\" \/>\n<meta name=\"twitter:creator\" content=\"@floopily\" \/>\n<meta name=\"twitter:site\" content=\"@GoSquared\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"JT\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\",\"name\":\"GoSquared\",\"url\":\"https:\/\/www.gosquared.com\/blog\/\",\"sameAs\":[\"https:\/\/instagram.com\/gosquaredteam\",\"https:\/\/www.linkedin.com\/company\/go-squared-ltd.\",\"https:\/\/www.facebook.com\/GoSquared\",\"https:\/\/twitter.com\/GoSquared\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png\",\"contentUrl\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png\",\"width\":1270,\"height\":250,\"caption\":\"GoSquared\"},\"image\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#website\",\"url\":\"https:\/\/www.gosquared.com\/blog\/\",\"name\":\"GoSquared Blog\",\"description\":\"Turn visitors into customers.\",\"publisher\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.gosquared.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#webpage\",\"url\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day\",\"name\":\"September Hack Day - GoSquared Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#primaryimage\"},\"datePublished\":\"2016-10-13T14:51:27+00:00\",\"dateModified\":\"2019-11-28T11:23:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.gosquared.com\/blog\/september-hack-day\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.gosquared.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"September Hack Day\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#webpage\"},\"author\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef\"},\"headline\":\"September Hack Day\",\"datePublished\":\"2016-10-13T14:51:27+00:00\",\"dateModified\":\"2019-11-28T11:23:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#webpage\"},\"wordCount\":979,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/september-hack-day#primaryimage\"},\"thumbnailUrl\":\"\",\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.gosquared.com\/blog\/september-hack-day#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef\",\"name\":\"JT\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g\",\"caption\":\"JT\"},\"description\":\"JT is a co-founder and the lead front-end engineer at GoSquared. He's responsible for the shiniest of the shiny projects we work on.\",\"sameAs\":[\"https:\/\/twitter.com\/floopily\"],\"url\":\"https:\/\/www.gosquared.com\/blog\/author\/jt\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"September Hack Day - GoSquared Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.gosquared.com\/blog\/september-hack-day","og_locale":"en_US","og_type":"article","og_title":"September Hack Day","og_description":"Autumn is rolling on, and the team has been busy breaking in our nice new office. Never fear, though, for...","og_url":"https:\/\/www.gosquared.com\/blog\/september-hack-day","og_site_name":"GoSquared Blog","article_publisher":"https:\/\/www.facebook.com\/GoSquared","article_published_time":"2016-10-13T14:51:27+00:00","article_modified_time":"2019-11-28T11:23:28+00:00","twitter_card":"summary_large_image","twitter_image":"https:\/\/static.gosquared.com\/images\/engineering\/16_09_30_flocking.png","twitter_creator":"@floopily","twitter_site":"@GoSquared","twitter_misc":{"Written by":"JT","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.gosquared.com\/blog\/#organization","name":"GoSquared","url":"https:\/\/www.gosquared.com\/blog\/","sameAs":["https:\/\/instagram.com\/gosquaredteam","https:\/\/www.linkedin.com\/company\/go-squared-ltd.","https:\/\/www.facebook.com\/GoSquared","https:\/\/twitter.com\/GoSquared"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png","contentUrl":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png","width":1270,"height":250,"caption":"GoSquared"},"image":{"@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.gosquared.com\/blog\/#website","url":"https:\/\/www.gosquared.com\/blog\/","name":"GoSquared Blog","description":"Turn visitors into customers.","publisher":{"@id":"https:\/\/www.gosquared.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gosquared.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#primaryimage","url":"","contentUrl":""},{"@type":"WebPage","@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#webpage","url":"https:\/\/www.gosquared.com\/blog\/september-hack-day","name":"September Hack Day - GoSquared Blog","isPartOf":{"@id":"https:\/\/www.gosquared.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#primaryimage"},"datePublished":"2016-10-13T14:51:27+00:00","dateModified":"2019-11-28T11:23:28+00:00","breadcrumb":{"@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.gosquared.com\/blog\/september-hack-day"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.gosquared.com\/blog"},{"@type":"ListItem","position":2,"name":"September Hack Day"}]},{"@type":"Article","@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#article","isPartOf":{"@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#webpage"},"author":{"@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef"},"headline":"September Hack Day","datePublished":"2016-10-13T14:51:27+00:00","dateModified":"2019-11-28T11:23:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#webpage"},"wordCount":979,"commentCount":0,"publisher":{"@id":"https:\/\/www.gosquared.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.gosquared.com\/blog\/september-hack-day#primaryimage"},"thumbnailUrl":"","articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.gosquared.com\/blog\/september-hack-day#respond"]}]},{"@type":"Person","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef","name":"JT","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g","caption":"JT"},"description":"JT is a co-founder and the lead front-end engineer at GoSquared. He's responsible for the shiniest of the shiny projects we work on.","sameAs":["https:\/\/twitter.com\/floopily"],"url":"https:\/\/www.gosquared.com\/blog\/author\/jt"}]}},"wps_subtitle":"Androids, boids, and other things ending in oid. Also load balancers and graphs and fancy sales-qualifying algorithms","_links":{"self":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts\/1221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/comments?post=1221"}],"version-history":[{"count":0,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts\/1221\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/media?parent=1221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/categories?post=1221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/tags?post=1221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}