-
Notifications
You must be signed in to change notification settings - Fork 0
/
ferhat-elmas-resume.tex
289 lines (241 loc) · 15.1 KB
/
ferhat-elmas-resume.tex
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
\documentclass[line, margin]{res}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[colorlinks=true, urlcolor=Violet]{hyperref}
\usepackage{times}
\usepackage{textcomp}
\begin{document}
\name{Ferhat Elmas \hspace{10cm} Passionate Developer}
\address{\hspace{0.1cm}\href{mailto:[email protected]}{[email protected]}}
\address{\hspace{0.3cm}\href{https://github.com/ferhatelmas}{github.com/ferhatelmas}}
\begin{resume}
\vspace{-0.4cm}
\section{EXPERIENCE}
{\sl \textbf{\href{https://cloudflare.com}{Cloudflare}}: Making web better \hfill Amsterdam, NL} \\
{\sl \textbf{Senior Systems Engineer} \hfill Feb 23 - Now} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -5pt
\item{Implement tiered-cache for \href{https://developers.cloudflare.com/kv/}{KV}. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Efficient topology design in terms of cost (i.e. keeping multiple copies), latency improvements (i.e. P95) and validating consistency requirements
\item Zero downtime rollout and rollback procedure with worker gradual deployments
\item Improved observability for better bandwidth tracking of the topology and batching at edge
\end{itemize}
\item{Onboard \href{https://developers.cloudflare.com/kv/}{KV} to gradual deployments. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Zero downtime while supporting multi-million RPS
\end{itemize}
\item{Implement strongly consistent global caching for \href{https://developers.cloudflare.com/r2/}{R2} metadata using Memcached/Consul with implementation in Go. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Consistency guarantees while keeping S3 compatibility
\item Hard requirements around sub-millisecond latency globally
\item Self-recovering on underlying infrastructure issues
\item Hot bucket handling and sharding
\end{itemize}
\item{Implement efficient account tags for R2 billing at edge for performance. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Propagation delay, cache eviction and consistency
\item Extensibility for other features
\end{itemize}
\item{Transition of R2 worker from Node to \href{https://github.com/cloudflare/workerd}{workerd} from prod env parity. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Internal customizations that aren't available in open version
\end{itemize}
\end{itemize}
{\sl \textbf{\href{https://getstream.io}{Stream Inc.}}: Chat and Feed API provider \hfill Amsterdam, NL} \\
{\sl \textbf{Principal Engineer} \hfill June 22 - Jan 23} \\
{\sl \textbf{Backend Tech Lead} \hfill Apr 21 - May 22} \\
{\sl \textbf{Senior Engineer} \hfill Nov 19 - Mar 21} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -5pt
\item{Moved data systems from a mix of Keevo (custom DB on top of RocksDB), PostgreSQL, DynamoDB and ElasticSearch to CockroachDB. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Amount of data
\item Zero down time
\item Parallel feature development and changing schemas
\end{itemize}
\item{Implemented campaigns within the chat to be able to send and to track millions of messages in an automated and customizable way. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item The speedy delivery of massive amount of messages and their tracking and analytics
\item Auto speed adjustments not to DDOS internal subsystems
\item Reliability and extracting enough information for users on errors
\end{itemize}
\item{Added open Graph URL enrichment support for shared links. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Rate limiting, geographical and cloud IP blocking, robots.txt honoring, Javascript rendering
\item Slow target servers
\item Provided customization to the users to how/what to pick from targets
\end{itemize}
\item{Implemented a custom CDN on top of S3 and CloudFront. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Support of various file formats and analytics
\item Optimizations: auto compression, resizing, thumbnailing
\item Privacy controls: refreshment, metadata removal, virus protection
\end{itemize}
\item{Implemented push notifications for chat. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Customization: events, features (translation, collapsing, etc.), multi bundle and tenancy, etc.
\item Various provider support and compatibility between different platforms
\item Performance and the removal of the historical supported max limit of members in a channel
\end{itemize}
\item{Implemented message and user search via ElasticSearch for chat. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item No down time migration from PostgreSQL
\item Reusing query parsing and code generation layer from PostgreSQL
\item Indexing of very frequently changing data such as last active time of users
\end{itemize}
\item{Added aggregated feed ranking with user provided rules. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Pressure on the latency due to the amount of data, at least 15x increase
\item Incremental computation and caching the results
\item Working with a custom database which lacks necessary query capabilities
\end{itemize}
\item{Added realtime updates for each operation within feed product. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Scalability due to the nature of the load and slow consumers of the customers
\item Analytics and retry capabilities
\end{itemize}
\item{Added batching to external analytics and internal billing tracking APIs. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Handling money
\item Throttling and implementation of a cost effective automated queueing system
\item TTL of data
\end{itemize}
\item{Added automatic sharding Keevo (custom DB on top of RocksDB) in feeds. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item No down time migration
\item Good key selection, handling hot shards and automatic provisioning
\item Handling raft overhead
\end{itemize}
\item{Moved statistics from PostgreSQL to Keevo, the source of truth. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Backward compatibility for the same querying interface without overhead
\item Incremental and scratch counting according to the demand
\item Automatic alerting engine and also custom rule support
\end{itemize}
\end{itemize}
{\sl \textbf{\href{https://agflow.com}{AgFlow}} \hfill Geneva, CH} \\
{\sl \textbf{CTO} \hfill Dec 16 - Oct 19} \\
{\sl \textbf{Senior Developer} \hfill Feb 15 - Nov 16} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -5pt
\item{Leveraged machine learning to create automated data pipeline to collect data through different mediums. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item High variable and error-prone sources: natural text emails, HTML/Excel/PDF/OCR, etc.
\item Missing, ambiguous and sometimes intentionally wrong data
\item Syntetic data generation for the gaps and forward prediction
\item Useful human involvement and its support with enough meaningful feedback
\item Integration of other supportive data types to commodity prices such as transport pricing and queueing delay, quality information, taxes, crop amounts, country economical facts, etc.
\end{itemize}
\item{Implemented easy to use API to serve collected data. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Support for various transports such as JSON, RPC, Excel, FIX, SQL, etc.
\item Privacy of the data sources
\end{itemize}
\item{Introduced cloud-native infrastructure, data system and versioning. Some examples from the stack are K8s, Rancher, Rook, TimescaleDB, Pachyderm, Drone, Prometheus. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Changing architecture and infrastructure while adding new features fast and adapting a machine learning stack at the same time
\item Not enough battle tested experience in the community or in the team, and selection should support growth for the foreseeable future
\end{itemize}
\item{Modernized the web client via TypeScript from CoffeeScript and implemented the first version of mobile clients in Flutter. Integrated various 3rd party APIs to offload non-critical pieces such as Twilio for WhatsApp data source, TypeForm for structured input from contributors, Auth0 for auth and session sharing prevention, Stripe for subscriptions, Pusher for data sync in clients and push notifications. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Technologies were new and team didn't have enough experience
\end{itemize}
\item Scaled the development team from 2 to globally distributed 11 members.
\end{itemize}
{\sl \textbf{\href{http://www.unit9.com/}{Unit9, Innovative Studio}} \hfill London, UK} \\
{\sl \textbf{Backend and Infrastructure Developer} \hfill Aug 14 - Jan 15} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -5pt
\item{Full backend implementation of \href{https://www.unit9.com/project/san-pellegrino-are-you-a-real-foodie/}{San Pellegrino Real Foodie} competition website. Challenges:}
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Tight deadline, changing requirements, globally distributed team, totally new stack(PHP/Symfony and Angular) and no control over infrastructure
\end{itemize}
\item 3.5 TB tweet analysis to extract brand impressions in terms of location, age, keyword, etc.\ to show importance of Twitter for brands, which was \href{http://www.unit9.com/innovation/twitter-ces-experience}{Twitter 2015 CES experience}. Challenges:
\begin{itemize} \itemsep -5pt \small
\vspace{-.2cm}
\item Tight deadline and delayed/multiple times changed data from Twitter
\item User information wasn't there and required machine learning model to fill the gaps
\item Provided infrastructure wasn't enough to process/serve the amount of data which required a lot of byte shaving tricks
\end{itemize}
\end{itemize}
{\sl \textbf{\href{http://indico-software.org/}{Indico @ CERN}} \hfill Geneva, CH} \\
{\sl \textbf{Software Developer} \hfill Mar 13 - Aug 14} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -3pt
\vspace{-.2cm}
\item Integrated MVC and structured coding, and extracted microservices which easily enabled using multiple databases for better scalability and speed
\item Designed and implemented highly scalable and extensible polyglot storage system OODBMS (ZODB) + RDBMS (PostgreSQL) + NoSQL (Redis and MongoDB)
\item Brought Python 3 that results easier maintenance and faster application with fixed many bugs thanks to new Unicode handling
\item All in all, made the ground work for the next decade of CERN Event management application
\end{itemize}
{\sl \textbf{\href{https://launchpad.net/mvhub}{Community Software Lab}} \hfill Massachusetts, US} \\
{\sl \textbf{Software Developer} \hfill Jun 11 - Feb 12} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -3pt
\vspace{-.2cm}
\item Transition of social service search engines \textit{\href{http://mvhub.com/}{mvhub.com}} and \textit{\href{http://northshoreport.org/}{northshoreport.org}} to MVC architecture for easier development and maintenance
\item Custom ORM to provide backend agnostic storage system which enables plug and play between different DBMSs
\item Normalized DB schema for fixing various update bugs and improved performance
\end{itemize}
{\sl \textbf{\href{http://www.ce.boun.edu.tr/}{Bogazici University Civil Engineering Department}} \hfill Istanbul, TR} \\
{\sl \textbf{Software Developer} \hfill Mar 11 - Jun 11} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -3pt
\vspace{-.2cm}
\item Customizable incident detection and load generation plugins for Paramics, a full featured simulation tool used by the department
\item Implemented \textit{Traffic Simulator} to test the performance of the congestion/incident detection research algorithms that aren't easily simulated in their tools.
\end{itemize}
{\sl \textbf{\href{http://www.cmpe.boun.edu.tr/}{Bogazici University Computer Engineering Department}} \hfill Istanbul, TR} \\
{\sl \textbf{Teaching Assistant} \hfill Feb 11 - Jun 11} \\
\vspace{-.3cm}
\begin{itemize} \itemsep -3pt
\vspace{-.2cm}
\item \href{http://www.cmpe.boun.edu.tr/courses/?cmpe=230}{CMPE 230 - \textit{System Programming}}, teaches compilers, linkers, loaders, Unix and system calls, and uses assembly, make, C and Perl.
\item Helped students to prepare 3 projects and graded them, a minimal log parser for \textit{Apache Web Server}, a command line client for \textit{AWS} and a graphical user interface for \textit{wget}
\end{itemize}
{\sl \textbf{\href{https://www.commencis.com/}{Commencis (previously Monitise/Pozitron)}} \hfill Istanbul, TR} \\
{\sl \textbf{Software Developer} \hfill Jan 09 - Jun 11} \\
\vspace{-0.3cm}
\begin{itemize} \itemsep -3pt
\vspace{-.2cm}
\item \textit{SessionSwitch Service}, a monitoring tool that keeps track of what developers do on their machines. After putting it in place, it seemed everybody worked longer
\item \textit{\href{http://kapalidevre.com}{kapalidevre.com} digital signage system} that enables customers to prepare custom playlists and to play them on multiple machines at the same time indefinitely such as screens at shopping malls. Rejuvenated the desktop client and integrated multiple web services to provide long-time lacking features such as news, weather forecasts, radio, etc.
\item \textit{Download Manager}, a web application to serve versions of mobile applications at pre-smart-phone era according to phone specification. A much simpler version of Google Play.
\item Implemented custom simple Nagios, \textit{Server health watcher aka Big Brother}, for analytics and emergency recovery
\item Implementation of a manager for logs and notifications for mobile banking at \href{http://www.isbank.com.tr/English/}{Turkish IsBank}
\item Domain specific editor for a custom XML-based language, that is used to define the hierarchy of the code written by the company
\end{itemize}
\section{EDUCATION}
{\sl Master of Science,} Computer Science, with \href{http://ic.epfl.ch/specializations#content}{Internet Computing Specialization} \hfill{2014} \\
\href{http://ic.epfl.ch}{School of Computer and Communication Sciences} \\
\href{http://epfl.ch}{Swiss Federal Institute of Technology in Lausanne(EPFL)}, Switzerland \\
Thesis: \textit{\href{http://indico-software.org/}{"New Storage System for Indico, Event Management at CERN"}} \\
Semester Project: \textit{\href{http://research.nokia.com/page/12000}{"Nokia Mobile Data Challenge - Demographic Attributes"}} \\
Extra Project: \textit{\href{https://github.com/epfldata/squall}{"Squall, Online Query Processing Engine on top of Twitter Storm"}}
{\sl Bachelor of Engineering,} \href{http://www.cmpe.boun.edu.tr/}{Computer Engineering} \hfill{2011} \\
Faculty of Engineering \\
\href{http://boun.edu.tr/en-US/Content/Default.aspx}{Bogazici University}, Istanbul, Turkey \\
Thesis: \textit{\href{https://github.com/ferhatelmas/deviantART-analysis}{"Social Analysis on DeviantART"}}
\end{resume}
\end{document}