{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# World of Julia\n",
"\n",
"*First published: 2014-06-30*\n",
"\n",
"*Updated: 2016-03-16*\n",
"\n",
"*Jiahao Chen, MIT*\n",
"\n",
"Have you ever wondered who contributes to Julia? This notebook explores basic facets of the Julia community.\n",
"\n",
"(Note: For best results, make sure you have an ImageMagick build with OpenMP support enabled.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, load up a bunch of packages written by the Julia community."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"using Compat\n",
"using Compose\n",
"using Gadfly\n",
"using GitHub\n",
"using HDF5, JLD\n",
"using Interact\n",
"using MetadataTools\n",
"using JSON\n",
"using ProgressMeter\n",
"using Requests\n",
"using Shapefile\n",
"using URIParser"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, authenticate a GitHub access token for reading data from GitHub.\n",
"\n",
"Substitute your own token by following [these instructions](https://help.github.com/articles/creating-an-access-token-for-command-line-use/)."
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"GitHub.OAuth2(171263**********************************)"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"auth_token=\"\" #to access Github API\n",
"my_auth = authenticate(auth_token)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some parts of this notebook take awhile to run because of multiple HTTP requests to various websites. Here we see if data from a previous run were stored, and load it into working memory if it does.\n",
"\n",
"The storage format is `JLD`, which is a `HDF5` file with a particular way to describe arbitrary Julia types."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"try if isfile(\"worldofjulia.jld\")\n",
" A = JLD.load(\"worldofjulia.jld\")\n",
" locations = A[\"locations\"]\n",
" juliastargazers = A[\"juliastargazers\"]\n",
" juliawatchers = A[\"juliawatchers\"]\n",
" juliacontributors = A[\"juliacontributors\"]\n",
" allcontributors = A[\"allcontributors\"]\n",
"end end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The main Julia repository\n",
"\n",
"Let's start with the main repository."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"445 contributors found for JuliaLang/julia\n"
]
}
],
"source": [
"authors=contributors(\"JuliaLang/julia\", auth=my_auth)[1]\n",
"println(\"$(length(authors)) contributors found for JuliaLang/julia\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## An avatar montage\n",
"\n",
"GitHub provides detailed information about user profiles.\n",
"\n",
"One fun thing to do is to download everyone's [profile pictures](https://help.github.com/articles/how-do-i-set-up-my-profile-picture/) and turn them into a montage using [ImageMagick](http://www.imagemagick.org).\n",
"\n",
"Julia provides a native `download` function, which is convenient but forks an external command such as `curl` or `wget` each time it is run. To download many small files, it is more convient to use `Requests.jl`.\n",
"\n",
"`dl` below is a basic working replacement for `download`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"dl (generic function with 6 methods)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dl(url::Nullable{URI}, filename, tries = 3) = \n",
" if isnull(url)\n",
" throw(ArgumentError(\"Cannot dl($url)\"))\n",
" else\n",
" dl(get(url), filename, tries)\n",
" end\n",
"\n",
"dl(url, filename, tries=3) = dl(URI(url), filename, tries)\n",
"\n",
"#Download data from a given URL to a file.\n",
"function dl(url::URI, filename, tries = 3)\n",
" isfile(filename) && return #Don't overwrite existing files\n",
" r = nothing\n",
" for i=1:tries\n",
" try\n",
" r = get(url)\n",
" \n",
" r.status == 200 && break\n",
"\n",
" if contains(r.headers[\"Content-Type\"], \"text/html\")\n",
" display(\"text/html\", r.data)\n",
" end\n",
" r.status == 302 && break #Redirection\n",
" catch e\n",
" warn(e)\n",
" end\n",
" sleep(3)\n",
" end\n",
" if r!=nothing && r.status == 200\n",
" open(filename, \"w\") do f\n",
" write(f, r.data)\n",
" end\n",
" else\n",
" warn(\"Could not download $url\\nStatus: $(r.status)\")\n",
" end\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, use `dl` to download the avatars associated with an iterable collection of authors. We also use ImageMagick's `mogrify` command to automatically resize each avatar file to 64x64 pixels.\n",
"\n",
"`getavatars` can take awhile, so we use `ProgressMeter.@showprogress` to show a progress bar for the main loop over the `authors`."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Dict{Any,Any} with 445 entries:\n",
" \"agoddard\" => \"agoddard.png\"\n",
" \"davidkh\" => \"davidkh.png\"\n",
" \"cameyo42\" => \"cameyo42.png\"\n",
" \"JeffBezanson\" => \"JeffBezanson.png\"\n",
" \"btracey\" => \"btracey.png\"\n",
" \"rmyorston\" => \"rmyorston.png\"\n",
" \"dancasimiro\" => \"dancasimiro.png\"\n",
" \"schenker\" => \"schenker.png\"\n",
" \"julian-gehring\" => \"julian-gehring.png\"\n",
" \"cicku\" => \"cicku.png\"\n",
" \"catawbasam\" => \"catawbasam.png\"\n",
" \"GunnarFarneback\" => \"GunnarFarneback.png\"\n",
" \"autozimu\" => \"autozimu.png\"\n",
" \"goretkin\" => \"goretkin.png\"\n",
" \"doomsplayer\" => \"doomsplayer.png\"\n",
" \"PallHaraldsson\" => \"PallHaraldsson.png\"\n",
" \"garrison\" => \"garrison.png\"\n",
" \"randyzwitch\" => \"randyzwitch.png\"\n",
" \"peterdn\" => \"peterdn.png\"\n",
" \"doowttam\" => \"doowttam.png\"\n",
" \"cbecker\" => \"cbecker.png\"\n",
" \"patrickyevsukov\" => \"patrickyevsukov.png\"\n",
" \"jgoldfar\" => \"jgoldfar.png\"\n",
" \"shashi\" => \"shashi.png\"\n",
" \"dcampbell24\" => \"dcampbell24.png\"\n",
" ⋮ => ⋮"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Download everyone's avatars\n",
"function getavatars(authors; verbose::Bool=false)\n",
" const mogrify = `/usr/local/bin/mogrify`\n",
" \n",
" avatarfiles = Dict()\n",
" @showprogress for author in authors\n",
" login = get(author[\"contributor\"].login)\n",
" avatarfilename = string(login, \".png\")\n",
" if !isfile(avatarfilename)\n",
" url = author[\"contributor\"].avatar_url\n",
" verbose && info(\"Downloading avatar for $login\")\n",
" dl(url, avatarfilename)\n",
" run(`$mogrify -resize 64x64 $avatarfilename`)\n",
" else\n",
" verbose && info(\"Avatar for $login already downloaded\")\n",
" end\n",
" avatarfiles[login] = avatarfilename\n",
" end\n",
" avatarfiles\n",
"end\n",
"avatarfiles = getavatars(authors)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, use [ImageMagick's](http://www.imagemagick.org) `montage` to create a montage of contributors to the main `julia` repository using their GitHub avatars. Each avatar can also be sorted and annotated by the number of commits to the repository."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"makemontage (generic function with 1 method)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function makemontage(filename, authors, avatarfiles; layout=nothing)\n",
" cmd = `montage`\n",
" layout==nothing || (cmd = `$cmd -tile $(layout[1])x$(layout[2])`)\n",
" σ = sortperm([author[\"contributions\"] for author in authors], rev=true)\n",
" for idx in σ\n",
" author = authors[idx]\n",
" login, contribs = get(author[\"contributor\"].login), author[\"contributions\"]\n",
" if !haskey(avatarfiles, login)\n",
" warn(\"Skipping user $login: no associated entry in avatarfiles\")\n",
" continue\n",
" end\n",
"\n",
" avatarfile = avatarfiles[login]\n",
" if !isfile(avatarfile)\n",
" warn(\"Skipping user $login: no file $avatarfile\")\n",
" continue\n",
" end\n",
" cmd = `$cmd -label \"$login\\n($contribs)\" $avatarfile`\n",
" end\n",
" cmd = `$cmd -geometry 64x64+16+16 -font Helvetica $filename`\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(27,17)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Compute montage layout\n",
"aspectratio = φ #Golden ratio\n",
"ntiles=√(length(authors)/aspectratio)\n",
"ntilesx, ntilesy = ceil(Int, aspectratio*ntiles), ceil(Int, ntiles)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"cmd = makemontage(\"montage_juliaonly.jpg\", authors, avatarfiles, layout = (ntilesx, ntilesy));"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#@time run(cmd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Including Julia packages\n",
"\n",
"Julia has a rapidly growing list of [registered packages](http://pkg.julialang.org/) which represent the efforts of yet more developers. We can make another montage of contributors, this time including all package authors also.\n",
"\n",
"Use the built-in `Pkg` module to get a list of available packages, then use `MetadataTools.get_pkg` to retrieve all the associated package metadata and retrieve the GitHub owners and repository names using `URIParser.parse_url`."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Progress: 61% ETA: 0:00:00"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Skipping non-GitHub repo git://git.colberg.org/OnlineMoments.jl.git\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Progress: 100% Time: 0:00:01\n"
]
}
],
"source": [
"#Scan package metadata and get URLs for all registered packages\n",
"Packages = Any[]\n",
"@showprogress for pkg in Pkg.available()\n",
" url = URIParser.parse_url(get_pkg(pkg).url)\n",
" if url.host == \"github.com\"\n",
" _, owner, repo = try\n",
" split(url.path, '/')\n",
" catch exc\n",
" println(STDERR, \"Error parsing $(url.path) from $url\")\n",
" rethrow(exc)\n",
" end\n",
" repo = split(repo, \".git\")[1]\n",
" push!(Packages, (owner, repo))\n",
" else\n",
" warn(\"Skipping non-GitHub repo $url\")\n",
" end\n",
"end\n",
"println(\"$(length(Packages)) packages found.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can query each package's GitHub repository for its corresponding list of contributors and commit counts, merging the contribution counts back into `authors` for a total count across all the repositories."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"878 packages found.\n",
"Progress: 100% Time: 0:06:58\n"
]
}
],
"source": [
"#Update authors with package contributors\n",
"#Collates all the contribution counts also\n",
"function addpkgcounts!(authors, Packages)\n",
" @showprogress for (owner, repo) in Packages\n",
" thispkg_contributors = try\n",
" contributors(owner*\"/\"*repo, auth=my_auth)[1]\n",
" catch\n",
" warn(\"Skipping $owner/$repo\")\n",
" continue\n",
" end\n",
"\n",
" isnew = true\n",
" #Merge global statistics\n",
" for entry in thispkg_contributors\n",
" contributor = entry[\"contributor\"]\n",
" for (i, authordata) in enumerate(authors)\n",
" if get(authordata[\"contributor\"].login) == get(contributor.login)\n",
" isnew = false\n",
" authors[i][\"contributions\"] += entry[\"contributions\"]\n",
" break\n",
" end\n",
" end\n",
" isnew && push!(authors, entry)\n",
" end\n",
" end\n",
"end\n",
" \n",
"juliacontributors = copy(authors)\n",
"addpkgcounts!(authors, Packages)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As before, grab everyone's avatars."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Dict{Any,Any} with 727 entries:\n",
" \"btracey\" => \"btracey.png\"\n",
" \"benhamner\" => \"benhamner.png\"\n",
" \"schenker\" => \"schenker.png\"\n",
" \"nstiurca\" => \"nstiurca.png\"\n",
" \"pearlzli\" => \"pearlzli.png\"\n",
" \"GunnarFarneback\" => \"GunnarFarneback.png\"\n",
" \"njwilson23\" => \"njwilson23.png\"\n",
" \"garrison\" => \"garrison.png\"\n",
" \"randyzwitch\" => \"randyzwitch.png\"\n",
" \"jdrugo\" => \"jdrugo.png\"\n",
" \"lvnguyen\" => \"lvnguyen.png\"\n",
" \"jcorbin\" => \"jcorbin.png\"\n",
" \"yipihey\" => \"yipihey.png\"\n",
" \"jey\" => \"jey.png\"\n",
" \"davidlizeng\" => \"davidlizeng.png\"\n",
" \"cstjean\" => \"cstjean.png\"\n",
" \"goedman\" => \"goedman.png\"\n",
" \"charlesll\" => \"charlesll.png\"\n",
" \"fhs\" => \"fhs.png\"\n",
" \"mpf\" => \"mpf.png\"\n",
" \"mcprentiss\" => \"mcprentiss.png\"\n",
" \"jayschwa\" => \"jayschwa.png\"\n",
" \"domenzain\" => \"domenzain.png\"\n",
" \"LeoK987\" => \"LeoK987.png\"\n",
" \"mdavezac\" => \"mdavezac.png\"\n",
" ⋮ => ⋮"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"avatarfiles = getavatars(authors)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now we can make a new montage."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(35,22)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Compute montage layout\n",
"aspectratio = φ\n",
"ntiles=√(length(authors)/aspectratio)\n",
"ntilesx, ntilesy = ceil(Int, aspectratio*ntiles), ceil(Int, ntiles)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"cmd = makemontage(\"montage_julia.jpg\", authors, avatarfiles, layout = (ntilesx, ntilesy));"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "LoadError",
"evalue": "LoadError: could not spawn `montage -tile 35x22 -label 'JeffBezanson\\n(7584)' JeffBezanson.png -label 'timholy\\n(4428)' timholy.png -label 'StefanKarpinski\\n(3684)' StefanKarpinski.png -label 'ViralBShah\\n(2840)' ViralBShah.png -label 'lindahua\\n(2749)' lindahua.png -label 'jakebolewski\\n(2539)' jakebolewski.png -label 'dlfivefifty\\n(2299)' dlfivefifty.png -label 'mlubin\\n(2164)' mlubin.png -label 'SimonDanisch\\n(2131)' SimonDanisch.png -label 'vtjnash\\n(1979)' vtjnash.png -label 'MikeInnes\\n(1878)' MikeInnes.png -label 'simonster\\n(1775)' simonster.png -label 'dcjones\\n(1752)' dcjones.png -label 'tkelman\\n(1747)' tkelman.png -label 'Keno\\n(1711)' Keno.png -label 'stevengj\\n(1667)' stevengj.png -label 'IainNZ\\n(1578)' IainNZ.png -label 'jiahao\\n(1447)' jiahao.png -label 'johnmyleswhite\\n(1373)' johnmyleswhite.png -label 'nolta\\n(1278)' nolta.png -label 'rgiordan\\n(1233)' rgiordan.png -label 'shashi\\n(1186)' shashi.png -label 'pluskid\\n(1131)' pluskid.png -label 'ChrisTimperley\\n(1078)' ChrisTimperley.png -label 'weijianzhang\\n(1042)' weijianzhang.png -label 'dmbates\\n(989)' dmbates.png -label 'andreasnoack\\n(984)' andreasnoack.png -label 'joshday\\n(951)' joshday.png -label 'carlobaldassi\\n(921)' carlobaldassi.png -label 'andrewcooke\\n(917)' andrewcooke.png -label 'joehuchette\\n(882)' joehuchette.png -label 'brian-j-smith\\n(878)' brian-j-smith.png -label 'codles\\n(840)' codles.png -label 'staticfloat\\n(839)' staticfloat.png -label 'yuyichao\\n(835)' yuyichao.png -label 'quinnj\\n(815)' quinnj.png -label 'kmsquire\\n(775)' kmsquire.png -label 'tbreloff\\n(751)' tbreloff.png -label 'wbhart\\n(706)' wbhart.png -label 'tanmaykm\\n(697)' tanmaykm.png -label 'ihnorton\\n(694)' ihnorton.png -label 'r9y9\\n(681)' r9y9.png -label 'jverzani\\n(668)' jverzani.png -label 'davidavdav\\n(653)' davidavdav.png -label 'ehsantn\\n(642)' ehsantn.png -label 'sbromberger\\n(640)' sbromberger.png -label 'MichaelHatherly\\n(638)' MichaelHatherly.png -label 'amitmurthy\\n(616)' amitmurthy.png -label 'tonyhffong\\n(569)' tonyhffong.png -label 'scidom\\n(561)' scidom.png -label 'MikaelSlevinsky\\n(537)' MikaelSlevinsky.png -label 'sjkelly\\n(528)' sjkelly.png -label 'simonbyrne\\n(522)' simonbyrne.png -label 'WestleyArgentum\\n(519)' WestleyArgentum.png -label 'madeleineudell\\n(514)' madeleineudell.png -label 'aviks\\n(492)' aviks.png -label 'Luthaf\\n(492)' Luthaf.png -label 'samoconnor\\n(469)' samoconnor.png -label 'dpsanders\\n(456)' dpsanders.png -label 'montyvesselinov\\n(450)' montyvesselinov.png -label 'jzuhone\\n(446)' jzuhone.png -label 'diegozea\\n(445)' diegozea.png -label 'robertfeldt\\n(443)' robertfeldt.png -label 'bicycle1885\\n(442)' bicycle1885.png -label 'spencerlyon2\\n(440)' spencerlyon2.png -label 'jeff-regier\\n(435)' jeff-regier.png -label 'trthatcher\\n(434)' trthatcher.png -label 'goedman\\n(422)' goedman.png -label 'kshyatt\\n(420)' kshyatt.png -label 'jrevels\\n(413)' jrevels.png -label 'powerdistribution\\n(409)' powerdistribution.png -label 'DrTodd13\\n(400)' DrTodd13.png -label 'KristofferC\\n(395)' KristofferC.png -label 'cgroll\\n(392)' cgroll.png -label 'malmaud\\n(387)' malmaud.png -label 'zenna\\n(381)' zenna.png -label 'tshort\\n(377)' tshort.png -label 'randyzwitch\\n(376)' randyzwitch.png -label 'benhamner\\n(374)' benhamner.png -label 'garborg\\n(363)' garborg.png -label 'eschnett\\n(359)' eschnett.png -label 'tlycken\\n(359)' tlycken.png -label 'macrintr\\n(359)' macrintr.png -label 'toivoh\\n(356)' toivoh.png -label 'jumutc\\n(347)' jumutc.png -label 'tpoisot\\n(325)' tpoisot.png -label 'thofma\\n(321)' thofma.png -label 'mbauman\\n(319)' mbauman.png -label 'tinybike\\n(317)' tinybike.png -label 'Evizero\\n(317)' Evizero.png -label 'ninegua\\n(313)' ninegua.png -label 'fredo-dedup\\n(312)' fredo-dedup.png -label 'samuel-massinon-invenia\\n(307)' samuel-massinon-invenia.png -label 'alyst\\n(305)' alyst.png -label 'kbarbary\\n(303)' kbarbary.png -label 'mweastwood\\n(298)' mweastwood.png -label 'omus\\n(291)' omus.png -label 'jaak-s\\n(285)' jaak-s.png -label 'astrieanna\\n(284)' astrieanna.png -label 'lbenet\\n(284)' lbenet.png -label 'emoszkowski\\n(284)' emoszkowski.png -label 'julian-gehring\\n(281)' julian-gehring.png -label 'autozimu\\n(280)' autozimu.png -label 'karanveerm\\n(275)' karanveerm.png -label 'pao\\n(267)' pao.png -label 'mschauer\\n(267)' mschauer.png -label 'imanuelcostigan\\n(257)' imanuelcostigan.png -label 'dodamih\\n(249)' dodamih.png -label 'micahjsmith\\n(248)' micahjsmith.png -label 'rennis250\\n(246)' rennis250.png -label 'dfdx\\n(244)' dfdx.png -label 'zachallaun\\n(242)' zachallaun.png -label 'juliohm\\n(242)' juliohm.png -label 'zyedidia\\n(241)' zyedidia.png -label 'wildart\\n(239)' wildart.png -label 'matthieugomez\\n(233)' matthieugomez.png -label 'sfchen\\n(227)' sfchen.png -label 'nalimilan\\n(226)' nalimilan.png -label 'ivarne\\n(223)' ivarne.png -label 'nassarhuda\\n(223)' nassarhuda.png -label 'JayKickliter\\n(217)' JayKickliter.png -label 'fairbrot\\n(216)' fairbrot.png -label 'ovainola\\n(213)' ovainola.png -label 'lkuper\\n(208)' lkuper.png -label 'BenLauwens\\n(202)' BenLauwens.png -label 'omalled\\n(201)' omalled.png -label 'boyers\\n(200)' boyers.png -label 'gp0\\n(200)' gp0.png -label 'ahojukka5\\n(200)' ahojukka5.png -label 'pearlzli\\n(199)' pearlzli.png -label 'ssfrr\\n(198)' ssfrr.png -label 'Michael-Klassen\\n(194)' Michael-Klassen.png -label 'HarlanH\\n(191)' HarlanH.png -label 'tawheeler\\n(181)' tawheeler.png -label 'davidagold\\n(178)' davidagold.png -label 'richardreeve\\n(178)' richardreeve.png -label 'jayschwa\\n(176)' jayschwa.png -label 'meggart\\n(173)' meggart.png -label 'mykelk\\n(173)' mykelk.png -label 'nkottary\\n(172)' nkottary.png -label 'svs14\\n(172)' svs14.png -label 'phrb\\n(172)' phrb.png -label 'gummif\\n(171)' gummif.png -label 'ulfworsoe\\n(171)' ulfworsoe.png -label 'jpata\\n(162)' jpata.png -label 'blakejohnson\\n(161)' blakejohnson.png -label 'zhmz90\\n(160)' zhmz90.png -label 'andrioni\\n(159)' andrioni.png -label 'yeesian\\n(157)' yeesian.png -label 'garrison\\n(151)' garrison.png -label 'jheinen\\n(151)' jheinen.png -label 'davidlizeng\\n(150)' davidlizeng.png -label 'vchuravy\\n(143)' vchuravy.png -label 'jhlq\\n(143)' jhlq.png -label 'jdtuck\\n(142)' jdtuck.png -label 'tedsteiner\\n(140)' tedsteiner.png -label 'rsrock\\n(139)' rsrock.png -label 'yurivish\\n(139)' yurivish.png -label 'ScottPJones\\n(135)' ScottPJones.png -label 'emmt\\n(135)' emmt.png -label 'felipenoris\\n(134)' felipenoris.png -label 'mpastell\\n(133)' mpastell.png -label 'chkwon\\n(133)' chkwon.png -label 'dancasimiro\\n(132)' dancasimiro.png -label 'rollingthunder\\n(130)' rollingthunder.png -label 'TeroFrondelius\\n(129)' TeroFrondelius.png -label 'Jutho\\n(128)' Jutho.png -label 'tknopp\\n(128)' tknopp.png -label 'panlanfeng\\n(128)' panlanfeng.png -label 'andferrari\\n(127)' andferrari.png -label 'davidanthoff\\n(126)' davidanthoff.png -label 'samuelcolvin\\n(126)' samuelcolvin.png -label 'hayd\\n(124)' hayd.png -label 'dhoegh\\n(124)' dhoegh.png -label 'JackDunnNZ\\n(124)' JackDunnNZ.png -label 'lgautier\\n(124)' lgautier.png -label 'phobon\\n(122)' phobon.png -label 'gragusa\\n(122)' gragusa.png -label 'helgee\\n(118)' helgee.png -label 'jbn\\n(116)' jbn.png -label 'reworkhow\\n(114)' reworkhow.png -label 'hng\\n(113)' hng.png -label 'keithseahus\\n(113)' keithseahus.png -label 'randy3k\\n(112)' randy3k.png -label 'dirkschumacher\\n(111)' dirkschumacher.png -label 'jipolanco\\n(110)' jipolanco.png -label 'pzion\\n(109)' pzion.png -label 'null-a\\n(109)' null-a.png -label 'TotalVerb\\n(108)' TotalVerb.png -label 'Rory-Finnegan\\n(108)' Rory-Finnegan.png -label 'chezou\\n(105)' chezou.png -label 'aaronstanton\\n(105)' aaronstanton.png -label 'burrowsa\\n(104)' burrowsa.png -label 'rohitvarkey\\n(104)' rohitvarkey.png -label 'jlapeyre\\n(103)' jlapeyre.png -label 'fhs\\n(103)' fhs.png -label 'cstjean\\n(103)' cstjean.png -label 'skariel\\n(102)' skariel.png -label 'jgoldfar\\n(102)' jgoldfar.png -label 'porterjamesj\\n(101)' porterjamesj.png -label 'denizyuret\\n(99)' denizyuret.png -label 'darwindarak\\n(98)' darwindarak.png -label 'LaurenceA\\n(97)' LaurenceA.png -label 'glesica\\n(97)' glesica.png -label 'jpfairbanks\\n(95)' jpfairbanks.png -label 'Sean1708\\n(93)' Sean1708.png -label 'prcastro\\n(92)' prcastro.png -label 'oheil\\n(92)' oheil.png -label 'ReidAtcheson\\n(92)' ReidAtcheson.png -label 'codeneomatrix\\n(91)' codeneomatrix.png -label 'mfalt\\n(90)' mfalt.png -label 'catawbasam\\n(89)' catawbasam.png -label 'rened\\n(89)' rened.png -label 'carnaval\\n(88)' carnaval.png -label 'daviddelaat\\n(87)' daviddelaat.png -label 'damiendr\\n(87)' damiendr.png -label 'ahwillia\\n(87)' ahwillia.png -label 'quxiaofeng\\n(87)' quxiaofeng.png -label 'twadleigh\\n(86)' twadleigh.png -label 'ajt60gaibb\\n(85)' ajt60gaibb.png -label 'iamed2\\n(84)' iamed2.png -label 'davidssmith\\n(82)' davidssmith.png -label 'phaverty\\n(82)' phaverty.png -label 'abeschneider\\n(82)' abeschneider.png -label 'rtrochet\\n(82)' rtrochet.png -label 'rfourquet\\n(81)' rfourquet.png -label 'bjarthur\\n(81)' bjarthur.png -label 'blegat\\n(81)' blegat.png -label 'GeorgeXing\\n(79)' GeorgeXing.png -label 'ArchRobison\\n(79)' ArchRobison.png -label 'bardwell\\n(79)' bardwell.png -label 'ivanslapnicar\\n(78)' ivanslapnicar.png -label 'danielmendel\\n(76)' danielmendel.png -label 'christianpeel\\n(75)' christianpeel.png -label 'eraviart\\n(75)' eraviart.png -label 'JoelHobson\\n(73)' JoelHobson.png -label 'GordStephen\\n(71)' GordStephen.png -label 'swadey\\n(70)' swadey.png -label 'nwh\\n(70)' nwh.png -label 'snotskie\\n(70)' snotskie.png -label 'latticetower\\n(69)' latticetower.png -label 'DANA-Laboratory\\n(68)' DANA-Laboratory.png -label 'bfredl\\n(68)' bfredl.png -label 'leonardt\\n(68)' leonardt.png -label 'dahlend\\n(67)' dahlend.png -label 'robertdj\\n(67)' robertdj.png -label 'mauro3\\n(66)' mauro3.png -label 'danielsuo\\n(66)' danielsuo.png -label 'waldyrious\\n(65)' waldyrious.png -label 'shangmu\\n(65)' shangmu.png -label 'danspielman\\n(65)' danspielman.png -label 'Tao-Hu\\n(65)' Tao-Hu.png -label 'pygy\\n(64)' pygy.png -label 'bdeonovic\\n(64)' bdeonovic.png -label 'lcw\\n(63)' lcw.png -label 'simulkade\\n(63)' simulkade.png -label 'lruthotto\\n(61)' lruthotto.png -label 'magistere\\n(60)' magistere.png -label 'rawls238\\n(60)' rawls238.png -label 'lucasb-eyer\\n(59)' lucasb-eyer.png -label 'dls\\n(59)' dls.png -label 'IshitaTakeshi\\n(59)' IshitaTakeshi.png -label 'scheinerman\\n(57)' scheinerman.png -label 'jwmerrill\\n(57)' jwmerrill.png -label 'lendle\\n(56)' lendle.png -label 'sam81\\n(56)' sam81.png -label 'greenflash1357\\n(55)' greenflash1357.png -label 'charlesll\\n(54)' charlesll.png -label 'odow\\n(53)' odow.png -label 'innerlee\\n(53)' innerlee.png -label 'acroy\\n(52)' acroy.png -label 'Wilfred\\n(51)' Wilfred.png -label 'wavexx\\n(51)' wavexx.png -label 'rdeits\\n(51)' rdeits.png -label 'pjabardo\\n(51)' pjabardo.png -label 'yarlett\\n(51)' yarlett.png -label 'kersulis\\n(50)' kersulis.png -label 'dpo\\n(50)' dpo.png -label 'sawcordwell\\n(49)' sawcordwell.png -label 'sebastien-villemot\\n(48)' sebastien-villemot.png -label 'bensadeghi\\n(47)' bensadeghi.png -label 'TheBB\\n(47)' TheBB.png -label 'Ward9250\\n(47)' Ward9250.png -label 'maleadt\\n(46)' maleadt.png -label 'cc7768\\n(46)' cc7768.png -label 'giordano\\n(46)' giordano.png -label 'rjagerman\\n(46)' rjagerman.png -label 'antinucleon\\n(46)' antinucleon.png -label 'cormullion\\n(44)' cormullion.png -label 'kzahedi\\n(44)' kzahedi.png -label 'sbos\\n(43)' sbos.png -label 'natj\\n(43)' natj.png -label 'Smaug123\\n(43)' Smaug123.png -label 'Azzaare\\n(43)' Azzaare.png -label 'zingales\\n(42)' zingales.png -label 'stefan-k\\n(42)' stefan-k.png -label 'vonDonnerstein\\n(42)' vonDonnerstein.png -label 'yunjhongwu\\n(42)' yunjhongwu.png -label 'sunetos\\n(42)' sunetos.png -label 'jhasse\\n(41)' jhasse.png -label 'milktrader\\n(41)' milktrader.png -label 'KDr2\\n(40)' KDr2.png -label 'ggggggggg\\n(40)' ggggggggg.png -label 'mbaz\\n(40)' mbaz.png -label 'ayakimovich\\n(39)' ayakimovich.png -label 'pozorvlak\\n(37)' pozorvlak.png -label 'compressed\\n(36)' compressed.png -label 'spurll\\n(36)' spurll.png -label 'BigCrunsh\\n(36)' BigCrunsh.png -label 'mrxiaohe\\n(36)' mrxiaohe.png -label 'Aerlinger\\n(34)' Aerlinger.png -label 'benmoran\\n(34)' benmoran.png -label 'bass3m\\n(34)' bass3m.png -label 'pkofod\\n(33)' pkofod.png -label 'anthonyclays\\n(33)' anthonyclays.png -label 'rawrgrr\\n(32)' rawrgrr.png -label 'ekobir\\n(32)' ekobir.png -label 'nirinA\\n(32)' nirinA.png -label 'JockLawrie\\n(32)' JockLawrie.png -label 'danluu\\n(31)' danluu.png -label 'ninjin\\n(31)' ninjin.png -label 'mkriele\\n(31)' mkriele.png -label 'cyrusmaher\\n(31)' cyrusmaher.png -label 'jonasrauber\\n(30)' jonasrauber.png -label 'c42f\\n(29)' c42f.png -label 'jennyhong\\n(29)' jennyhong.png -label 'billmclean\\n(29)' billmclean.png -label 'RJDennis\\n(29)' RJDennis.png -label 'tqchen\\n(29)' tqchen.png -label 'jcorbin\\n(28)' jcorbin.png -label 'waTeim\\n(28)' waTeim.png -label 'dirk\\n(28)' dirk.png -label 'pwl\\n(28)' pwl.png -label 'DeVerMyst\\n(28)' DeVerMyst.png -label '4gh\\n(28)' 4gh.png -label 'slyrz\\n(27)' slyrz.png -label 'ranjanan\\n(27)' ranjanan.png -label 'serbanstan\\n(27)' serbanstan.png -label 'BRONSOLO\\n(27)' BRONSOLO.png -label 'crayxt\\n(26)' crayxt.png -label 'crbinz\\n(26)' crbinz.png -label 'pfitzseb\\n(25)' pfitzseb.png -label 'Betawolf\\n(25)' Betawolf.png -label 'PhillP\\n(25)' PhillP.png -label 'marcusps\\n(24)' marcusps.png -label 'tmlbl\\n(24)' tmlbl.png -label 'timothyrenner\\n(24)' timothyrenner.png -label 'jcrist\\n(24)' jcrist.png -label 'KayleaHaynes\\n(23)' KayleaHaynes.png -label 'njwilson23\\n(23)' njwilson23.png -label 'wookay\\n(23)' wookay.png -label 'Pbellive\\n(23)' Pbellive.png -label 'pabloferz\\n(22)' pabloferz.png -label 'nlhepler\\n(22)' nlhepler.png -label 'aaalexandrov\\n(22)' aaalexandrov.png -label 'joidegn\\n(22)' joidegn.png -label 'DrKrar\\n(22)' DrKrar.png -label 'klpn\\n(22)' klpn.png -label 'wesbarnett\\n(22)' wesbarnett.png -label 'tchajed\\n(22)' tchajed.png -label 'Ismael-VC\\n(21)' Ismael-VC.png -label 'gajomi\\n(21)' gajomi.png -label 'SamChill\\n(21)' SamChill.png -label 'amellnik\\n(21)' amellnik.png -label 'arypurnomoz\\n(21)' arypurnomoz.png -label 'mguzmann\\n(21)' mguzmann.png -label 'nstiurca\\n(21)' nstiurca.png -label 'rsofaer\\n(20)' rsofaer.png -label 'goretkin\\n(20)' goretkin.png -label 'fundamental\\n(20)' fundamental.png -label 'oschulz\\n(20)' oschulz.png -label 'gerhardtulzer\\n(20)' gerhardtulzer.png -label 'jacksonthea\\n(20)' jacksonthea.png -label 'ararslan\\n(20)' ararslan.png -label 'kpamnany\\n(19)' kpamnany.png -label 'GlenHertz\\n(19)' GlenHertz.png -label 'cbecker\\n(19)' cbecker.png -label 'AndyGreenwell\\n(19)' AndyGreenwell.png -label 'schmrlng\\n(19)' schmrlng.png -label 'baggepinnen\\n(19)' baggepinnen.png -label 'droidicus\\n(19)' droidicus.png -label 'oxinabox\\n(19)' oxinabox.png -label 'nanosec\\n(18)' nanosec.png -label 'GunnarFarneback\\n(18)' GunnarFarneback.png -label 'rickhg12hs\\n(18)' rickhg12hs.png -label 'wsliang\\n(18)' wsliang.png -label 'marcusdavidwebb\\n(18)' marcusdavidwebb.png -label 'LMescheder\\n(18)' LMescheder.png -label 'stokasto\\n(18)' stokasto.png -label 'invalid-email-address\\n(18)' invalid-email-address.png -label 'mfasi\\n(17)' mfasi.png -label 'StephenVavasis\\n(17)' StephenVavasis.png -label 'chuckha\\n(17)' chuckha.png -label 'scheidan\\n(17)' scheidan.png -label 'swt30\\n(17)' swt30.png -label 'joshuamiller\\n(17)' joshuamiller.png -label 'caryan\\n(17)' caryan.png -label 'baruchel\\n(17)' baruchel.png -label 'GDPlumb\\n(17)' GDPlumb.png -label 'adambom\\n(16)' adambom.png -label 'jtravs\\n(16)' jtravs.png -label 'mpf\\n(16)' mpf.png -label 'ntessore\\n(16)' ntessore.png -label 's2maki\\n(16)' s2maki.png -label 'slundberg\\n(16)' slundberg.png -label 'gusl\\n(16)' gusl.png -label 'indiedotkim\\n(16)' indiedotkim.png -label 'jkaye2012\\n(16)' jkaye2012.png -label 'maxvoxel8\\n(16)' maxvoxel8.png -label 'VHaravy\\n(15)' VHaravy.png -label 'Sacha0\\n(15)' Sacha0.png -label 'PallHaraldsson\\n(15)' PallHaraldsson.png -label 'elehcim\\n(15)' elehcim.png -label 'petercolberg\\n(15)' petercolberg.png -label 'jdrugo\\n(15)' jdrugo.png -label 'visr\\n(15)' visr.png -label 'AndreyKolev\\n(15)' AndreyKolev.png -label 'rickedanielson\\n(15)' rickedanielson.png -label 'mdavezac\\n(15)' mdavezac.png -label 'fabianlischka\\n(14)' fabianlischka.png -label 'Elzair\\n(14)' Elzair.png -label 'bramtayl\\n(14)' bramtayl.png -label 'evanfields\\n(14)' evanfields.png -label 'stemann\\n(14)' stemann.png -label 'DanielArndt\\n(13)' DanielArndt.png -label 'cdsousa\\n(13)' cdsousa.png -label 'nowozin\\n(13)' nowozin.png -label 'tcfuji\\n(13)' tcfuji.png -label 'reallyasi9\\n(13)' reallyasi9.png -label 'fcard\\n(12)' fcard.png -label 'calder\\n(12)' calder.png -label 'binarybana\\n(12)' binarybana.png -label 'mdpradeep\\n(12)' mdpradeep.png -label 'dgleich\\n(12)' dgleich.png -label 'afternone\\n(12)' afternone.png -label 'dcampbell24\\n(11)' dcampbell24.png -label 'drepper\\n(11)' drepper.png -label 'brendano\\n(11)' brendano.png -label 'samuelpowell\\n(11)' samuelpowell.png -label 'boydgreenfield\\n(11)' boydgreenfield.png -label 'mweiden\\n(11)' mweiden.png -label 'ahalwright\\n(11)' ahalwright.png -label 'Daagr\\n(11)' Daagr.png -label 'dslate\\n(10)' dslate.png -label 'xhochy\\n(10)' xhochy.png -label 'Cody-G\\n(10)' Cody-G.png -label 'sbebo\\n(10)' sbebo.png -label 'micklat\\n(10)' micklat.png -label 'mlewe\\n(10)' mlewe.png -label 'Lanzafame\\n(10)' Lanzafame.png -label 'luchr\\n(10)' luchr.png -label 'jrising\\n(10)' jrising.png -label 'christophfeinauer\\n(10)' christophfeinauer.png -label 'keesvp\\n(10)' keesvp.png -label 'mcprentiss\\n(9)' mcprentiss.png -label 'martinholters\\n(9)' martinholters.png -label 'yomichi\\n(9)' yomichi.png -label 'mzaffalon\\n(9)' mzaffalon.png -label 'lostanlen\\n(9)' lostanlen.png -label 'Dawny33\\n(9)' Dawny33.png -label 'bcj\\n(9)' bcj.png -label 'srp\\n(9)' srp.png -label 'dioptre\\n(9)' dioptre.png -label 'PaulBellette\\n(9)' PaulBellette.png -label 'Lightjohn\\n(9)' Lightjohn.png -label 'nutsiepully\\n(8)' nutsiepully.png -label 'peerst\\n(8)' peerst.png -label 'simonp0420\\n(8)' simonp0420.png -label 'dronir\\n(8)' dronir.png -label 'cbenz\\n(8)' cbenz.png -label 'r2dbg\\n(8)' r2dbg.png -label 'BenConnault\\n(8)' BenConnault.png -label 'acrosby\\n(8)' acrosby.png -label 'shixiao\\n(8)' shixiao.png -label 'jerryzhenleicai\\n(8)' jerryzhenleicai.png -label 'mdcfrancis\\n(8)' mdcfrancis.png -label 'eleuven\\n(7)' eleuven.png -label 'LachlanGunn\\n(7)' LachlanGunn.png -label 'justbur\\n(7)' justbur.png -label 'cmundi\\n(7)' cmundi.png -label 'dfannius\\n(7)' dfannius.png -label 'tautologico\\n(7)' tautologico.png -label 'jabl\\n(7)' jabl.png -label 'dreiss-isb\\n(7)' dreiss-isb.png -label 'axsk\\n(7)' axsk.png -label 'sachdevasushant\\n(7)' sachdevasushant.png -label 'andyreagan\\n(7)' andyreagan.png -label 'gganssle\\n(7)' gganssle.png -label 'maximsch2\\n(7)' maximsch2.png -label 'lstagner\\n(6)' lstagner.png -label 'aiorla\\n(6)' aiorla.png -label 'artkuo\\n(6)' artkuo.png -label 'kofron\\n(6)' kofron.png -label 'ikirill\\n(6)' ikirill.png -label 'sbcd90\\n(6)' sbcd90.png -label 'LeoK987\\n(6)' LeoK987.png -label 'MurrayT\\n(6)' MurrayT.png -label 'fdabl\\n(6)' fdabl.png -label 'mikebryniarski\\n(5)' mikebryniarski.png -label 'i2000s\\n(5)' i2000s.png -label 'mariushoch\\n(5)' mariushoch.png -label 'zgimbutas\\n(5)' zgimbutas.png -label 'ypeels\\n(5)' ypeels.png -label 'chiraganand\\n(5)' chiraganand.png -label 'drrobots\\n(5)' drrobots.png -label 'samuela\\n(5)' samuela.png -label 'hammer\\n(5)' hammer.png -label 'daanhb\\n(5)' daanhb.png -label 'grayclhn\\n(5)' grayclhn.png -label 'wkearn\\n(5)' wkearn.png -label 'mbeltagy\\n(5)' mbeltagy.png -label 'ajtulloch\\n(5)' ajtulloch.png -label 'ivirshup\\n(5)' ivirshup.png -label 'alanedelman\\n(5)' alanedelman.png -label 'joeykrug\\n(5)' joeykrug.png -label 'ermueller2000\\n(5)' ermueller2000.png -label 'hongborong\\n(5)' hongborong.png -label 'huwenshuo\\n(5)' huwenshuo.png -label 'jerry-cai-chanjet\\n(5)' jerry-cai-chanjet.png -label 'iizukak\\n(5)' iizukak.png -label 'bisraelsen\\n(5)' bisraelsen.png -label 'mhvannier\\n(5)' mhvannier.png -label 'peterkovesi\\n(5)' peterkovesi.png -label 'dreammaker\\n(5)' dreammaker.png -label 'sarvjeetsinghghotra\\n(4)' sarvjeetsinghghotra.png -label 'Oddan\\n(4)' Oddan.png -label 'certik\\n(4)' certik.png -label 'yledu\\n(4)' yledu.png -label 'zygmuntszpak\\n(4)' zygmuntszpak.png -label 'binnisb\\n(4)' binnisb.png -label 'btracey\\n(4)' btracey.png -label 'avibryant\\n(4)' avibryant.png -label 'MichaeLeroy\\n(4)' MichaeLeroy.png -label 'RichMorin\\n(4)' RichMorin.png -label 'scw\\n(4)' scw.png -label 'armgong\\n(4)' armgong.png -label 'adrianlzt\\n(4)' adrianlzt.png -label 'NPalopoli\\n(4)' NPalopoli.png -label 'skumagai\\n(4)' skumagai.png -label 'yipihey\\n(4)' yipihey.png -label 'jiyinyiyong\\n(4)' jiyinyiyong.png -label 'leakyMirror\\n(4)' leakyMirror.png -label 'dchudz\\n(4)' dchudz.png -label 'EricForgy\\n(4)' EricForgy.png -label 'jasonmorton\\n(4)' jasonmorton.png -label 'ginggs\\n(3)' ginggs.png -label 'hessammehr\\n(3)' hessammehr.png -label 'jey\\n(3)' jey.png -label 'gajjanag\\n(3)' gajjanag.png -label 'JonasRauch\\n(3)' JonasRauch.png -label 'kevinbache\\n(3)' kevinbache.png -label 'markun\\n(3)' markun.png -label 'cqql\\n(3)' cqql.png -label 'gitfoxi\\n(3)' gitfoxi.png -label 'mmaxs\\n(3)' mmaxs.png -label 'muratg\\n(3)' muratg.png -label 'remusao\\n(3)' remusao.png -label 'morris25\\n(3)' morris25.png -label 'testurser\\n(3)' testurser.png -label 'cicku\\n(3)' cicku.png -label 'barche\\n(3)' barche.png -label 'stevenhao\\n(3)' stevenhao.png -label 'tpapp\\n(3)' tpapp.png -label 'qbit\\n(3)' qbit.png -label 'xanderdunn\\n(3)' xanderdunn.png -label 'bnels\\n(3)' bnels.png -label 'gasagna\\n(3)' gasagna.png -label 'doomsplayer\\n(3)' doomsplayer.png -label 'sje30\\n(3)' sje30.png -label 'cfbaptista\\n(3)' cfbaptista.png -label 'macd\\n(3)' macd.png -label 'EQt\\n(3)' EQt.png -label 'yebai\\n(3)' yebai.png -label 'tlnagy\\n(3)' tlnagy.png -label 'simon1103\\n(3)' simon1103.png -label 'DanielHoffmann32\\n(3)' DanielHoffmann32.png -label 'georgelesica-wf\\n(3)' georgelesica-wf.png -label 'apeyser\\n(2)' apeyser.png -label 'grinsted\\n(2)' grinsted.png -label 'fjarri\\n(2)' fjarri.png -label 'bkalpert\\n(2)' bkalpert.png -label 'notthetup\\n(2)' notthetup.png -label 'exaos\\n(2)' exaos.png -label 'fpepin\\n(2)' fpepin.png -label 'nzmsv\\n(2)' nzmsv.png -label 'HomerReid\\n(2)' HomerReid.png -label 'gloine\\n(2)' gloine.png -label 'JeffreySarnoff\\n(2)' JeffreySarnoff.png -label 'joachimdahl\\n(2)' joachimdahl.png -label 'kk49\\n(2)' kk49.png -label 'larsmans\\n(2)' larsmans.png -label 'lvnguyen\\n(2)' lvnguyen.png -label 'lvirgili\\n(2)' lvirgili.png -label 'lbenitesanchez\\n(2)' lbenitesanchez.png -label 'abhijithanilkumar\\n(2)' abhijithanilkumar.png -label 'lorrden\\n(2)' lorrden.png -label 'krislock\\n(2)' krislock.png -label 'patrickyevsukov\\n(2)' patrickyevsukov.png -label 'JosephLenton\\n(2)' JosephLenton.png -label 'thepulkitagarwal\\n(2)' thepulkitagarwal.png -label 'RhysU\\n(2)' RhysU.png -label 'ronisbr\\n(2)' ronisbr.png -label 'odysseus9672\\n(2)' odysseus9672.png -label 'few\\n(2)' few.png -label 'stepelu\\n(2)' stepelu.png -label 'stev47\\n(2)' stev47.png -label 'cameyo42\\n(2)' cameyo42.png -label 'cpk26\\n(2)' cpk26.png -label 'lifeissweetgood\\n(2)' lifeissweetgood.png -label 'matrixmorpheus\\n(2)' matrixmorpheus.png -label 'polarke\\n(2)' polarke.png -label 'yui-knk\\n(2)' yui-knk.png -label 'heptal\\n(2)' heptal.png -label 'levskaya\\n(2)' levskaya.png -label 'gideonite\\n(2)' gideonite.png -label 'domenzain\\n(2)' domenzain.png -label 'palango\\n(2)' palango.png -label 'c-s\\n(2)' c-s.png -label 'tartavull\\n(2)' tartavull.png -label 'hsseung\\n(2)' hsseung.png -label 'vandriasyan\\n(2)' vandriasyan.png -label 'mjs2600\\n(2)' mjs2600.png -label 'maartenheremans\\n(2)' maartenheremans.png -label 'WneleiGao\\n(2)' WneleiGao.png -label 'apleonhardt\\n(1)' apleonhardt.png -label 'atlytle\\n(1)' atlytle.png -label 'agoddard\\n(1)' agoddard.png -label 'aytekinar\\n(1)' aytekinar.png -label 'arlolra\\n(1)' arlolra.png -label 'artnez\\n(1)' artnez.png -label 'aplund\\n(1)' aplund.png -label 'bartolsthoorn\\n(1)' bartolsthoorn.png -label 'bsilbaugh\\n(1)' bsilbaugh.png -label 'benyang\\n(1)' benyang.png -label 'BenoitKnecht\\n(1)' BenoitKnecht.png -label 'BobPortmann\\n(1)' BobPortmann.png -label 'bkamins\\n(1)' bkamins.png -label 'contra\\n(1)' contra.png -label 'dcarrera\\n(1)' dcarrera.png -label 'davidkh\\n(1)' davidkh.png -label 'unsignedzero\\n(1)' unsignedzero.png -label 'parpwhick\\n(1)' parpwhick.png -label 'rdmitry\\n(1)' rdmitry.png -label 'ohspite\\n(1)' ohspite.png -label 'dphildebrandt\\n(1)' dphildebrandt.png -label 'edsfocci\\n(1)' edsfocci.png -label 'lightcatcher\\n(1)' lightcatcher.png -label 'felipecruz\\n(1)' felipecruz.png -label 'EconometricsBySimulation\\n(1)' EconometricsBySimulation.png -label 'oggy\\n(1)' oggy.png -label 'gvnn3\\n(1)' gvnn3.png -label 'gdevanla\\n(1)' gdevanla.png -label 'harikb\\n(1)' harikb.png -label 'iblis17\\n(1)' iblis17.png -label 'ivanmantova\\n(1)' ivanmantova.png -label 'raggi\\n(1)' raggi.png -label 'drjdn\\n(1)' drjdn.png -label 'jimberlage\\n(1)' jimberlage.png -label 'radford\\n(1)' radford.png -label 'johnmcdonnell\\n(1)' johnmcdonnell.png -label 'jjh42\\n(1)' jjh42.png -label 'josefsachsconning\\n(1)' josefsachsconning.png -label 'julienr\\n(1)' julienr.png -label 'jtriley\\n(1)' jtriley.png -label 'miau\\n(1)' miau.png -label 'kyonifer\\n(1)' kyonifer.png -label 'mlhetland\\n(1)' mlhetland.png -label 'mathpup\\n(1)' mathpup.png -label 'markdewing\\n(1)' markdewing.png -label 'mbuettner\\n(1)' mbuettner.png -label 'mason-bially\\n(1)' mason-bially.png -label 'doowttam\\n(1)' doowttam.png -label 'meetmauro\\n(1)' meetmauro.png -label 'ajdecon\\n(1)' ajdecon.png -label 'zaeleus\\n(1)' zaeleus.png -label 'mpeteuil\\n(1)' mpeteuil.png -label 'meggermo\\n(1)' meggermo.png -label 'fivebats\\n(1)' fivebats.png -label 'Mike43110\\n(1)' Mike43110.png -label 'nabilhassein\\n(1)' nabilhassein.png -label 'nsaphra\\n(1)' nsaphra.png -label 'ncnc\\n(1)' ncnc.png -label 'octoploid\\n(1)' octoploid.png -label 'knizkar\\n(1)' knizkar.png -label 'ozancaglayan\\n(1)' ozancaglayan.png -label 'patrickeganfoley\\n(1)' patrickeganfoley.png -label 'pridkett\\n(1)' pridkett.png -label 'Quantisan\\n(1)' Quantisan.png -label 'peterdn\\n(1)' peterdn.png -label 'pjgaudre\\n(1)' pjgaudre.png -label 'pra85\\n(1)' pra85.png -label 'PythonNut\\n(1)' PythonNut.png -label 'purzelrakete\\n(1)' purzelrakete.png -label 'goriccardo\\n(1)' goriccardo.png -label 'rlane\\n(1)' rlane.png -label 'robert-chiniquy\\n(1)' robert-chiniquy.png -label 'rmyorston\\n(1)' rmyorston.png -label 'rwgardner2\\n(1)' rwgardner2.png -label 'samkohn\\n(1)' samkohn.png -label 'knarz\\n(1)' knarz.png -label 'Peenrose\\n(1)' Peenrose.png -label 'srikumarks\\n(1)' srikumarks.png -label 'fehrenbach\\n(1)' fehrenbach.png -label 'AaronWilhelm\\n(1)' AaronWilhelm.png -label 'shabbychef\\n(1)' shabbychef.png -label 'schenker\\n(1)' schenker.png -label 'tobig\\n(1)' tobig.png -label 'to-mi\\n(1)' to-mi.png -label 'TravisBarryDick\\n(1)' TravisBarryDick.png -label 'trevor\\n(1)' trevor.png -label 'Triiistan\\n(1)' Triiistan.png -label 'uraimo\\n(1)' uraimo.png -label 'vitaut\\n(1)' vitaut.png -label 'radioflash\\n(1)' radioflash.png -label 'ygrange\\n(1)' ygrange.png -label 'GaZ3ll3\\n(1)' GaZ3ll3.png -label 'HenkPoley\\n(1)' HenkPoley.png -label 'jleny\\n(1)' jleny.png -label 'wlbksy\\n(1)' wlbksy.png -label 'ewiger\\n(1)' ewiger.png -label 'vglazer\\n(1)' vglazer.png -label 'mattharper\\n(1)' mattharper.png -label 'dmed256\\n(1)' dmed256.png -label 'pagnani\\n(1)' pagnani.png -label 'bitdeli-chef\\n(1)' bitdeli-chef.png -label 'msacchi\\n(1)' msacchi.png -label 'nasser00\\n(1)' nasser00.png -geometry 64x64+16+16 -font Helvetica montage_julia.jpg`: no such file or directory (ENOENT)\nwhile loading In[16], in expression starting on line 155",
"output_type": "error",
"traceback": [
"LoadError: could not spawn `montage -tile 35x22 -label 'JeffBezanson\\n(7584)' JeffBezanson.png -label 'timholy\\n(4428)' timholy.png -label 'StefanKarpinski\\n(3684)' StefanKarpinski.png -label 'ViralBShah\\n(2840)' ViralBShah.png -label 'lindahua\\n(2749)' lindahua.png -label 'jakebolewski\\n(2539)' jakebolewski.png -label 'dlfivefifty\\n(2299)' dlfivefifty.png -label 'mlubin\\n(2164)' mlubin.png -label 'SimonDanisch\\n(2131)' SimonDanisch.png -label 'vtjnash\\n(1979)' vtjnash.png -label 'MikeInnes\\n(1878)' MikeInnes.png -label 'simonster\\n(1775)' simonster.png -label 'dcjones\\n(1752)' dcjones.png -label 'tkelman\\n(1747)' tkelman.png -label 'Keno\\n(1711)' Keno.png -label 'stevengj\\n(1667)' stevengj.png -label 'IainNZ\\n(1578)' IainNZ.png -label 'jiahao\\n(1447)' jiahao.png -label 'johnmyleswhite\\n(1373)' johnmyleswhite.png -label 'nolta\\n(1278)' nolta.png -label 'rgiordan\\n(1233)' rgiordan.png -label 'shashi\\n(1186)' shashi.png -label 'pluskid\\n(1131)' pluskid.png -label 'ChrisTimperley\\n(1078)' ChrisTimperley.png -label 'weijianzhang\\n(1042)' weijianzhang.png -label 'dmbates\\n(989)' dmbates.png -label 'andreasnoack\\n(984)' andreasnoack.png -label 'joshday\\n(951)' joshday.png -label 'carlobaldassi\\n(921)' carlobaldassi.png -label 'andrewcooke\\n(917)' andrewcooke.png -label 'joehuchette\\n(882)' joehuchette.png -label 'brian-j-smith\\n(878)' brian-j-smith.png -label 'codles\\n(840)' codles.png -label 'staticfloat\\n(839)' staticfloat.png -label 'yuyichao\\n(835)' yuyichao.png -label 'quinnj\\n(815)' quinnj.png -label 'kmsquire\\n(775)' kmsquire.png -label 'tbreloff\\n(751)' tbreloff.png -label 'wbhart\\n(706)' wbhart.png -label 'tanmaykm\\n(697)' tanmaykm.png -label 'ihnorton\\n(694)' ihnorton.png -label 'r9y9\\n(681)' r9y9.png -label 'jverzani\\n(668)' jverzani.png -label 'davidavdav\\n(653)' davidavdav.png -label 'ehsantn\\n(642)' ehsantn.png -label 'sbromberger\\n(640)' sbromberger.png -label 'MichaelHatherly\\n(638)' MichaelHatherly.png -label 'amitmurthy\\n(616)' amitmurthy.png -label 'tonyhffong\\n(569)' tonyhffong.png -label 'scidom\\n(561)' scidom.png -label 'MikaelSlevinsky\\n(537)' MikaelSlevinsky.png -label 'sjkelly\\n(528)' sjkelly.png -label 'simonbyrne\\n(522)' simonbyrne.png -label 'WestleyArgentum\\n(519)' WestleyArgentum.png -label 'madeleineudell\\n(514)' madeleineudell.png -label 'aviks\\n(492)' aviks.png -label 'Luthaf\\n(492)' Luthaf.png -label 'samoconnor\\n(469)' samoconnor.png -label 'dpsanders\\n(456)' dpsanders.png -label 'montyvesselinov\\n(450)' montyvesselinov.png -label 'jzuhone\\n(446)' jzuhone.png -label 'diegozea\\n(445)' diegozea.png -label 'robertfeldt\\n(443)' robertfeldt.png -label 'bicycle1885\\n(442)' bicycle1885.png -label 'spencerlyon2\\n(440)' spencerlyon2.png -label 'jeff-regier\\n(435)' jeff-regier.png -label 'trthatcher\\n(434)' trthatcher.png -label 'goedman\\n(422)' goedman.png -label 'kshyatt\\n(420)' kshyatt.png -label 'jrevels\\n(413)' jrevels.png -label 'powerdistribution\\n(409)' powerdistribution.png -label 'DrTodd13\\n(400)' DrTodd13.png -label 'KristofferC\\n(395)' KristofferC.png -label 'cgroll\\n(392)' cgroll.png -label 'malmaud\\n(387)' malmaud.png -label 'zenna\\n(381)' zenna.png -label 'tshort\\n(377)' tshort.png -label 'randyzwitch\\n(376)' randyzwitch.png -label 'benhamner\\n(374)' benhamner.png -label 'garborg\\n(363)' garborg.png -label 'eschnett\\n(359)' eschnett.png -label 'tlycken\\n(359)' tlycken.png -label 'macrintr\\n(359)' macrintr.png -label 'toivoh\\n(356)' toivoh.png -label 'jumutc\\n(347)' jumutc.png -label 'tpoisot\\n(325)' tpoisot.png -label 'thofma\\n(321)' thofma.png -label 'mbauman\\n(319)' mbauman.png -label 'tinybike\\n(317)' tinybike.png -label 'Evizero\\n(317)' Evizero.png -label 'ninegua\\n(313)' ninegua.png -label 'fredo-dedup\\n(312)' fredo-dedup.png -label 'samuel-massinon-invenia\\n(307)' samuel-massinon-invenia.png -label 'alyst\\n(305)' alyst.png -label 'kbarbary\\n(303)' kbarbary.png -label 'mweastwood\\n(298)' mweastwood.png -label 'omus\\n(291)' omus.png -label 'jaak-s\\n(285)' jaak-s.png -label 'astrieanna\\n(284)' astrieanna.png -label 'lbenet\\n(284)' lbenet.png -label 'emoszkowski\\n(284)' emoszkowski.png -label 'julian-gehring\\n(281)' julian-gehring.png -label 'autozimu\\n(280)' autozimu.png -label 'karanveerm\\n(275)' karanveerm.png -label 'pao\\n(267)' pao.png -label 'mschauer\\n(267)' mschauer.png -label 'imanuelcostigan\\n(257)' imanuelcostigan.png -label 'dodamih\\n(249)' dodamih.png -label 'micahjsmith\\n(248)' micahjsmith.png -label 'rennis250\\n(246)' rennis250.png -label 'dfdx\\n(244)' dfdx.png -label 'zachallaun\\n(242)' zachallaun.png -label 'juliohm\\n(242)' juliohm.png -label 'zyedidia\\n(241)' zyedidia.png -label 'wildart\\n(239)' wildart.png -label 'matthieugomez\\n(233)' matthieugomez.png -label 'sfchen\\n(227)' sfchen.png -label 'nalimilan\\n(226)' nalimilan.png -label 'ivarne\\n(223)' ivarne.png -label 'nassarhuda\\n(223)' nassarhuda.png -label 'JayKickliter\\n(217)' JayKickliter.png -label 'fairbrot\\n(216)' fairbrot.png -label 'ovainola\\n(213)' ovainola.png -label 'lkuper\\n(208)' lkuper.png -label 'BenLauwens\\n(202)' BenLauwens.png -label 'omalled\\n(201)' omalled.png -label 'boyers\\n(200)' boyers.png -label 'gp0\\n(200)' gp0.png -label 'ahojukka5\\n(200)' ahojukka5.png -label 'pearlzli\\n(199)' pearlzli.png -label 'ssfrr\\n(198)' ssfrr.png -label 'Michael-Klassen\\n(194)' Michael-Klassen.png -label 'HarlanH\\n(191)' HarlanH.png -label 'tawheeler\\n(181)' tawheeler.png -label 'davidagold\\n(178)' davidagold.png -label 'richardreeve\\n(178)' richardreeve.png -label 'jayschwa\\n(176)' jayschwa.png -label 'meggart\\n(173)' meggart.png -label 'mykelk\\n(173)' mykelk.png -label 'nkottary\\n(172)' nkottary.png -label 'svs14\\n(172)' svs14.png -label 'phrb\\n(172)' phrb.png -label 'gummif\\n(171)' gummif.png -label 'ulfworsoe\\n(171)' ulfworsoe.png -label 'jpata\\n(162)' jpata.png -label 'blakejohnson\\n(161)' blakejohnson.png -label 'zhmz90\\n(160)' zhmz90.png -label 'andrioni\\n(159)' andrioni.png -label 'yeesian\\n(157)' yeesian.png -label 'garrison\\n(151)' garrison.png -label 'jheinen\\n(151)' jheinen.png -label 'davidlizeng\\n(150)' davidlizeng.png -label 'vchuravy\\n(143)' vchuravy.png -label 'jhlq\\n(143)' jhlq.png -label 'jdtuck\\n(142)' jdtuck.png -label 'tedsteiner\\n(140)' tedsteiner.png -label 'rsrock\\n(139)' rsrock.png -label 'yurivish\\n(139)' yurivish.png -label 'ScottPJones\\n(135)' ScottPJones.png -label 'emmt\\n(135)' emmt.png -label 'felipenoris\\n(134)' felipenoris.png -label 'mpastell\\n(133)' mpastell.png -label 'chkwon\\n(133)' chkwon.png -label 'dancasimiro\\n(132)' dancasimiro.png -label 'rollingthunder\\n(130)' rollingthunder.png -label 'TeroFrondelius\\n(129)' TeroFrondelius.png -label 'Jutho\\n(128)' Jutho.png -label 'tknopp\\n(128)' tknopp.png -label 'panlanfeng\\n(128)' panlanfeng.png -label 'andferrari\\n(127)' andferrari.png -label 'davidanthoff\\n(126)' davidanthoff.png -label 'samuelcolvin\\n(126)' samuelcolvin.png -label 'hayd\\n(124)' hayd.png -label 'dhoegh\\n(124)' dhoegh.png -label 'JackDunnNZ\\n(124)' JackDunnNZ.png -label 'lgautier\\n(124)' lgautier.png -label 'phobon\\n(122)' phobon.png -label 'gragusa\\n(122)' gragusa.png -label 'helgee\\n(118)' helgee.png -label 'jbn\\n(116)' jbn.png -label 'reworkhow\\n(114)' reworkhow.png -label 'hng\\n(113)' hng.png -label 'keithseahus\\n(113)' keithseahus.png -label 'randy3k\\n(112)' randy3k.png -label 'dirkschumacher\\n(111)' dirkschumacher.png -label 'jipolanco\\n(110)' jipolanco.png -label 'pzion\\n(109)' pzion.png -label 'null-a\\n(109)' null-a.png -label 'TotalVerb\\n(108)' TotalVerb.png -label 'Rory-Finnegan\\n(108)' Rory-Finnegan.png -label 'chezou\\n(105)' chezou.png -label 'aaronstanton\\n(105)' aaronstanton.png -label 'burrowsa\\n(104)' burrowsa.png -label 'rohitvarkey\\n(104)' rohitvarkey.png -label 'jlapeyre\\n(103)' jlapeyre.png -label 'fhs\\n(103)' fhs.png -label 'cstjean\\n(103)' cstjean.png -label 'skariel\\n(102)' skariel.png -label 'jgoldfar\\n(102)' jgoldfar.png -label 'porterjamesj\\n(101)' porterjamesj.png -label 'denizyuret\\n(99)' denizyuret.png -label 'darwindarak\\n(98)' darwindarak.png -label 'LaurenceA\\n(97)' LaurenceA.png -label 'glesica\\n(97)' glesica.png -label 'jpfairbanks\\n(95)' jpfairbanks.png -label 'Sean1708\\n(93)' Sean1708.png -label 'prcastro\\n(92)' prcastro.png -label 'oheil\\n(92)' oheil.png -label 'ReidAtcheson\\n(92)' ReidAtcheson.png -label 'codeneomatrix\\n(91)' codeneomatrix.png -label 'mfalt\\n(90)' mfalt.png -label 'catawbasam\\n(89)' catawbasam.png -label 'rened\\n(89)' rened.png -label 'carnaval\\n(88)' carnaval.png -label 'daviddelaat\\n(87)' daviddelaat.png -label 'damiendr\\n(87)' damiendr.png -label 'ahwillia\\n(87)' ahwillia.png -label 'quxiaofeng\\n(87)' quxiaofeng.png -label 'twadleigh\\n(86)' twadleigh.png -label 'ajt60gaibb\\n(85)' ajt60gaibb.png -label 'iamed2\\n(84)' iamed2.png -label 'davidssmith\\n(82)' davidssmith.png -label 'phaverty\\n(82)' phaverty.png -label 'abeschneider\\n(82)' abeschneider.png -label 'rtrochet\\n(82)' rtrochet.png -label 'rfourquet\\n(81)' rfourquet.png -label 'bjarthur\\n(81)' bjarthur.png -label 'blegat\\n(81)' blegat.png -label 'GeorgeXing\\n(79)' GeorgeXing.png -label 'ArchRobison\\n(79)' ArchRobison.png -label 'bardwell\\n(79)' bardwell.png -label 'ivanslapnicar\\n(78)' ivanslapnicar.png -label 'danielmendel\\n(76)' danielmendel.png -label 'christianpeel\\n(75)' christianpeel.png -label 'eraviart\\n(75)' eraviart.png -label 'JoelHobson\\n(73)' JoelHobson.png -label 'GordStephen\\n(71)' GordStephen.png -label 'swadey\\n(70)' swadey.png -label 'nwh\\n(70)' nwh.png -label 'snotskie\\n(70)' snotskie.png -label 'latticetower\\n(69)' latticetower.png -label 'DANA-Laboratory\\n(68)' DANA-Laboratory.png -label 'bfredl\\n(68)' bfredl.png -label 'leonardt\\n(68)' leonardt.png -label 'dahlend\\n(67)' dahlend.png -label 'robertdj\\n(67)' robertdj.png -label 'mauro3\\n(66)' mauro3.png -label 'danielsuo\\n(66)' danielsuo.png -label 'waldyrious\\n(65)' waldyrious.png -label 'shangmu\\n(65)' shangmu.png -label 'danspielman\\n(65)' danspielman.png -label 'Tao-Hu\\n(65)' Tao-Hu.png -label 'pygy\\n(64)' pygy.png -label 'bdeonovic\\n(64)' bdeonovic.png -label 'lcw\\n(63)' lcw.png -label 'simulkade\\n(63)' simulkade.png -label 'lruthotto\\n(61)' lruthotto.png -label 'magistere\\n(60)' magistere.png -label 'rawls238\\n(60)' rawls238.png -label 'lucasb-eyer\\n(59)' lucasb-eyer.png -label 'dls\\n(59)' dls.png -label 'IshitaTakeshi\\n(59)' IshitaTakeshi.png -label 'scheinerman\\n(57)' scheinerman.png -label 'jwmerrill\\n(57)' jwmerrill.png -label 'lendle\\n(56)' lendle.png -label 'sam81\\n(56)' sam81.png -label 'greenflash1357\\n(55)' greenflash1357.png -label 'charlesll\\n(54)' charlesll.png -label 'odow\\n(53)' odow.png -label 'innerlee\\n(53)' innerlee.png -label 'acroy\\n(52)' acroy.png -label 'Wilfred\\n(51)' Wilfred.png -label 'wavexx\\n(51)' wavexx.png -label 'rdeits\\n(51)' rdeits.png -label 'pjabardo\\n(51)' pjabardo.png -label 'yarlett\\n(51)' yarlett.png -label 'kersulis\\n(50)' kersulis.png -label 'dpo\\n(50)' dpo.png -label 'sawcordwell\\n(49)' sawcordwell.png -label 'sebastien-villemot\\n(48)' sebastien-villemot.png -label 'bensadeghi\\n(47)' bensadeghi.png -label 'TheBB\\n(47)' TheBB.png -label 'Ward9250\\n(47)' Ward9250.png -label 'maleadt\\n(46)' maleadt.png -label 'cc7768\\n(46)' cc7768.png -label 'giordano\\n(46)' giordano.png -label 'rjagerman\\n(46)' rjagerman.png -label 'antinucleon\\n(46)' antinucleon.png -label 'cormullion\\n(44)' cormullion.png -label 'kzahedi\\n(44)' kzahedi.png -label 'sbos\\n(43)' sbos.png -label 'natj\\n(43)' natj.png -label 'Smaug123\\n(43)' Smaug123.png -label 'Azzaare\\n(43)' Azzaare.png -label 'zingales\\n(42)' zingales.png -label 'stefan-k\\n(42)' stefan-k.png -label 'vonDonnerstein\\n(42)' vonDonnerstein.png -label 'yunjhongwu\\n(42)' yunjhongwu.png -label 'sunetos\\n(42)' sunetos.png -label 'jhasse\\n(41)' jhasse.png -label 'milktrader\\n(41)' milktrader.png -label 'KDr2\\n(40)' KDr2.png -label 'ggggggggg\\n(40)' ggggggggg.png -label 'mbaz\\n(40)' mbaz.png -label 'ayakimovich\\n(39)' ayakimovich.png -label 'pozorvlak\\n(37)' pozorvlak.png -label 'compressed\\n(36)' compressed.png -label 'spurll\\n(36)' spurll.png -label 'BigCrunsh\\n(36)' BigCrunsh.png -label 'mrxiaohe\\n(36)' mrxiaohe.png -label 'Aerlinger\\n(34)' Aerlinger.png -label 'benmoran\\n(34)' benmoran.png -label 'bass3m\\n(34)' bass3m.png -label 'pkofod\\n(33)' pkofod.png -label 'anthonyclays\\n(33)' anthonyclays.png -label 'rawrgrr\\n(32)' rawrgrr.png -label 'ekobir\\n(32)' ekobir.png -label 'nirinA\\n(32)' nirinA.png -label 'JockLawrie\\n(32)' JockLawrie.png -label 'danluu\\n(31)' danluu.png -label 'ninjin\\n(31)' ninjin.png -label 'mkriele\\n(31)' mkriele.png -label 'cyrusmaher\\n(31)' cyrusmaher.png -label 'jonasrauber\\n(30)' jonasrauber.png -label 'c42f\\n(29)' c42f.png -label 'jennyhong\\n(29)' jennyhong.png -label 'billmclean\\n(29)' billmclean.png -label 'RJDennis\\n(29)' RJDennis.png -label 'tqchen\\n(29)' tqchen.png -label 'jcorbin\\n(28)' jcorbin.png -label 'waTeim\\n(28)' waTeim.png -label 'dirk\\n(28)' dirk.png -label 'pwl\\n(28)' pwl.png -label 'DeVerMyst\\n(28)' DeVerMyst.png -label '4gh\\n(28)' 4gh.png -label 'slyrz\\n(27)' slyrz.png -label 'ranjanan\\n(27)' ranjanan.png -label 'serbanstan\\n(27)' serbanstan.png -label 'BRONSOLO\\n(27)' BRONSOLO.png -label 'crayxt\\n(26)' crayxt.png -label 'crbinz\\n(26)' crbinz.png -label 'pfitzseb\\n(25)' pfitzseb.png -label 'Betawolf\\n(25)' Betawolf.png -label 'PhillP\\n(25)' PhillP.png -label 'marcusps\\n(24)' marcusps.png -label 'tmlbl\\n(24)' tmlbl.png -label 'timothyrenner\\n(24)' timothyrenner.png -label 'jcrist\\n(24)' jcrist.png -label 'KayleaHaynes\\n(23)' KayleaHaynes.png -label 'njwilson23\\n(23)' njwilson23.png -label 'wookay\\n(23)' wookay.png -label 'Pbellive\\n(23)' Pbellive.png -label 'pabloferz\\n(22)' pabloferz.png -label 'nlhepler\\n(22)' nlhepler.png -label 'aaalexandrov\\n(22)' aaalexandrov.png -label 'joidegn\\n(22)' joidegn.png -label 'DrKrar\\n(22)' DrKrar.png -label 'klpn\\n(22)' klpn.png -label 'wesbarnett\\n(22)' wesbarnett.png -label 'tchajed\\n(22)' tchajed.png -label 'Ismael-VC\\n(21)' Ismael-VC.png -label 'gajomi\\n(21)' gajomi.png -label 'SamChill\\n(21)' SamChill.png -label 'amellnik\\n(21)' amellnik.png -label 'arypurnomoz\\n(21)' arypurnomoz.png -label 'mguzmann\\n(21)' mguzmann.png -label 'nstiurca\\n(21)' nstiurca.png -label 'rsofaer\\n(20)' rsofaer.png -label 'goretkin\\n(20)' goretkin.png -label 'fundamental\\n(20)' fundamental.png -label 'oschulz\\n(20)' oschulz.png -label 'gerhardtulzer\\n(20)' gerhardtulzer.png -label 'jacksonthea\\n(20)' jacksonthea.png -label 'ararslan\\n(20)' ararslan.png -label 'kpamnany\\n(19)' kpamnany.png -label 'GlenHertz\\n(19)' GlenHertz.png -label 'cbecker\\n(19)' cbecker.png -label 'AndyGreenwell\\n(19)' AndyGreenwell.png -label 'schmrlng\\n(19)' schmrlng.png -label 'baggepinnen\\n(19)' baggepinnen.png -label 'droidicus\\n(19)' droidicus.png -label 'oxinabox\\n(19)' oxinabox.png -label 'nanosec\\n(18)' nanosec.png -label 'GunnarFarneback\\n(18)' GunnarFarneback.png -label 'rickhg12hs\\n(18)' rickhg12hs.png -label 'wsliang\\n(18)' wsliang.png -label 'marcusdavidwebb\\n(18)' marcusdavidwebb.png -label 'LMescheder\\n(18)' LMescheder.png -label 'stokasto\\n(18)' stokasto.png -label 'invalid-email-address\\n(18)' invalid-email-address.png -label 'mfasi\\n(17)' mfasi.png -label 'StephenVavasis\\n(17)' StephenVavasis.png -label 'chuckha\\n(17)' chuckha.png -label 'scheidan\\n(17)' scheidan.png -label 'swt30\\n(17)' swt30.png -label 'joshuamiller\\n(17)' joshuamiller.png -label 'caryan\\n(17)' caryan.png -label 'baruchel\\n(17)' baruchel.png -label 'GDPlumb\\n(17)' GDPlumb.png -label 'adambom\\n(16)' adambom.png -label 'jtravs\\n(16)' jtravs.png -label 'mpf\\n(16)' mpf.png -label 'ntessore\\n(16)' ntessore.png -label 's2maki\\n(16)' s2maki.png -label 'slundberg\\n(16)' slundberg.png -label 'gusl\\n(16)' gusl.png -label 'indiedotkim\\n(16)' indiedotkim.png -label 'jkaye2012\\n(16)' jkaye2012.png -label 'maxvoxel8\\n(16)' maxvoxel8.png -label 'VHaravy\\n(15)' VHaravy.png -label 'Sacha0\\n(15)' Sacha0.png -label 'PallHaraldsson\\n(15)' PallHaraldsson.png -label 'elehcim\\n(15)' elehcim.png -label 'petercolberg\\n(15)' petercolberg.png -label 'jdrugo\\n(15)' jdrugo.png -label 'visr\\n(15)' visr.png -label 'AndreyKolev\\n(15)' AndreyKolev.png -label 'rickedanielson\\n(15)' rickedanielson.png -label 'mdavezac\\n(15)' mdavezac.png -label 'fabianlischka\\n(14)' fabianlischka.png -label 'Elzair\\n(14)' Elzair.png -label 'bramtayl\\n(14)' bramtayl.png -label 'evanfields\\n(14)' evanfields.png -label 'stemann\\n(14)' stemann.png -label 'DanielArndt\\n(13)' DanielArndt.png -label 'cdsousa\\n(13)' cdsousa.png -label 'nowozin\\n(13)' nowozin.png -label 'tcfuji\\n(13)' tcfuji.png -label 'reallyasi9\\n(13)' reallyasi9.png -label 'fcard\\n(12)' fcard.png -label 'calder\\n(12)' calder.png -label 'binarybana\\n(12)' binarybana.png -label 'mdpradeep\\n(12)' mdpradeep.png -label 'dgleich\\n(12)' dgleich.png -label 'afternone\\n(12)' afternone.png -label 'dcampbell24\\n(11)' dcampbell24.png -label 'drepper\\n(11)' drepper.png -label 'brendano\\n(11)' brendano.png -label 'samuelpowell\\n(11)' samuelpowell.png -label 'boydgreenfield\\n(11)' boydgreenfield.png -label 'mweiden\\n(11)' mweiden.png -label 'ahalwright\\n(11)' ahalwright.png -label 'Daagr\\n(11)' Daagr.png -label 'dslate\\n(10)' dslate.png -label 'xhochy\\n(10)' xhochy.png -label 'Cody-G\\n(10)' Cody-G.png -label 'sbebo\\n(10)' sbebo.png -label 'micklat\\n(10)' micklat.png -label 'mlewe\\n(10)' mlewe.png -label 'Lanzafame\\n(10)' Lanzafame.png -label 'luchr\\n(10)' luchr.png -label 'jrising\\n(10)' jrising.png -label 'christophfeinauer\\n(10)' christophfeinauer.png -label 'keesvp\\n(10)' keesvp.png -label 'mcprentiss\\n(9)' mcprentiss.png -label 'martinholters\\n(9)' martinholters.png -label 'yomichi\\n(9)' yomichi.png -label 'mzaffalon\\n(9)' mzaffalon.png -label 'lostanlen\\n(9)' lostanlen.png -label 'Dawny33\\n(9)' Dawny33.png -label 'bcj\\n(9)' bcj.png -label 'srp\\n(9)' srp.png -label 'dioptre\\n(9)' dioptre.png -label 'PaulBellette\\n(9)' PaulBellette.png -label 'Lightjohn\\n(9)' Lightjohn.png -label 'nutsiepully\\n(8)' nutsiepully.png -label 'peerst\\n(8)' peerst.png -label 'simonp0420\\n(8)' simonp0420.png -label 'dronir\\n(8)' dronir.png -label 'cbenz\\n(8)' cbenz.png -label 'r2dbg\\n(8)' r2dbg.png -label 'BenConnault\\n(8)' BenConnault.png -label 'acrosby\\n(8)' acrosby.png -label 'shixiao\\n(8)' shixiao.png -label 'jerryzhenleicai\\n(8)' jerryzhenleicai.png -label 'mdcfrancis\\n(8)' mdcfrancis.png -label 'eleuven\\n(7)' eleuven.png -label 'LachlanGunn\\n(7)' LachlanGunn.png -label 'justbur\\n(7)' justbur.png -label 'cmundi\\n(7)' cmundi.png -label 'dfannius\\n(7)' dfannius.png -label 'tautologico\\n(7)' tautologico.png -label 'jabl\\n(7)' jabl.png -label 'dreiss-isb\\n(7)' dreiss-isb.png -label 'axsk\\n(7)' axsk.png -label 'sachdevasushant\\n(7)' sachdevasushant.png -label 'andyreagan\\n(7)' andyreagan.png -label 'gganssle\\n(7)' gganssle.png -label 'maximsch2\\n(7)' maximsch2.png -label 'lstagner\\n(6)' lstagner.png -label 'aiorla\\n(6)' aiorla.png -label 'artkuo\\n(6)' artkuo.png -label 'kofron\\n(6)' kofron.png -label 'ikirill\\n(6)' ikirill.png -label 'sbcd90\\n(6)' sbcd90.png -label 'LeoK987\\n(6)' LeoK987.png -label 'MurrayT\\n(6)' MurrayT.png -label 'fdabl\\n(6)' fdabl.png -label 'mikebryniarski\\n(5)' mikebryniarski.png -label 'i2000s\\n(5)' i2000s.png -label 'mariushoch\\n(5)' mariushoch.png -label 'zgimbutas\\n(5)' zgimbutas.png -label 'ypeels\\n(5)' ypeels.png -label 'chiraganand\\n(5)' chiraganand.png -label 'drrobots\\n(5)' drrobots.png -label 'samuela\\n(5)' samuela.png -label 'hammer\\n(5)' hammer.png -label 'daanhb\\n(5)' daanhb.png -label 'grayclhn\\n(5)' grayclhn.png -label 'wkearn\\n(5)' wkearn.png -label 'mbeltagy\\n(5)' mbeltagy.png -label 'ajtulloch\\n(5)' ajtulloch.png -label 'ivirshup\\n(5)' ivirshup.png -label 'alanedelman\\n(5)' alanedelman.png -label 'joeykrug\\n(5)' joeykrug.png -label 'ermueller2000\\n(5)' ermueller2000.png -label 'hongborong\\n(5)' hongborong.png -label 'huwenshuo\\n(5)' huwenshuo.png -label 'jerry-cai-chanjet\\n(5)' jerry-cai-chanjet.png -label 'iizukak\\n(5)' iizukak.png -label 'bisraelsen\\n(5)' bisraelsen.png -label 'mhvannier\\n(5)' mhvannier.png -label 'peterkovesi\\n(5)' peterkovesi.png -label 'dreammaker\\n(5)' dreammaker.png -label 'sarvjeetsinghghotra\\n(4)' sarvjeetsinghghotra.png -label 'Oddan\\n(4)' Oddan.png -label 'certik\\n(4)' certik.png -label 'yledu\\n(4)' yledu.png -label 'zygmuntszpak\\n(4)' zygmuntszpak.png -label 'binnisb\\n(4)' binnisb.png -label 'btracey\\n(4)' btracey.png -label 'avibryant\\n(4)' avibryant.png -label 'MichaeLeroy\\n(4)' MichaeLeroy.png -label 'RichMorin\\n(4)' RichMorin.png -label 'scw\\n(4)' scw.png -label 'armgong\\n(4)' armgong.png -label 'adrianlzt\\n(4)' adrianlzt.png -label 'NPalopoli\\n(4)' NPalopoli.png -label 'skumagai\\n(4)' skumagai.png -label 'yipihey\\n(4)' yipihey.png -label 'jiyinyiyong\\n(4)' jiyinyiyong.png -label 'leakyMirror\\n(4)' leakyMirror.png -label 'dchudz\\n(4)' dchudz.png -label 'EricForgy\\n(4)' EricForgy.png -label 'jasonmorton\\n(4)' jasonmorton.png -label 'ginggs\\n(3)' ginggs.png -label 'hessammehr\\n(3)' hessammehr.png -label 'jey\\n(3)' jey.png -label 'gajjanag\\n(3)' gajjanag.png -label 'JonasRauch\\n(3)' JonasRauch.png -label 'kevinbache\\n(3)' kevinbache.png -label 'markun\\n(3)' markun.png -label 'cqql\\n(3)' cqql.png -label 'gitfoxi\\n(3)' gitfoxi.png -label 'mmaxs\\n(3)' mmaxs.png -label 'muratg\\n(3)' muratg.png -label 'remusao\\n(3)' remusao.png -label 'morris25\\n(3)' morris25.png -label 'testurser\\n(3)' testurser.png -label 'cicku\\n(3)' cicku.png -label 'barche\\n(3)' barche.png -label 'stevenhao\\n(3)' stevenhao.png -label 'tpapp\\n(3)' tpapp.png -label 'qbit\\n(3)' qbit.png -label 'xanderdunn\\n(3)' xanderdunn.png -label 'bnels\\n(3)' bnels.png -label 'gasagna\\n(3)' gasagna.png -label 'doomsplayer\\n(3)' doomsplayer.png -label 'sje30\\n(3)' sje30.png -label 'cfbaptista\\n(3)' cfbaptista.png -label 'macd\\n(3)' macd.png -label 'EQt\\n(3)' EQt.png -label 'yebai\\n(3)' yebai.png -label 'tlnagy\\n(3)' tlnagy.png -label 'simon1103\\n(3)' simon1103.png -label 'DanielHoffmann32\\n(3)' DanielHoffmann32.png -label 'georgelesica-wf\\n(3)' georgelesica-wf.png -label 'apeyser\\n(2)' apeyser.png -label 'grinsted\\n(2)' grinsted.png -label 'fjarri\\n(2)' fjarri.png -label 'bkalpert\\n(2)' bkalpert.png -label 'notthetup\\n(2)' notthetup.png -label 'exaos\\n(2)' exaos.png -label 'fpepin\\n(2)' fpepin.png -label 'nzmsv\\n(2)' nzmsv.png -label 'HomerReid\\n(2)' HomerReid.png -label 'gloine\\n(2)' gloine.png -label 'JeffreySarnoff\\n(2)' JeffreySarnoff.png -label 'joachimdahl\\n(2)' joachimdahl.png -label 'kk49\\n(2)' kk49.png -label 'larsmans\\n(2)' larsmans.png -label 'lvnguyen\\n(2)' lvnguyen.png -label 'lvirgili\\n(2)' lvirgili.png -label 'lbenitesanchez\\n(2)' lbenitesanchez.png -label 'abhijithanilkumar\\n(2)' abhijithanilkumar.png -label 'lorrden\\n(2)' lorrden.png -label 'krislock\\n(2)' krislock.png -label 'patrickyevsukov\\n(2)' patrickyevsukov.png -label 'JosephLenton\\n(2)' JosephLenton.png -label 'thepulkitagarwal\\n(2)' thepulkitagarwal.png -label 'RhysU\\n(2)' RhysU.png -label 'ronisbr\\n(2)' ronisbr.png -label 'odysseus9672\\n(2)' odysseus9672.png -label 'few\\n(2)' few.png -label 'stepelu\\n(2)' stepelu.png -label 'stev47\\n(2)' stev47.png -label 'cameyo42\\n(2)' cameyo42.png -label 'cpk26\\n(2)' cpk26.png -label 'lifeissweetgood\\n(2)' lifeissweetgood.png -label 'matrixmorpheus\\n(2)' matrixmorpheus.png -label 'polarke\\n(2)' polarke.png -label 'yui-knk\\n(2)' yui-knk.png -label 'heptal\\n(2)' heptal.png -label 'levskaya\\n(2)' levskaya.png -label 'gideonite\\n(2)' gideonite.png -label 'domenzain\\n(2)' domenzain.png -label 'palango\\n(2)' palango.png -label 'c-s\\n(2)' c-s.png -label 'tartavull\\n(2)' tartavull.png -label 'hsseung\\n(2)' hsseung.png -label 'vandriasyan\\n(2)' vandriasyan.png -label 'mjs2600\\n(2)' mjs2600.png -label 'maartenheremans\\n(2)' maartenheremans.png -label 'WneleiGao\\n(2)' WneleiGao.png -label 'apleonhardt\\n(1)' apleonhardt.png -label 'atlytle\\n(1)' atlytle.png -label 'agoddard\\n(1)' agoddard.png -label 'aytekinar\\n(1)' aytekinar.png -label 'arlolra\\n(1)' arlolra.png -label 'artnez\\n(1)' artnez.png -label 'aplund\\n(1)' aplund.png -label 'bartolsthoorn\\n(1)' bartolsthoorn.png -label 'bsilbaugh\\n(1)' bsilbaugh.png -label 'benyang\\n(1)' benyang.png -label 'BenoitKnecht\\n(1)' BenoitKnecht.png -label 'BobPortmann\\n(1)' BobPortmann.png -label 'bkamins\\n(1)' bkamins.png -label 'contra\\n(1)' contra.png -label 'dcarrera\\n(1)' dcarrera.png -label 'davidkh\\n(1)' davidkh.png -label 'unsignedzero\\n(1)' unsignedzero.png -label 'parpwhick\\n(1)' parpwhick.png -label 'rdmitry\\n(1)' rdmitry.png -label 'ohspite\\n(1)' ohspite.png -label 'dphildebrandt\\n(1)' dphildebrandt.png -label 'edsfocci\\n(1)' edsfocci.png -label 'lightcatcher\\n(1)' lightcatcher.png -label 'felipecruz\\n(1)' felipecruz.png -label 'EconometricsBySimulation\\n(1)' EconometricsBySimulation.png -label 'oggy\\n(1)' oggy.png -label 'gvnn3\\n(1)' gvnn3.png -label 'gdevanla\\n(1)' gdevanla.png -label 'harikb\\n(1)' harikb.png -label 'iblis17\\n(1)' iblis17.png -label 'ivanmantova\\n(1)' ivanmantova.png -label 'raggi\\n(1)' raggi.png -label 'drjdn\\n(1)' drjdn.png -label 'jimberlage\\n(1)' jimberlage.png -label 'radford\\n(1)' radford.png -label 'johnmcdonnell\\n(1)' johnmcdonnell.png -label 'jjh42\\n(1)' jjh42.png -label 'josefsachsconning\\n(1)' josefsachsconning.png -label 'julienr\\n(1)' julienr.png -label 'jtriley\\n(1)' jtriley.png -label 'miau\\n(1)' miau.png -label 'kyonifer\\n(1)' kyonifer.png -label 'mlhetland\\n(1)' mlhetland.png -label 'mathpup\\n(1)' mathpup.png -label 'markdewing\\n(1)' markdewing.png -label 'mbuettner\\n(1)' mbuettner.png -label 'mason-bially\\n(1)' mason-bially.png -label 'doowttam\\n(1)' doowttam.png -label 'meetmauro\\n(1)' meetmauro.png -label 'ajdecon\\n(1)' ajdecon.png -label 'zaeleus\\n(1)' zaeleus.png -label 'mpeteuil\\n(1)' mpeteuil.png -label 'meggermo\\n(1)' meggermo.png -label 'fivebats\\n(1)' fivebats.png -label 'Mike43110\\n(1)' Mike43110.png -label 'nabilhassein\\n(1)' nabilhassein.png -label 'nsaphra\\n(1)' nsaphra.png -label 'ncnc\\n(1)' ncnc.png -label 'octoploid\\n(1)' octoploid.png -label 'knizkar\\n(1)' knizkar.png -label 'ozancaglayan\\n(1)' ozancaglayan.png -label 'patrickeganfoley\\n(1)' patrickeganfoley.png -label 'pridkett\\n(1)' pridkett.png -label 'Quantisan\\n(1)' Quantisan.png -label 'peterdn\\n(1)' peterdn.png -label 'pjgaudre\\n(1)' pjgaudre.png -label 'pra85\\n(1)' pra85.png -label 'PythonNut\\n(1)' PythonNut.png -label 'purzelrakete\\n(1)' purzelrakete.png -label 'goriccardo\\n(1)' goriccardo.png -label 'rlane\\n(1)' rlane.png -label 'robert-chiniquy\\n(1)' robert-chiniquy.png -label 'rmyorston\\n(1)' rmyorston.png -label 'rwgardner2\\n(1)' rwgardner2.png -label 'samkohn\\n(1)' samkohn.png -label 'knarz\\n(1)' knarz.png -label 'Peenrose\\n(1)' Peenrose.png -label 'srikumarks\\n(1)' srikumarks.png -label 'fehrenbach\\n(1)' fehrenbach.png -label 'AaronWilhelm\\n(1)' AaronWilhelm.png -label 'shabbychef\\n(1)' shabbychef.png -label 'schenker\\n(1)' schenker.png -label 'tobig\\n(1)' tobig.png -label 'to-mi\\n(1)' to-mi.png -label 'TravisBarryDick\\n(1)' TravisBarryDick.png -label 'trevor\\n(1)' trevor.png -label 'Triiistan\\n(1)' Triiistan.png -label 'uraimo\\n(1)' uraimo.png -label 'vitaut\\n(1)' vitaut.png -label 'radioflash\\n(1)' radioflash.png -label 'ygrange\\n(1)' ygrange.png -label 'GaZ3ll3\\n(1)' GaZ3ll3.png -label 'HenkPoley\\n(1)' HenkPoley.png -label 'jleny\\n(1)' jleny.png -label 'wlbksy\\n(1)' wlbksy.png -label 'ewiger\\n(1)' ewiger.png -label 'vglazer\\n(1)' vglazer.png -label 'mattharper\\n(1)' mattharper.png -label 'dmed256\\n(1)' dmed256.png -label 'pagnani\\n(1)' pagnani.png -label 'bitdeli-chef\\n(1)' bitdeli-chef.png -label 'msacchi\\n(1)' msacchi.png -label 'nasser00\\n(1)' nasser00.png -geometry 64x64+16+16 -font Helvetica montage_julia.jpg`: no such file or directory (ENOENT)\nwhile loading In[16], in expression starting on line 155",
"",
" in _jl_spawn at process.jl:262",
" in anonymous at process.jl:415",
" in setup_stdio at ./process.jl:403",
" in __spawn#58__ at ./process.jl:414",
" in run at ./process.jl:530"
]
}
],
"source": [
"@time run(cmd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Distribution of commits"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"([1.0,1.53029,2.34178,3.58361,5.48395,8.39203,12.8422,19.6523,30.0737,46.0215 … 164.923,252.38,386.214,591.019,904.429,1384.04,2117.98,3241.12,4959.85,7590.0],[0,47,32,47,33,36,55,51,40,46 … 46,37,32,27,18,12,9,6,2,1])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spacing=10\n",
"rawcounts = Int[author[\"contributions\"] for author in authors]\n",
"uppercount=spacing*ceil(Int, maximum(rawcounts)/spacing)\n",
"grid = logspace(0, log10(uppercount), 22)\n",
"_, counts = hist(rawcounts, grid)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
],
"text/plain": [
"Plot(...)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot(Geom.bar, Guide.xlabel(\"Commits\"), Guide.ylabel(\"Number of contributors\"),\n",
" y=counts, x=midpoints(grid))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plotting activity on a world map\n",
"\n",
"Another thing we can do with the data is to place everyone on a world map. One way to plot a world map in Julia is to use `Shapefile.jl` to read in a shape file of the world, and render the result in `Compose.jl`.\n",
"\n",
"There are two wrinkles to deal with:\n",
"\n",
"1. `Compose.rectangle` uses different data to describe rectangles than `Shapefile.Rect`. The former uses `(left, top, width, height)` whereas the latter uses `(left, right, top, bottom)`. We can handle the change in data by defining a new `Compose.rectangle` constructor which takes a `Shapefile.Rect` as input.\n",
"\n",
"2. A `Shapefile.Polygon` can be disjoint while a `Compose.polygon` cannot. The distinction is important when reading in shapefiles with disjoint polygons, e.g. to describe noncontiguous country borders. Here, we define a new `convert` method from the former to a `Vector` of `Compose.polygon`s. We also define our own `Polygons` function to generate a `Vector` of `polygon`s from either a `Polygon` or a `Vector` of `Polygon`s. In the latter case we convert each `Polygon` to a `Vector` of `polygon`s, then flatten the resulting `Vector` of `Vector`s after iterating through all the `Polygon`s."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Polygons (generic function with 2 methods)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Convert Shapefile rectangle to Compose rectangle\n",
"Compose.rectangle{T<:Real}(R::Shapefile.Rect{T}) = rectangle(R.left,R.top,R.right-R.left,R.bottom-R.top)\n",
"\n",
"#Compose polygons cannot be disjoint but Shapefile.Polygons can\n",
"#Need to convert Shapefile.Polygon to list of Compose polygons\n",
"function Base.convert(::Type{Vector{Compose.Form{Compose.PolygonPrimitive}}},\n",
" shape::Shapefile.Polygon)\n",
" points = Any[]\n",
" polygons=Any[]\n",
" currentpart=2\n",
" for (i,p) in enumerate(shape.points)\n",
" push!(points, p)\n",
" if i==length(shape.points) || (currentpart≤length(shape.parts) && i==shape.parts[currentpart])\n",
" push!(polygons, polygon([(p.x,p.y) for p in points]))\n",
" currentpart += 1\n",
" points = Any[]\n",
" end\n",
" end\n",
" polygons\n",
"end\n",
"\n",
"Polygons(shape::Shapefile.Polygon) = convert(Vector{Compose.Form{Compose.PolygonPrimitive}}, shape)\n",
"\n",
"#Technically correct only for S=Shapefile.ESRIShape\n",
"Polygons{S<:Shapefile.ESRIShape}(shapes::Vector{S}) = [[convert(Vector{Compose.Form{Compose.PolygonPrimitive}},\n",
" shape) for shape in shapes]...]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we are ready to download a map of the world, read it in with `Shapefile.jl`, and draw it in `Compose.jl`."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: [a,b,...] concatenation is deprecated; use [a;b;...] instead\n"
]
},
{
"data": {
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
],
"text/plain": [
"Compose.SVG(203.2mm,101.6mm,IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=136439, maxsize=Inf, ptr=136440, mark=-1),nothing,\"img-d5d04291\",0,Compose.SVGPropertyFrame[],Dict{Type{T},Union{Compose.Property{P<:Compose.PropertyPrimitive},Void}}(),Dict{Compose.ClipPrimitive{P<:NTuple{N,Measures.Measure}},ASCIIString}(),Tuple{Compose.FormPrimitive,ASCIIString}[],Set{AbstractString}(),true,false,nothing,true,\"img-d5d04291-1\",false,1,AbstractString[],Tuple{AbstractString,AbstractString}[(\"Snap.svg\",\"Snap\")],AbstractString[],false,:none)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Load some data about the world's countries\n",
"worldshapefile=\"ne_110m_admin_0_countries.shp\"\n",
"dl(\"https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/110m_cultural/ne_110m_admin_0_countries.shp\", worldshapefile)\n",
"worldshape = open(worldshapefile) do f\n",
" read(f, Handle)\n",
"end\n",
"world=compose(context(), fill(nothing), stroke(\"black\"), Polygons(worldshape.shapes)...)\n",
"draw(SVG(8inch, 4inch), compose(context(units=UnitBox(-180, 90, 360, -180)), world))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's place everyone on the map.\n",
"\n",
"For a given user, we retrieve their reported location on GitHub using `GitHub.user` and look it up on a geocoding service. Here we use [OpenStreetMap's Nominatim](http://wiki.openstreetmap.org/wiki/Nominatim) service to look up a list of candidate locations, and return the first location as a tuple of latitude, longitude and location name. If there are no candidate locations, return `nothing`.\n",
"\n",
"Since we don't have a nice wrapper around Nominatim like we do for GitHub, we have to do all the error handling ourselves. (Note: There is currently a bug in Julia's web stack which makes this code not work for querying locations with non-ASCII characters in them.)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(42.3750997,-71.1056156,\"Cambridge, MA\")"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"getlatlon(user::AbstractString, my_auth=my_auth) = getlatlon(owner(user, auth=my_auth))\n",
"\n",
"function getlatlon(user::GitHub.Owner, my_auth=my_auth)\n",
" username = get(user.login)\n",
" location = if !isnull(user.location)\n",
" get(user.location) #Read from GitHub.Owner\n",
" else\n",
" try #Work around https://github.com/JuliaWeb/GitHub.jl/issues/51\n",
" #Get user location from GitHub\n",
" user2 = owner(username, auth=my_auth)\n",
" if !isnull(user2.location)\n",
" get(user2.location)\n",
" else\n",
" \"\" #No location data\n",
" end\n",
" catch\n",
" \"\"\n",
" end\n",
" end\n",
" strip(location) == \"\" && return nothing #Location was missing\n",
"\n",
" #If user-reported location is already coordinates, then return them\n",
" try\n",
" #test if location is a string of all digits, punctuation or whitespace\n",
" if all(map(x->isdigit(x)|ispunct(x)|isspace(x), collect(location))\n",
" coords = eval(parse(location))\n",
" if typeof(coords) == Tuple{Float64,Float64}\n",
" return (coords[1], coords[2], location)\n",
" end\n",
" end\n",
" end\n",
"\n",
" #Some simple hacks to normalize locations for Nominatim\n",
" location = replace(location, \"U.S.A.\", \"USA\")\n",
" \n",
" #Take location and look up on geocoding service\n",
" try\n",
" responseosm = get(URI(\"http://nominatim.openstreetmap.org/search\"),\n",
" query=@compat Dict(\"format\"=>\"json\", \"q\"=>location))\n",
" \n",
" responseosmstr = bytestring(responseosm.data)\n",
" \n",
" if responseosm.status!=200 && contains(responseosm.headers[\"Content-Type\"], \"text/html\")\n",
" display(\"text/html\", responseosmstr)\n",
" end\n",
" meosm = JSON.parse(responseosmstr)\n",
" if length(meosm)<1\n",
" warn(\"OpenStreetMaps did not know the location of user $username with reported location \\\"$location\\\"\")\n",
" return (Inf, Inf, location) #Geocoder doesn't know where this is\n",
" end\n",
" #Return the first hit\n",
" return (float(meosm[1][\"lat\"]), float(meosm[1][\"lon\"]), location)\n",
" catch e\n",
" warn(\"Ignoring bad response from URL: http://nominatim.openstreetmap.org/search?format=json&q=$location\")\n",
" println(\"Error caught: \", e)\n",
" if isdefined(:responseosm)\n",
" if contains(responseosm.headers[\"Content-Type\"], \"text/html\")\n",
" display(\"text/html\", responseosmstr)\n",
" else\n",
" println(responseosmstr)\n",
" end\n",
" end\n",
" return nothing\n",
" end\n",
"end\n",
"\n",
"getlatlon(\"jiahao\", my_auth)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now define a function to iterate over a list of authors and add their locations to a `locations` dictionary."
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"adduserlocation! (generic function with 1 method)"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function adduserlocations!(locations::Dict, contributors::Vector{GitHub.Owner})\n",
" @showprogress for user in contributors\n",
" adduserlocation!(locations, user)\n",
" end\n",
"end\n",
"\n",
"function adduserlocations!(locations::Dict, contributors::Vector{Any})\n",
" @showprogress for user in contributors\n",
" adduserlocation!(locations, user[\"contributor\"])\n",
" end\n",
"end\n",
"\n",
"function adduserlocation!(locations::Dict, user::GitHub.Owner)\n",
" username = get(user.login)\n",
" haskey(locations, username) && return #Don't look up existing data again\n",
" location = getlatlon(user, my_auth)\n",
" location==nothing && return\n",
" locations[username] = location\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"isdefined(:locations) || (locations=Dict())\n",
"adduserlocations!(locations, authors)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we have all the data necessary to render user locations as dots on the world map. We use here a dot size that grows slowly with the number of contributions."
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"drawmap (generic function with 5 methods)"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Render developers\n",
"function placeauthors(authors, locations)\n",
" xs = Float64[]; ys=Float64[]; rs=Any[]\n",
" @showprogress for user in authors\n",
" username, n = if isa(user, Dict)\n",
" get(user[\"contributor\"].login), user[\"contributions\"]\n",
" elseif isa(user, GitHub.Owner)\n",
" get(user.login), 1\n",
" end\n",
"\n",
" haskey(locations, username) || continue\n",
" push!(xs, locations[username][2])\n",
" push!(ys, locations[username][1])\n",
" push!(rs, (1+√log(n))*0.3mm)\n",
" end\n",
" circle(xs, ys, rs)\n",
"end\n",
"\n",
"function drawmap(left::Real=-180, right::Real=180, up::Real=90, down::Real=-90,\n",
" composeobjs...; target = SVG(4inch*(right-left)/(up-down),4inch))\n",
" draw(target,\n",
" compose(context(units=UnitBox(left,up,right-left,down-up)), world, composeobjs...))\n",
"\n",
" #Print users in the box\n",
" #for (user, loc) in locations\n",
" # if down\n",
"