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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
<!DOCTYPE html>
<html>
<head>
<title>
The Codex »
Hire Me
</title>
<link
rel='stylesheet'
type='text/css'
href='http://fonts.googleapis.com/css?family=Buenard:400,700&subset=latin,latin-ext'>
<link
rel="stylesheet"
type="text/css"
href="media/css/reset.css">
<link
rel="stylesheet"
type="text/css"
href="media/css/grimoire.css">
</head>
<body>
<div id="shell">
<ol id="breadcrumbs">
<li class="crumb-0 not-last">
<a href="./">index</a>
</li>
<li class="crumb-1 last">
hire-me
</li>
</ol>
<div id="article">
<h1 id="hire-me">Hire Me</h1>
<p>I'm always interested in hearing from people and organizations that I can help,
whether that means coming in for a few days to talk about end-to-end testing or
joining your organization full-time to help turn an idea into reality.</p>
<p>I live in and around Toronto, ON. I am more than happy to work remotely, and I
can probably help your organization learn to integrate remote work if it doesn't
already know how.</p>
<p>You can see more about me as a person on
<a href="https://hiremyfriend.io/profiles/90b8caa5">HireMyFriend</a> or
<a href="https://ca.linkedin.com/in/ojacobson/">LinkedIn</a>. You can also get a sense of
the code I write by looking at this blog, as well as my
<a href="https://bitbucket.org/ojacobson">Bitbucket</a> or
<a href="https://github.com/ojacobson/">Github</a> sites: I recommend starting with
<a href="https://github.com/ojacobson/refreshbooks">Refreshbooks</a> or
<a href="https://github.com/ojacobson/sparkplug">Sparkplug</a>.</p>
<h2 id="for-fun">For Fun</h2>
<p>I regularly revisit problems from old jobs, interesting ideas from the internet,
and whatever else catches my fancy as a way to build up skills with specific
technologies. Right now, I'm tinkering with <a href="http://angularjs.org">AngularJS</a>
and <a href="https://jersey.java.net">Jersey 2</a> as a way of building lightweight,
highly-responsive web front ends. Ask me about it and I'll be more than happy to
talk your ear off. I've also run similar projects to explore Node, Django,
Flask, Rails, and other platforms for web development, as well as numerous tools
and frameworks for other platforms.</p>
<p>I also mentor people new to programming, teaching them how to craft working
systems. This is less about teaching people to write code and more about
teaching them why we care about source control, how to think about
configuration, how to and why to automate testing, and how to think about
software systems and data flow at a higher level. I strongly believe that
software development needs a formal apprenticeship program, and mentoring has
done a lot to validate that belief.</p>
<h2 id="freshbooks-2009-2014">FreshBooks (2009-2014)</h2>
<p>During the five years I was with the company, it grew from a 20-person one-room
organization to a healthy, growing two-hundred-person technology company. As an
early employee, I had my hand in many, many projects and helped the development
team absorb the massive cultural changes that come with growth, while also
building a SaaS product that let others realize their dreams. Some highlights:</p>
<ul>
<li>
<p>As the lead <a href="http://grimoire.ca/mysql/choose-something-else">MySQL</a> database
administrator-slash-developer, I worked with the entire development team to
balance concerns about reliability and availability with ensuring new ideas
and incremental improvements could be executed without massive bureaucracy
and at low risk. This extended into diverse parts of the company: alongside
the operations team, I handled capacity planning, reliability, outage
planning, and performance monitoring, while with the development team, I
was responsible for designing processes and deploying tools to ease testing
of database changes and ensuring smooth, predictable, and <em>low-effort</em>
deployment to production and for training developers to make the best use of
MySQL for their projects.</p>
</li>
<li>
<p>As a tools developer, I built the <a href="https://pypi.python.org/pypi/sparkplug">Sparkplug</a>
framework to standardize the tools and processes for building message-driven
applications, allowing the team to move away from monolithic web applications
towards a more event-driven suite of interal systems. Providing a standard
framework paid off well; building and deploying completely novel event
handlers for FreshBooks’ core systems could be completed in as little as a
week, including testing and production provisioning.</p>
</li>
<li>
<p>As an ops-ish toolsmith, I worked extensively on configuration management
for both applications and the underlying servers. I lead a number of
projects to reduce the risk around deployments: creating a standard
development VM to ensure developers had an environment consistent with
reality, automating packaging and rollout to testing servers, automating the
<em>creation</em> of testing servers, and more. As part of this work, I built
training materials and ran sessions to teach other developers how to think
like a sysadmin, covering Linux, Puppet, virtualization, and other topics.</p>
</li>
</ul>
<h2 id="riptown-media-2006-2009">Riptown Media (2006-2009)</h2>
<p>Riptown Media was an software development company tasked with building and
maintaining a suite of gambling systems for a single client. I was brought on
board as a Java developer, and rapidly expanded my role to encompass other
fields.</p>
<ul>
<li>
<p>As the primary developer for poker-room back office and anti-fraud tools, I
worked with the customer support and business intelligence teams to better
understand their daily needs and frustrations, so that I could turn those
into meaningful improvements to their tools and processes. These
improvements, in turn, lead to measurable changes in the frequency and
length of customer support calls, in fraud rates, and in the percieved value
of internal customer intelligence.</p>
</li>
<li>
<p>As a lead developer, my team put together the server half of an in-house
casino gaming platform. We worked in tight collaboration with the client
team, in-house and third-party testers, and interaction designers, and
delivered our first game in under six months. Our platform was meant to
reduce our reliance on third-party “white label” games vendors; internally,
it was a success. Our game received zero customer-reported defects during
its initial run.</p>
</li>
</ul>
<h2 id="osi-geospatial-2004-2006">OSI Geospatial (2004-2006)</h2>
<p>At OSI Geospatial, I lead the development of a target-tracking and battlespace
awareness overlay as part of a suite of operational theatre tools. In 2004, the
state of the art for web-based geomatics software was not up to the task; this
ended up being a custom server written in C++ and making heavy use of PostgreSQL
and PostGIS for its inner workings.</p>
<h2 id="contact-me">Contact Me</h2>
<p>Sound good? Curious? Want to discuss any of this some more? You can get ahold of
me at owen.jacobson@grimoire.ca or on <a href="https://twitter.com/derspiny">Twitter</a>.</p>
</div>
<div id="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'grimoire'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<div id="footer">
<p>
The Codex —
Powered by <a href="http://markdoc.org/">Markdoc</a>.
<a href="https://bitbucket.org/ojacobson/grimoire.ca/src/master/wiki/hire-me.md">See this page on Bitbucket</a> (<a href="https://bitbucket.org/ojacobson/grimoire.ca/history-node/master/wiki/hire-me.md">history</a>).
</p>
</div>
</div>
</body>
</html>
|