Hacker News “Who’s Hiring” Trends

Hacker News is somewhat of a bellwether for the tech industry in many ways.  The discussions that take place in that community are strong signals as to what trends are appearing in Silicon Valley and elsewhere.

On the first day of any given month the top post is guaranteed to be the “Who’s Hiring” post with at least 200 comments and often over 400. I was curious if the content in these particular threads would surface any trends or insights, so I built a tool that allows you to view the word frequency over the past 12 months of Who’s Hiring threads.

I used the Algolia API to download the data and then created two sets of json files, one with the number single word occurrence, and another with two word string occurrences (so you can compare “San Francisco” to “London”).

http://austinhutchison.com/hntrends/

To better compare the trends month over month I’ve taken a look at the number of occurrences divided by the number of words for that month. To get a view of the pure word count just uncheck the ratio box.

Here are the trends that I was most curious to investigate:

Locations

Screen Shot 2014-07-22 at 6.24.09 PM

Languages

Screen Shot 2014-07-22 at 6.24.25 PM

Android v. iOS

Screen Shot 2014-07-22 at 6.24.41 PM

Try it out yourself! I might suggest “growth hacker” and “data science”

Here’s the Github repository

D3 Map

When I started with D3 I wanted to make a visualization that displayed data by state. I had a lot of trouble (which ended up being due to a corrupted us-states.json file). I thought I would share this to help anyone else looking to make a map using D3js.

var w = 960;
var h = 620;

var projection = d3.geo.albersUsa()
.translate([w/2, h/2])
.scale([1200]);

var path = d3.geo.path()
.projection(projection);

var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);

d3.json('us-states.json', function(collection) {
svg.selectAll(".state")
.data(collection.features)
.enter()
.append("path")
.attr("d", path)
.attr("class", "state")
.attr("id", function(d){return d.properties.name})
.style("stroke", "white")
.style("stroke-width", 1.5)
.style("fill", function(d,i) {
console.log(i);
return "rgb(0,0," + (i * 4) + ")"
});
});