Showing posts with label visualization. Show all posts
Showing posts with label visualization. Show all posts

Aug 28, 2010

Every Google acquisition plotted on an infographic

by Jason Clarke

It seems like you can't go anywhere online without running into the latest trend: infographics. The idea is to take a bunch of information, and distill it down into something easily digestible. It can be a very effective tool, but it can also be abused.
Scores.org has an interesting infographic that shows Google's acquisitions through the past 10 years, starting with their purchase of Deja, which became Google Groups, right up until their most recent purchase of Like.
One of the things that stands out the most when looking at this vertical graph is how much Google's appetite for acquisitions has increased. They bought three companies in July, and already another three in August of this year.
To be honest though, it takes longer to figure out how this graphic is trying to present information than it would to simply view these statistics laid out on a spreadsheet. And that's my general beef with most infographics.
On the other hand, I probably wouldn't have taken the time to look at a plain-jane spreadsheet of this information, so I guess pretty pictures aren't going away any time soon.

Source: http://www.downloadsquad.com/2010/08/26/google-acquisitions-infographic/

Mar 31, 2010

The Democrats Are Doomed, or How A ‘Big Tent’ Can Be Too Big

March 30th, 2010 by Christian

Time and again in American politics, Republicans have voted as a unit to frustrate our disorganized Democratic majority. No matter what's on the table, a few Democrats will peel away from the party core; meanwhile, all Republicans will somehow manage to stay on-message.
Thus, they caucus block us.
. . .
Articles noting this phenomenon anecdotally appear all the time, and despite the recent hopeful spate of Democratic victories, the fact that Republicans form an exceptionally effective opposition party is undeniable. Today, we're going to perform a data-driven investigation of this—and discover some fascinating things about the American electorate along the way. Our data set for this post is 172,853 people.
A Picture Of Our Political Evolution
I should start off by pointing out that the Left/Right political framework we're usually handed is insufficient for a real discussion, because political identity isn't one-dimensional. For example, many Libertarians have Left-leaning ideas about social policy, and Right-leaning ideas about personal property. Where do they fit on a single ideological line?
There are many methods of looking at the political spectrum, but the best way I've come across is to hold social politics and economic politics separate, and measure a person's views on each in terms of permissiveness vs. restrictiveness on a 2-dimensional plane. Like so:
As you can see, I've superimposed some 'party' labels, to add some real-world context. One could quibble with the names I've chosen, but I feel that, in a broad sense, they fit: Democrats have a permissive social outlook and believe in restricting the financial sector (through regulation); Republicans essentially believe the reverse. In their corner, Libertarians would like to end restrictions across the board, and, down in the lower right, we have people who prefer that all aspects of life be guided by some authority: religion, the government, whatever.
. . .
Now, with the definitions out of the way, we can get to some information. We'll begin with the most basic measurement: people's economic and social values. Because our data set is so comprehensive, we can even measure the change in these values with age.
Politics is a big part of dating, and we've gleaned this post's data from OkCupid's question database. Our sample size today is 172,860 people.
These lines contain a neat little story:
  • Both socially and economically, teenagers prefer an anything-goes type situation.
  • But as these teenagers grow up a bit and enter the job market, they quickly develop progressive economic ideas: perhaps a bit of "levelling" seems pretty good when you're staring up the professional ladder from the bottom rung. Meanwhile, their youthful live-and-let-live social philosophy begins to fade.
  • In their late 20s, they start making real money. Economic progressivism goes out the window, preferably out the window of a building with a doorman. As the adult mind turns to more material matters, social views don't change that much.
  • Finally, after the mid-40s, retirement looms. Our former teenagers check their collective 401(k)s and think, you know what, let's all get checks from the government. Social views take a hard turn for the more restrictive. At the end of the journey, economic and social views are again in agreement—only this time on the other side of the philosophical line!
