Understanding JavaScript’s object oriented programming system can be difficult, especially if your background is in a language that uses a class-based system such as Python, Java, or C++. I can remember being incredibly frustrated trying to understand how objects, prototypes and constructor functions work together when I first started out in JavaScript. This blog post is meant to be the guide that I never had back then. In it, I’ll introduce the key concepts in JavaScript’s prototype-based OOP system, hopefully addressing some of the confusion surrounding it.

Objects in JavaScript

Javascript has six primitive types as specified in ECMAScript 2015: undefined, null, boolean, number, symbol, and string. Everything else is an object. Objects are collection of key-value pairs called properties. An object can be created by enclosing colon-separated keys and values in curly braces, and is called an object literal. Here’s an example:

Read More →

As part of the engagement team at Hootsuite, we use React as part of our front-end framework for everything from the streams that users see when they log on to dashboard to the new Assignment Manager. Testing is crucial to ensure that our code will work correctly when it has the right inputs, or will fail gracefully when it doesn’t. One of the many challenges of front-end testing is that with increasingly complex frameworks like React, thorough tests are needed to ensure that components render correctly, receive the right props, and update properly. Such tests are often difficult to implement, maintain, and understand. While React offers a  ReactTestUtils library, the library is very basic in terms of ease of testing and manipulating the React component’s output. We went as far as writing our own test utils but it simply did not provide the extensive coverage needed.

Enter Airbnb’s Enzyme!


Read More →

While working at Hootsuite, I’ve had the pleasure of working in-depth with React to build our newest features for the dashboard. For example, I was tasked with building a component to show a horizontal list of items that adapted to the changing window size. Based on the window width, my component would show a dynamic amount of items and tell the user how many of those items were hidden if any. It’d be a fairly simple task if the amount of items was static, but but since the number of items is dynamic, I had to calculate how many to display each time the window size changed.

More specifically, the amount of items in the list should change depending on the size of the container. The last item in the list should show how many hidden items there are in the list if all the items didn’t fit (i.e +3).

For example:

  • 6 items
  • Can only fit 4
  • (item) (item) (item) (+3)
Read More →

Moving to Docker and Container Orchestration

At Hootsuite, we are moving from in-place deployments with statically provisioned hosts to running Docker containers on an orchestration platform. This platform manages the running containers and handles scaling and failure recovery. Transitioning to Docker will allow us to build microservices more quickly and with reduced operational overhead. We’ve chosen Marathon and Mesos as our orchestration platform (other options were Docker Swarm, Kubernetes, ECS, and Nomad).

How do we deploy with Marathon and Mesos?


Read More →

Rhys and Noah

Rhys Rustad-Elliott and Noah Tajwar.

Why does Hootsuite offer Technical Summer Jobs to High School Students?

Because these kids are amazing. This blog post here details their accomplishments, our philosophy, and a request for more industry peers to help by starting a paid high school summer program: http://code.hootsuite.com/why-you-need-high-school-students/

How will Rhys and Noah contribute over the next two months?

Noah has joined our Android team, and Rhys has joined our Publishing team. Both will pair with a training guide, go through our onboarding program, participate in all aspects of software engineering as a team, work out loud, participate in Guild meetings, demonstrate their work at our Wednesday All Hands, write a blog post, and that’s just the beginning 🙂

Read on to learn more about Rhys and Noah. Read More →

The biggest idea in frontend development today is DOM as a function of state. It’s a game-changing concept that proved particularly effective for Hootsuite streams, which are essentially a function of social network data and a user’s interaction with that data.

Functional Front End by Dian Jin

Today, Hootsuite streams are built in React and use Flummox to manage application state. But that’s just an implementation detail – the core of our product lies in the way we organize our data and the functions that transform it into views. In this article, I’ll be presenting a glimpse of the application state driving Hootsuite Streams and more generally, things to consider when designing global state trees for functional frontends such as React.

Read More →

Transitioning from a monolithic application to a set of microservices can help increase performance and scalability, but it can also drastically increase complexity. Layers of inter-service network calls for add latency and an increasing risk of failure where previously only local function calls existed.

In my talk from Scala Days 2016 in New York, I spoke about how to tame this complexity using Apache Kafka and Reactive Streams to:

  • Extract non-critical processing from the critical path of your application to reduce request latency
  • Provide back-pressure to handle both slow and fast producers/consumers
  • Maintain high availability, high performance, and reliable messaging
  • Evolve message payloads while maintaining backwards and forwards compatibility.


About the Author

Jim Jim is a Senior Engineer on Hootsuite’s Platform team. When he’s not working on building a rapidly expanding collection of Scala/Akka micro services, he likes cycling and writing/playing music. Follow him on Twitter @jimriecken.

“It’s 10:00PM, do you know where your microservices are?”

During our SOA transition at Hootsuite, we have noticed that visibility into our service relationships, dependencies and status is paramount to keeping our team, our build pipeline and application running smoothly.

In this presentation I’d like to share with you an API we baked into our Service Oriented Architecture that enables us to explore our applications service dependency graph in real time.

About the Author

Adam Arsenault is a specialist in full stack and mobile development. He leads the mobile web and APIs team at Hootsuite. Get in touch via Twitter @adam_arsenault

Can you guess what these two scenarios have in common?

Imagine seeing Google or Facebook working on ways to provide internet connectivity to remote regions, and then launching project Seed—an off-the-grid web server that solves the same problem on a smaller scale.

Or say you built an Android app, and in the process figured out a unique way to improve the user experience when the phone is turned on its side. When you write about your methods, you hear from programmers who thank you for saving them tons of time.

These would be great accomplishments for any senior technologist. The fact is, these are examples of the enthusiasm and accomplishments of high school students.

In this post I’m going to illustrate why a paid, technical summer high school program has, in my mind, no downside for students, employers, or schools.

Eric Hamber Kids come for a visit Read More →