-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathresume.html
339 lines (339 loc) · 15.1 KB
/
resume.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
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Juan Ibiapina's Resume</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1 id="juan-ibiapina">Juan Ibiapina</h1>
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">juanibiapina@gmail.com</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Berlin, Germany</td>
</tr>
<tr class="even">
<td style="text-align: left;"><a
href="https://github.com/juanibiapina"><img src="assets/github.svg" width="20px" height="20px" style="opacity: 75%" class="icon"></a>
<a
href="https://www.linkedin.com/in/juan-i-10025313/"><img src="assets/linkedin.svg" width="20px" height="20px" style="opacity: 75%" class="icon"></a>
<a
href="https://soundcloud.com/juan-ibiapina"><img src="assets/soundcloud.svg" width="20px" height="20px" style="opacity: 75%" class="icon"></a></td>
</tr>
</tbody>
</table>
<hr />
<h2 id="about-me">About me</h2>
<p>I have a <strong>Computer Science</strong> background and <strong>14
years of experience</strong> developing software professionally. I have
worked in many different layers of software development, including
<strong>backend</strong>, <strong>frontend</strong>, mobile and
infrastructure, with focus on backend. I advocate <strong>code
quality</strong> and <strong>continuous delivery</strong>.
<strong>Tests</strong> are part of my development practices, along with
<strong>TDD</strong> and refactoring. I’m confident working with
<strong>agile</strong> practices that enable <strong>fast
delivery</strong> in small increments. I also have experience designing
distributed services, microservices and <strong>REST APIs</strong>. I’m
a big fan of <strong>tooling</strong> and
<strong>observability</strong>.</p>
<p>I like environments that support <strong>growth</strong>, working
along with <strong>smart</strong>, <strong>respectful</strong> and
<strong>open-minded</strong> people who care about their systems, tools
and code.</p>
<p>I love to <strong>code</strong>! I’m a <strong>NixOS</strong>,
<strong>terminal</strong> and <strong>neovim</strong> user. I often
learn new programming languages, frameworks and technologies. I have
worked professionally with Java, Javascript,
<strong>Typescript</strong>, <strong>Ruby</strong> and
<strong>Go</strong>, but have also experimented with SML, Python,
Haskell, Scala, Rust, Racket, Bash, Clojure, IO, and many others. I
designed <a href="https://github.com/juanibiapina/marco">my own toy
language</a>, a <a href="https://github.com/basherpm/basher">package
manager for Bash</a> and an <a
href="https://github.com/juanibiapina/sub">organizer for command line
scripts</a> that I use as part of my <a
href="https://github.com/juanibiapina/dotfiles">12 years old
dotfiles</a>. I try to keep at least one active coding side project. You
can find more details about personal projects, passions and open source
on my <a href="https://github.com/juanibiapina/">Github Profile</a> and
my <a href="https://juanibiapina.github.io/">blog</a>.</p>
<p>I’m also a <strong>game</strong>, <strong>music</strong> and
<strong>climbing</strong> enthusiast.</p>
<h2 id="experience">Experience</h2>
<h3 id="principal-software-engineer-at-babbel">Principal Software
Engineer at Babbel</h3>
<p><small>August 2017 - present</small></p>
<p>As a Principal at Babbel, I work in the Content Platform team,
developing the learning content CMS and related content distribution
<strong>APIs</strong>. We design <strong>cross-team
architecture</strong>, striving for <strong>small deliverables</strong>
that bring value to users and allow teams to achieve their
<strong>goals</strong> and work <strong>independently</strong>. This is
mostly <strong>remote work</strong>, but we like to meet once per
week.</p>
<p>Accomplishments:</p>
<ul>
<li><strong>Content Pipeline</strong>: Designed an integration between
Babbel’s <strong>CMS</strong> and <strong>Contentful</strong>, enabling
fast creation of content for new learning experiences. This system now
holds content for more than 20 learning experiences, fulfilling the
company goal of experimenting with new forms of learning. Teams can
<strong>autonomously</strong> create new types through Pull Requests.
All content is <strong>Git</strong> versioned and
<strong>immutable</strong>.</li>
<li><strong>Content Deployment</strong>: Led a multi-year project to
enable content editors to deploy content. Through a series of
<strong>modeling</strong> changes, API improvements,
<strong>monitoring</strong>, data migrations, <strong>test</strong>
improvements, education and even a Slack bot, Babbel went from one
painful content deployment per quarter to several uneventful content
deployments per week.</li>
<li><strong>Content Modeling</strong>: Designed an extensible new data
model for current and future Babbel content, inspired by
<strong>NixOS</strong> and served through a <strong>GraphQL</strong>
API. The new model is backwards compatible but also enables new use
cases involving personalization and AI integration.</li>
<li><strong>Content APIs</strong>: Designed <strong>RESTful</strong>
content APIs for current and future company initiatives, focusing on
<strong>performance</strong> and <strong>cacheability</strong>.</li>
<li><strong>Workshops</strong>: Organized internal
<strong>presentations</strong> and <strong>workshops</strong> about
Babbel’s content domain and architecture, <strong>empowering</strong>
other teams and content creators.</li>
<li><strong>API Gateway tooling</strong>: Improved build times
(<strong>from 15m to 5m</strong>) and tooling for Babbel’s main API
Gateway, shared between teams. Engineers can simply run
<code>make</code> and all checks run locally using
<strong>Docker</strong> with zero setup required. The same setup runs on
<strong>CI</strong>.</li>
<li><strong>Engineer-friendly Documentation</strong>: Started a
documentation initiative to create engineer-friendly documentation in
repositories. Many teams have adopted this practice and maintain Git
versioned documentation.</li>
<li><strong>User vocabulary migration</strong>: Migrated all user
vocabulary from <strong>MySql</strong> to <strong>DynamoDB</strong>. It
went from 7 unmaintainable, untested joins, to a performant and scalable
single table design.</li>
<li><strong>Service extraction</strong>: Actively drove or participated
in many service extractions from the <strong>Rails</strong> monolith,
including user vocabulary, content, authorization, b2b, accounts and
user progress <strong>services</strong>.</li>
<li><strong>API Tests</strong>: Wrote a suite of <strong>API
Integration</strong> tests (mostly for myself, at the beginning). It has
grown and is now a valuable tool used by many teams to find
regressions.</li>
<li><strong>Mentoring</strong>: Mentored <strong>junior</strong>,
<strong>professional</strong> and <strong>senior</strong> engineers,
directly supporting their <strong>growth</strong> to higher roles,
including several promotions to <strong>Principal</strong>.</li>
<li><strong>Advice and support</strong>: Teams contact me on a weekly
basis to discuss system design. Babbel already includes
<strong>observability</strong> and <strong>automated
infrastructure</strong> by default, so I often advise about sound
<strong>domain entities</strong> with clear nomenclature, well defined
<strong>system boundaries</strong> and responsibilities, <strong>small
deliverables</strong>, and then small deliverables a few more times
because the <strong>project only starts once it’s in
production</strong>.</li>
<li><strong>Principal Role</strong>: I was the first engineer to be
promoted to Principal. I helped define the role and its responsibilities
drawing from my own experience temporarily moving between teams.</li>
</ul>
<p>Technologies:</p>
<ul>
<li>Ruby, Typescript, Go</li>
<li>Rails, React</li>
<li>Terraform</li>
<li>AWS Lambda, DynamoDB, Cloudwatch and many other services</li>
<li>Datadog, Rollbar</li>
</ul>
<h3 id="senior-full-stack-software-engineer-at-movinga">Senior
Full-Stack Software Engineer at Movinga</h3>
<p><small>Feb 2017 - August 2017</small></p>
<p>I joined a team of full-stack engineers at Movinga and immediately
started working on a microservice and its three client applications. I
was also responsible for starting a couple of frontend applications from
scratch. Later we extracted a pricing microservice from the main legacy
code in order to improve deployment times, frequency (from once every
two weeks to 10 times a day) and provide better insights about our
prices.</p>
<p>Technologies:</p>
<ul>
<li>Ruby, Javascript</li>
<li>Grape, React, Redux and other supporting libraries for both frontend
and backend</li>
<li>AWS, Docker</li>
</ul>
<h3 id="senior-software-engineer-at-globo.com">Senior Software Engineer
at Globo.com</h3>
<p><small>May 2015 - Jan 2017</small></p>
<p>I joined Globo.com to work on the web media platform team. Globo is
the biggest television channel in Brazil. As part of its technology
team, we were responsible for ingesting raw television content videos
and encoding them for online streaming. We worked on a system that
provided both an UI and an API for uploading videos and metadata. This
system was distributed in more than 50 locations across Brazil,
gathering and processing videos from all partners. We processed more
than 2.5TB of videos on a weekly basis, accounting for more than a
thousand hours of content.</p>
<p>Accomplishments:</p>
<ul>
<li>Designed a content protection microservice that integrates with 3
third party APIs</li>
<li>Participated on hiring interviews for most people hired in the Porto
Alegre office</li>
<li>Started an observability initiative to gather video encoding metrics
and better understand our system</li>
<li>Helped shape the office culture</li>
<li>Mentored less experienced engineers</li>
</ul>
<p>Technologies:</p>
<ul>
<li>Ruby, Javascript and Coffeescript</li>
<li>Rails and Backbone</li>
<li>Ffmpeg and x264</li>
<li>Mongo and Redis</li>
</ul>
<h3 id="senior-software-engineer-at-bearch-inc.">Senior Software
Engineer at Bearch, Inc.</h3>
<p><small>November 2014 - April 2015 <em>(6 months)</em></small></p>
<p>We developed an anonymous social network. The whole team worked with
all parts of the development, so I had the opportunity to work with a Go
backend hosted on Google App Engine, an Android and an iOS application.
All of these technologies were new to me.</p>
<p>Accomplishments:</p>
<ul>
<li>Shipped a huge amount of features in very little time due to our
experimental nature</li>
<li>Created a pipeline for building and deploying android and iOS apps
to their respective stores, improving the testing and release
cycles</li>
<li>Created a camera for Android that worked on the new screen sizes
being released at the time.</li>
<li>Worked daily with unknown technologies and new challenges</li>
</ul>
<p>Technologies:</p>
<ul>
<li>Go on Google App Engine</li>
<li>Javascript with Angular</li>
<li>Android with Java</li>
<li>iOS with Objective C</li>
</ul>
<h3 id="software-engineer-at-e-core">Software Engineer at e-Core</h3>
<p><small>March 2013 - November 2014 <em>(1 year 9
months)</em></small></p>
<p>We developed a single page application for a remote client in New
York. I was hired not only because I knew some of the technologies
involved but also because I was willing to learn the ones I didn’t know.
This was a project that could change very fast.</p>
<p>Accomplishments:</p>
<ul>
<li>Automated the deployment process and reduced the total time from 2
hours down to 160 seconds.</li>
<li>Helped migrate a legacy application from Grails to Rails</li>
<li>Experimented with virtual machines, docker and several deployment
strategies</li>
</ul>
<p>Technologies:</p>
<ul>
<li>Ruby, Javascript, Coffeescript</li>
<li>Rails, Knockout.js</li>
<li>Groovy with Grails</li>
<li>Puppet, Chef</li>
<li>Mongo, Postgres, Redis, Solr</li>
<li>VirtualBox, Docker</li>
<li>Nginx</li>
</ul>
<h3 id="software-engineer-at-codeminer42">Software Engineer at
Codeminer42</h3>
<p><small>July 2012 - February 2013 <em>(8 months)</em></small></p>
<p>We developed systems for startups. It was my first experience with
Rails, but also included frontend development. Since each engineer was
responsible for managing a whole project, our responsibilities involved
coding, creating interfaces, thinking about user experience, negotiating
with clients, managing infrastructure and deployment, etc.</p>
<p>I was one of the first people to be hired on our branch of the
company, so I had the opportunity to help build the culture we wanted. I
learned a lot from the experience and it helped shape some of my future
career goals.</p>
<p>Accomplishments:</p>
<ul>
<li>Migrated an application from rails 2 to rails 4</li>
<li>Helped shape the office culture</li>
<li>Developed a project from conception to delivery</li>
</ul>
<p>Technologies:</p>
<ul>
<li>Ruby, Javascript</li>
<li>Postgres</li>
</ul>
<h3 id="development-consultant-at-thoughtworks">Development Consultant
at ThoughtWorks</h3>
<p><small>January 2011 - June 2012 <em>(1 year 6
months)</em></small></p>
<p>Consisted mainly of consulting and web development for the retail
industry, with daily client facing situations. I worked mostly on
maintaining and developing new features for a large legacy Java code
base. Teams were distributed across Brazil, India and the US.</p>
<p>This was my first contact with agile practices. I have learned much
from it, including the importance of pair programming, TDD and
Continuous Integration. I had a mentor that helped me build most of my
ideas about development.</p>
<p>Accomplishments:</p>
<ul>
<li>Started an initiative to improve development and feedback
cycles</li>
<li>Introduced Javascript unit tests into the project</li>
<li>Started a culture of looking into build status</li>
<li>Extended the development tools, greatly improving development speed
and team motivation</li>
<li>Acquired the trust of some of the clients, making our work much
easier</li>
<li>Participated on ThoughtWorks University, which changed my life</li>
<li>Started learning about interviewing candidates</li>
</ul>
<p>Technologies:</p>
<ul>
<li>Java and Spring</li>
<li>Javascript</li>
<li>Ruby for integration tests</li>
</ul>
<h2 id="education">Education</h2>
<h3 id="universidade-federal-do-piauí-ufpi">Universidade Federal do
Piauí (UFPI)</h3>
<p>Bachelor of Science (BS), Computer Science, 2004 - 2007</p>
<h2 id="languages">Languages</h2>
<ul>
<li>Portuguese (Native)</li>
<li>English (Fluent)</li>
</ul>
</body>
</html>