Anyhow, these numbers really come alive when we take the next intellectual step and plot social and economic beliefs together as an ordered pair. So doing, we can get a picture of how the the average total political outlook evolves over time.
Now, with this picture in hand, we can go a step further with our data. The American two-party system creates an interesting mathematical situation: we can bisect our political planea two-party system allows us to bisect the political plane and see which party more closely reflects a given age group's ideology simply by asking which side of the line the group lands on. People sitting in the upper right half should vote, in theory, for Democrats. People in the lower left, for Republicans. Like so:
The Implication of Our Two-Party System
But of course this line assumes that social and economic values are equally important to a person and that his or her priorities don't change as time goes by. Obviously, neither is the case in the real world. So let's see exactly how those values change and do even more with our graph.
Digging deeper into OkCupid's matching database, we find the following new information on people's political priorities:
The way this data bears on our political plane is mathematically cool, but arctan(x) really has no place in a political discussion (except in Flatland!), so I'll just summarize bya change in political priorities causes our
dividing line to rotate
saying a shift towards either social or economic issues causes our Democrat/Republican dividing line to rotate about the center of our political plane. Here's exactly how it happens; this timeline is basically the sum of all the information we have shown so far. Use the slider to step through time.
The Effects Of Changing Political Priorities
age
From this animation, we can consolidate all that we've learned about each group into a single plot. The blue dots are the ages likely to vote Democratic, the red are the Republican ones. In case you're keeping score, there are 21 blue dots and 22 red ones.
People's Ultimate Political Tendencies
This detailed portrait of the electorate jives well with the actual exit poll numbers from the last few Presidential elections. The New York Times has collected this data and present it very well, if you have time to take a look. Here's the part that concerns us:
To wind up this section, I'd like to take one last look at our political plane, with a final set of overlays that I think are most illuminating:
The polygons I've drawn over the dots are called convex hulls; they are a geometric way to measure the spread of a set of points. In this case, the hulls tell us the size of the ideological/age base of our political party.
As you can see, the Democrat's base is much larger. And the range of political values it encompasses is vast. Here's party-to-party comparison in tablet form, for easy digestion:
Unlike in many things, size here is a liability. Yes, a political party that's this wide-open is probably a more intellectually stimulating organizationideological size is a liability to be a part of, and it has a lot more potential power. But bigger base is also just that many more competing viewpoints Democratic politicians must cater to and that many more different viewpoints in play among the actual elected officials themselves.
Also, well over half of the Democratic party's hull lies outside of its upper-right-hand ideological home, implying that you've got many groups of people who might tend Democratic, but who have disagreements with the party on particular issues and could defect, should the slant of the party or the country tilt the wrong way. On the other hand, the Republicans are concentrated in the lower-left-hand corner. This red cluster has multiple, apparently self-reinforcing, reasons to vote with their party, giving the Republicans both a more fervent power base and a little more ideological wiggle-room along either the social or economic axis.
So when you read about the thousands of Catholic nuns who recently came out in favor of health care reform, it's easy to get excited about being a Democrat. But do you think those same people will side with us on things like gay marriage? Or abortion rights? Hull no!
. . .
That's the crux of the problem: Republicans cohere, Democrats don't. After the above mathematical dissection of the political plane, let's take our conclusion in hand and see how it plays with other dating data we have.
Issues, Matching, and Politics
This whole Republican/Democrat situation reminds me (as it surely reminds you) I think of Mamluks sometimesof when Napoleon and his few French divisions dispersed the vast Mamluk horde by the banks of the Nile. Like an army, a political party must be coherent and disciplined to be effective, and these qualities alone can carry the day, even against greater numbers.
Let's look at ideological distributions on a few hot-button issues and see how the Democrats are spread out and exposed. We'll start with views on abortion. This chart shows the opinions of social conservatives and social liberals. Everything is as you'd expect: liberals are pro-choice; conservatives pro-life.
Now let's look at how economic liberals and conservatives view abortion:
Again, the conservatives are strongly pro-life. But the economic liberals have widely distributed views. A solid portion of the Democratic economic base actually sides with Republicans on this issue. It's those nuns again!
While the two conservative curves are nearly congruent, the liberals ones are totally different. The takeaway, the Republican advantage, is this: economic conservatives and social conservatives agree, while the liberal halves of these spectra don't. Furthermore, the purple overlap—in a sense "the swing vote"—is largely on the conservative side!
We see same pattern repeated again and again. Here, for example, is a look at the 'Gay Marriage' issue:
. . .
Finally, I want to wrap up this burrito with a look at OkCupid's specialty: matching people up.
Below are two matrices, showing person-to-person match percentages. These numbers are a measure of how well two people get along. We've used them to facilitate over 100,000 marriages in the last few years; their accuracy is well-tested. Match percentages range from 100 (awesome) to 0 (terrible), and the site average is 61.
We excluded explicitly political questions, ran numbers for the different ideologies, and found these patterns, which I'll leave you with:
As you can see, conservatives of both stripes get along with each other better than liberals do with themselves, even on non-political issues. We calculate match percentage by posing a series of questions to our users. Just to give you a sense of what these questions are like, here are the top three most important (by user vote):
1. If you had to name your greatest motivation in life so far, what would it be?
  • Love
  • Wealth
  • Expression
  • Knowledge
2. Which makes for a better relationship?
  • Passion
  • Dedication
3. Are you happy with your life?
  • Yes
  • No
I find groupthink frightening. But that fact that Democrats can't get together on some multiple-choice Q & A, speaks volumes about why they struggle with the infinite possibilities of government.

Github explorer

Last year, with help from my coworkers at Linkfluence, I created two sets of maps of the Perl and CPAN’s community. For this, I collected data from CPAN to create three maps :
I wanted to do something similar again, but not with the same data. So I took a look at what could be a good subject. One of the things that we saw from the map of the websites is the importance github is gaining inside the Perl community. Github provides a really good API, so I started to play with it.
This graph will be printed on a poster, size will be A2 and A1. Please, contact me (franck.cuny [at] linkfluence.net) if you will be interested by one.




This time, I didn’t aim for the Perl community only, but the whole github communities. I’ve created several graphs:
all the graph are available on my flickr’s account.
I think a disclaimer is important at this point. I know that github doesn’t represent the whole open source community. With these maps, I don’t claim to represent what the open source world looks like right now. This is not a troll about which language is best, or used at large. It’s ONLY about github.
Also, I won’t provide deep analysis for each of these graphs, as I lack insight about some of those communities. So feel free to re-use theses graphs and provide your own analyses.

