-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcode.html
84 lines (74 loc) · 4.84 KB
/
code.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Oliver Keyes - Code</title>
<meta name="description" content="Programming projects and code miscellanea">
<meta name="author" content="Oliver Keyes">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="stylesheets/base.css">
<link rel="stylesheet" href="stylesheets/skeleton.css">
<link rel="stylesheet" href="stylesheets/layout.css">
<link rel="stylesheet" href="stylesheets/custom.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://ironholds.org/analytics/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', 2]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript';
g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="http://ironholds.org/analytics/piwik.php?idsite=2" alt="" /></p></noscript>
<!-- End Piwik Code -->
<body>
<div class="container">
<header class="title sixteen columns">
<h1>Oliver Keyes</h1>
<span class="subheading">Researcher, Programmer, Wikipedian. Doing terrible things to R so you don't have to.</span>
</header>
<nav class="sixteen columns">
<ul class = "nav">
<li><a href = "index.html">About</a></li>
<li><a href = "cv.html">C.V.</a></li>
<li><a href = "code.html">Code</a></li></li>
<li><a href = "research.html">Research</a></li>
<li><a href = "http://blog.ironholds.org/">Blog</a></li>
<li><a href = "https://github.com/Ironholds">GitHub</a></li>
<li><a href = "https://en.wikipedia.org/wiki/User:Ironholds">WP</a></li>
</ul>
</nav>
<div class = "one-third column">
<figure>
<img class = "scale-with-grid" src="images/author_composite.jpg" alt="A rank bad yin">
<figcaption>An example composite image, generated with <a href = "https://github.com/Ironholds/averageimage">averageimage</a>. They don't have to be this creepy, I promise.</figcaption>
</figure>
</div>
<div class= " two-thirds column">
<section>
<p>I spend kind of a lot of time programming, mostly in support of my research. My normal stack is R, C++, Hadoop and Hive, with bits of Python and AWK on occasion. When I'm <em>not</em> doing research I tend to invest my time in building useful and not-so-useful R libraries. These include:</p>
<h3>WikipediR</h3>
<p>A lot of programming languages have MediaWiki API wrappers, from Python to Ruby, R wasn't one of them, so I wrote <a href = "http://cran.r-project.org/web/packages/WikipediR/index.html">WikipediR</a>, which is aimed particularly at the Wikimedia-run instances of MediaWiki.
<h3>averageimage</h3>
<p>In an attempt to answer the question "what's the stupidest thing it's possible to develop exclusively using a language built for statistical analysis?" I wrote <a href = "https://github.com/Ironholds/averageimage">averageimage</a>, a composite image generator in R that accepts JPEGs and both colour and greyscale PNGs, trims them according to the <a href = "https://en.wikipedia.org/wiki/Rule_of_thirds">rule of thirds</a>, and generates and outputs a composite. An example can be seen on the left.</p>
<h3>WMUtils</h3>
<p>As an aid to my work at the WMF, I wrote <a href = "https://github.com/Ironholds/WMUtils">WMUtils</a>, a library of WMF-centred R functions. It includes <a href = "https://github.com/Ironholds/WMUtils/blob/master/R/hive_query.R">Hive querying</a>, <a href = "https://github.com/Ironholds/WMUtils/blob/master/src/geolocate.cpp">C++-based integration with MaxMind's geolocation API</a>, and <a href = "https://github.com/Ironholds/WMUtils/blob/master/src/ua_parse.cpp">user agent parsing</a>, which I spun off into a <a href = "https://github.com/ua-parser/uap-r">self-contained package</a>.
</section>
</div>
<footer class="sixteen columns">
<p>Code is <a href = "http://opensource.org/licenses/MIT">MIT licensed</a>, text is <a href = "http://creativecommons.org/publicdomain/zero/1.0/">CC-0 licensed</a>, and the image is a composite between one taken by my friend <a href="http://jeremy.org/">Jeremy</a>, and one taken by...well, presumably my parents. Site uses the <a href = "http://www.getskeleton.com/">Skeleton CSS system</a>.</p>
</footer>
</div>
</body>
</html>