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
|
# Hire Me
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.
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.
You can see more about me as a person on
[HireMyFriend](https://hiremyfriend.io/profiles/90b8caa5) or
[LinkedIn](https://ca.linkedin.com/in/ojacobson/). You can also get a sense of
the code I write by looking at this blog, as well as my
[Bitbucket](https://bitbucket.org/ojacobson) or
[Github](https://github.com/ojacobson/) sites: I recommend starting with
[Refreshbooks](https://github.com/ojacobson/refreshbooks) or
[Sparkplug](https://github.com/ojacobson/sparkplug).
## For Fun
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 [AngularJS](http://angularjs.org)
and [Jersey 2](https://jersey.java.net) 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.
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.
## FreshBooks (2009-2014)
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:
* As the lead [MySQL](http://grimoire.ca/mysql/choose-something-else) 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 _low-effort_
deployment to production and for training developers to make the best use of
MySQL for their projects.
* As a tools developer, I built the [Sparkplug](https://pypi.python.org/pypi/sparkplug)
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.
* 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
_creation_ 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.
## Riptown Media (2006-2009)
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.
* 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.
* 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.
## OSI Geospatial (2004-2006)
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.
## Contact Me
Sound good? Curious? Want to discuss any of this some more? You can get ahold of
me at owen.jacobson@grimoire.ca or on [Twitter](https://twitter.com/derspiny).
|