The world of social media moves fast as new platforms arise and gain popularity. Since Hootsuite is here to champion the power of human connection, we want to be able to integrate new social channels quickly. This was one of the driving factors behind creating a universal polling system.

Microservices

The first design decisions were to determine what characteristics of a polling system can be shared between all social channels. This led to splitting our system into a shared scheduler, responsible for registrations, polling frequencies, scheduling, retrying, dealing with rate limits, etc., and a worker for making the actual API calls…


As summer interns on the Measure backend team in Bucharest, we had to implement functionalities for both Hootsuite Insights and Analytics. We worked on three main projects, involvins controllers and services.

What are controllers? Our data processing system is laid out as a pipeline. The entities within it are called controllers, and they communicate through queues. Data goes through the pipeline, where we might access extra information from our services or the Internet.

As for services, they define a functionality or a set of functionalities that different clients can reuse for different purposes, together with the policies that control its…


Background

As many companies tend towards a service oriented architecture, developers will often wonder whether more and more parts of their service could be moved into the cloud. Databases, file storage, and even servers are slowly transitioning to the cloud, with servers being run in virtual containers as opposed to being hosted on a dedicated machine. Recently, FaaS (function as a service) were introduced to allow developers to upload their “application logic” to the cloud without requiring the server, essentially abstracting the servers away. Despite not having to worry about the servers, developers find that they now have to deal with…


Why Migrate? — The Non-Technical Parts

Earlier this year, our Product Operations and Delivery team decided to migrate services from our Mesos cluster to Kubernetes. George Gao wrote a post detailing the technical reasons for the move. On the non-technical side of things, the tooling around Kubernetes was more developer friendly than what Mesos offered, which bode well for our dev teams. Additionally, only the core operations team that originally implemented Mesos understood it. When problems arose, they were the only ones capable of troubleshooting.

Following an evaluation of alternatives, the team made a bet on Kubernetes and started migrating services on Mesos with the goal…


The Hootsuite App Directory is a collection of extensions and applications which Hootsuite users can add to their Hootsuite dashboard to create a customized experience. Since its launch in 2011, it has been used by millions of Hootsuite customers. In the past 6 years, it has accumulated gigabytes of data, from information about the apps that people can install to information about which apps are installed for each user. As more apps are released into the app directory and more customers install and use apps, it becomes all the more necessary to have a database which is easy to maintain…


Traditionally, native Android development was done using Java. Kotlin is a relatively recent JVM language developed by JetBrains and was first released in 2011. The Android team at Hootsuite was one of the earliest adopters of Kotlin. In April 2016, the first Kotlin commit was added by converting a Java class into a Kotlin data class. It was shipped to production, and Kotlin was officially introduced into the Hootsuite app. Kotlin turned out to be a boon for the codebase and it’s quickly becoming the go-to programming language for Android Development at Hootsuite. I’ve spent the majority of my time…


Introduction

During my co-op term, I got the opportunity to work with the creators of Atlantis to contribute a Slack integration feature, providing value to both Hootsuite and the open source community. I learned significantly and enjoyed developing the feature all the way from design to implementation and testing.

Background

At Hootsuite, we write our infrastructure-as-code using Terraform. To effectively collaborate on Terraform, we created and open sourced Atlantis. Here’s a brief introduction for those unfamiliar with Terraform or Atlantis.

What is Terraform?

Terraform is a tool for writing infrastructure-as-code, controlled via a Command Line Interface (CLI). …


Here at Hootsuite we’re always looking for better ways to utilize our time and new technology. That’s why we’re looking at building an environment that helps developers leverage machine learning (ML) in production and minimize the overhead (i.e. amount of technical debt) required.

The Problem

Currently, ML is often done on a very ad-hoc basis. That’s because there is no standardized workflow — as of yet — to deal with many of the unique difficulties associated with ML. At Hootsuite, we identified four key components that are needed:

  • Data: All training and verification data needs to be validated and versioned…


The Inbox Project

For my coop term, my team and I tackled the Inbox project which is a platform that allows users to look at private messages across multiple social networks — think a Gmail or Facebook Messenger type experience, for all of your social networks. On top of basic messaging features, we wanted to integrate Inbox with existing Hootsuite functionality, including Hootsuite tagging feature. This would let users add and remove tags to private messages and filter over them. This was an interesting problem that I tackled, that involved some high level architecture decisions. …


Background

At Hootsuite, our value proposition lies in the ease of managing multiple social media accounts in one central place. This means that we have to build a platform to integrate the numerous social media that we support. As part of my team’s effort in social channel optimization, we found 38+ hard coded places across various large codebases that we had to modify to support a brand new social network.

Motivation

To improve the development process as we seek to add the next N social networks, we want to find an efficient and elegant way to support new channel integration. The 38+…

Hootsuite Engineering

Engineering at Hootsuite. Check out our code blog at https://medium.com/hootsuite-engineering/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store