Methodology

I didn’t collect all the profiles. We (with Guilhem) decided to limit to peoples who are followed by at least two other people. We did the same thing for repositories, limiting to repositories which are at least forked once. Using this technique, more than 17k profiles have been collected, and nearly as many repositories.
For each profile, using the github API, I’ve tried to determine what the main language for this person is. And with the help of the geonames API, find the right country to attach the profile to.
Each profile is represented by a node. For each node, the following attributes are set:
  • name of the profile
  • main language used by this profile, determined by github
  • name of the country
  • follower count
  • following count
  • repository count
An edge is a link between two profiles. Each time someone follows another profile, a link is created. By default, the weight of this link is 1. For each project this person forked from the target profile, the weight is incremented.
As always, I’ve used Gephi (now in version 0.7) to create the graphs. Feel free to download the various graph files and use them with Gephi.

Github

properties of the graph: 16443 nodes / 130650 edges
Github - All - by languages
The first map is about all the languages available on github. This one was really heavy, with more than 17k nodes, and 130k edges. The final version of the graph use the 2270 more connected nodes.
You can’t miss Ruby on this map. As github uses Ruby on Rails, it’s not really surprising that the Ruby community has a particular interest on this website. The main languages on github are what we can expect, with PHP, Python, Perl, Javascript.
Some languages are not really well represented. We can assume that most Haskell projects might use darcs, and therefore are not on github. Some other languages may use other platforms, like launchpad, or sourceforge.

Perl

properties of the graph: 365 nodes / 4440 edges
Perl community on Github
The Perl community is split into two parts. On the left side, there is the occidental community, driven by people like Florian, Yuval, rjbs, … The second part are the japanese Perl hackers, with Tokhuirom, Typester, Yappo, … And in between them, Miyagawa acts as a glue. This map looks a lot like the previous map of the CPAN. We can see that this community is international, with the exception of Japan that don’t mix with others.
There is no main project on github that gathers people, even though we can see a fair amount of MooseX:: projects. Most of the developers will work on different modules, that may not have the same purpose. Lately we have seen a fair amount of work on various Plack stuff, mainly middleware, but also HTTP servers (twiggy, starman, …) and web framework (dancer).
One important project that is not (deliberately) represented on this graph is the gitpan, Schwern’s project. The gitpan is an import of all the CPAN modules, with complete history using the Backpan.
To conclude about Perl, there are only 365 nodes on this graph, but no less than 4440 edges. That’s nearly two times the number of edges compared to the Python community. Perl is a really well structured community, probably thanks to the CPAN, which already acted as hub for contributors.

Python

properties of the graph: 532 nodes / 2566 edges
Python community, by country, on Github
The Python community looks a lot like the Perl community, but only in the structure of the graph. If we look closely, Django is the main project that represent Python on Github, in contrast with Perl where there is no leader. Some small projects gather small community of developers.

PHP

properties of the graph: 301 nodes / 1071 edges
PHP community on Github
PHP is the only community that is structured this way on Github. We can clearly see that people are structured based on a project where they mainly contribute.
CakePHP and Symphony are the two main projects. Nearly all the projects gather an international community, at the exception of a few japanese-only projects

Ruby

properties of the graph: 3742 nodes / 24571 edges
Ruby community, by country, on Github
As for the Github graph, we can clearly see that some countries are isolated. On the right side, we have: the Japan community is at the bottom; the Spanish at the top. Australian are represented on the upper right corner, while on the left side we got the Brazilians.
The main projects that gather most of the hackers are Rails and Sinatra, two famous web frameworks.

Europe

properties of the graph: 2711 nodes / 11259 edges
Europe community on Github
This one shows interesting features. Some countries are really isolated. If we look at Spain, we can see a community of Ruby programmers, with an important connectivity between them, but no really strong connection with any foreign developers. We can clearly see the Perl community exists as only one community, and is not split by country. The same is true for Python.

Japanese hackers community

properties of the graph: 559 nodes / 5276 edges
Japan community on github
This community is unique on github. In 2007, Yappo created coderepos.org, a repository for open source developers in Japan. It was a subversion repository, with Trac as an HTTP front-end. It gathered around 900 developers, with all kind of projects (Perl, Python, Ruby, Javascript, …). Most of these users have switched to github now.
Three main communities are visible on this graph: Perl; Ruby; PHP. As always, the Javascript community as a glue between them. And yes, we can confirm that Perl is big in Japan.
We have seen in the previous graph that the Japanese hackers are always isolated. We can assume that their language is an obstacle.
This is a really well-connected graph too.

Conclusions and graphs

I may have not provided a deep analysis of all the graph. I don’t have knowledge of most of the community outside of Perl. Feel free to download the graph, to load them in Gephi, experiment, and provides your own thoughts.
I would like to thanks everybody at Linkfluence (guilhem for his advices, camille for giving me time to work on this, and antonin for the amazing poster), who have helped me and let me use time and resources to finish this work. Special thanks to blob for reviewing my prose and cdlm for the discussion :)