We’re hiring Back End Engineers

Sprout Social’s platform team is responsible for processing, storing, analyzing, and enriching millions of messages per day using a myriad of database technologies and languages. We use the latest techniques and tricks, from hadoop to tornado, to build software that is used 24/7/365 globally by names like Yammer, Twilio, McDonald’s and Fender. A typical day has a healthy mix of building new product features, improving existing ones and fixing problems identified by our global user-base. If you’re excited to work with tech like Cassandra, MySQL, Redis, Kafka, Solr, hbase, Java, and Python and are ready to immerse yourself in one of Chicago’s hottest startups, apply at backenddev@sproutsocial.com with your best code samples.

Skills & Requirements

  • You enjoy building software in a variety of languages.
  • You’re on top of the latest in scaling techniques.
  • You build your side projects to be distributed.
  • You want to work in a small, agile team with fast projects and tight deadlines.
  • Unit tests keep you sane.
  • You work hard and don’t need much oversight.
  • You like variety in your projects.
  • You deploy bulletproof code with time to spare.


Pluses

  • Scala, clojure
  • Open Source software contributor
  • Heavy SQL chops

About Sprout Social Inc.

Sprout Social is social media management platform that integrates with Twitter, Facebook Fan Pages, LinkedIn and other networks where consumers are engaging with businesses and brands. In addition to communication tools, Sprout Social offers contact management, competitive insight, lead generation, reporting, analytics and more – all in a package that’s intuitive and easy to use.

Without Sprout Social, an organization using social media is like a whole company sharing an email address. Our product processes 1000s of social media events per second to allow large and small organizations to efficiently interact with their customers. Have you ever tweeted about a product or service and received a prompt reply? That’s the kind of service that our customers strive for and that we enable.

Why else you might want to work at Sprout:

  • Your choice of Mac or PC setup with multiple monitors and whatever accessories you need.
  • Catered lunches, excellent coffee and loads of snacks and drinks
  • Comfortable office with many working environments. Stay heads-down or battle others on our 300 game arcade.
  • Great peers who share your passion for building great products.

We’re hiring Web Engineers

Sprout Social’s web team lives and breathes JavaScript. We use the latest techniques and tricks, from WebSockets to Backbone.js, to build software that is used 24/7/365 globally by names like Yammer, Twilio, McDonald’s and Fender. A typical day has a healthy mix of building new product features, improving existing ones and fixing problems identified by our global user-base. If you walk the JavaScript, HTML, and CSS stack with ease and are ready to immerse yourself in one of Chicago’s hottest startups, apply at frontenddev@sproutsocial.com with your best code samples.

Skills & Requirements

  • You really enjoy building software in Javascript.
  • You’re on top of the latest HTML5/CSS3 and want to use every Modernizr test you can.
  • You have great software design skills.
  • You want to work in a small, agile team with fast projects and tight deadlines.
  • Unit tests keep you sane.
  • You always test for cross-browser compatibility.
  • You work hard and don’t need much oversight.
  • You like variety in your projects.
  • You deploy bulletproof code with time to spare.

Pluses

  • Backbone.js experience
  • Open Source software contributor
  • Samples of websites or code you’ve built

About Sprout Social Inc.

Sprout Social is social media management platform that integrates with Twitter, Facebook Fan Pages, LinkedIn and other networks where consumers are engaging with businesses and brands. In addition to communication tools, Sprout Social offers contact management, competitive insight, lead generation, reporting, analytics and more – all in a package that’s intuitive and easy to use.

Without Sprout Social, an organization using social media is like a whole company sharing an email address. Our product processes 1000s of social media events per second to allow large and small organizations to efficiently interact with their customers. Have you ever tweeted about a product or service and received a prompt reply? That’s the kind of service that our customers strive for and that we enable.

Why else you might want to work at Sprout:

  • Your choice of Mac or PC setup with multiple monitors and whatever accessories you need.
  • Catered lunches, excellent coffee and loads of snacks and drinks
  • Comfortable office with many working environments. Stay heads-down or battle others on our 300 game arcade.
  • Great peers who share your passion for building great products.

JavaScript Time Zone Conversion with Walltime

Time is important.  Keeping accurate time has been one of the major challenges of technology throughout all of history.  Here’s a little history lesson from the US Navy:

Naval Observatory

In 1845, at the request of the Secretary of the Navy, the Observatory installed a time ball atop the 9.6-inch telescope dome. The time ball was dropped every day precisely at Noon, enabling the inhabitants of Washington to set their timepieces. Ships in the Potomac River could also set their clocks before putting to sea. The Observatory’s Time Service was initiated in 1865. A time signal was transmitted via telegraph lines to the Navy Department, and also activated the Washington fire bells at 0700, 1200, and 1800.

For the Navy, time is important for navigating all those ships around the globe.  For Sprout Social, time is important because we have some pretty cool technology that determines the optimal time to send a tweet or Facebook post to get the most reach for our customers.

Time in the Browser

Right now, browsers can give you pretty accurate time information for the time zone currently configured on your computer.  The problem comes in when you need to know what time it is in another time zone than your own.  For instance, if I’m a user in Australia, and I want to post something at 3:00 AM Chicago time, where the majority of my followers are, how do I calculate that accurately with JavaScript and send it up to the server?

Daylight Savings and Olson Files

It turns out, the hard part of these equations is determining the daylight savings offset for a given time zone.  We already have a really easy way to get UTC for any time in JavaScript; the problem is determining if another time zone than our own currently has a daylight savings rule applied.  Otherwise, we could just keep a map of all the time zone offsets and apply the different offsets to our UTC – back and forth.

It turns out, there is a group of files that keep a record of all the daylight savings rules across the world just for this kind of thing:

The tz database, also called the zoneinfo database or IANA Time Zone Database, is a collaborative compilation of information about the world’s time zones, primarily intended for use with computer programs and operating systems. It is sometimes referred to as the Olson database after the founding contributor Arthur David Olson.

The problem is that no one has really implemented using them in JavaScript yet (there is another library called timezone-js, but it turns out they are not applying the rules properly).

Introducing Walltime-js

Walltime makes it easy to convert from one UTC date to the “wall time” of just about any time zone:

In addition, what if we need to convert from a local time zone time in another time zone than your own to a UTC time?  We’ve got you covered there too:

Make sure to check out the source on Github and file any issues you may find.

My Change Control Workflow

My goal as a developer is to deliver a great product in the least amount of time possible without sacrificing quality.  In recent years I’ve refined my workflow to facilitate my needs.  Having a strong workflow is an important factor when trying to produce a high quality deliverable.  I’d like to highlight some of the things I’ve learned along the way that have helped me deliver good code.  That being said, I believe that you should own your workflow.  What may work for you may not seem natural to another developer.  There is no “right” way.  The “right” way to me is the methodology that allows you to create something quickly with high quality and does not create problems for other developers. <   Continued  >

Building a Custom Icon Font for the Web

With mobile devices accounting for over 10% of all Web traffic and hardware manufacturers producing higher pixel density screens, it’s clear that the days of one-size-fits-all icon sprite images are coming to an end. Icon fonts (aka symbol fonts) have grown in popularity as one such replacement for traditional sprite and icon sets because they produce high quality vector shapes without the hefty download and are compatible with most legacy browsers. <   Continued  >

Thanks for your letters. Now we can parse them.

Overview: This post focuses on our experiences building on Postmark’s Inbound feature.

Postmark is our trusted mail carrier

Here at Sprout we use Postmark to deliver the emails that come out of our application. An example is the welcome email we send after someone signs up. Rather than build and maintain our own infrastructure to deliver emails, we gladly delegate that to them! <   Continued  >

Secret Sauce behind Mobile Autocomplete

Today we decided that we needed to have autocompletion of usernames in the compose view for the mobile apps.  There are a lot of ways we could do it, and trust me we talked through a lot of them.  Our solution though, I think is awesome.  I’ll let you in on a little secret: it’s not complicated.  And in that lies the beauty.

<   Continued  >

The Queue Behind the Curtain

I will try to keep this short, sweet, and to the point. There’s a lot that goes on behind the pretty face that is sproutsocial.com. A web of systems work together to gather, enrich and store gobs of data quickly for our users. Messages are passed between these systems to coordinate work. This entry will focus on my recent experience with designing for high availability with Apache’s ActiveMQ.
<   Continued  >