-
Notifications
You must be signed in to change notification settings - Fork 0
/
cv.json
447 lines (447 loc) · 19.8 KB
/
cv.json
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
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
{
"selectedTemplate": 7,
"headings": {
"work": "Experience",
"volunteering": "Volunteering",
"projects": "Projects",
"education": "Education",
"skills": "Skills",
"awards": "Awards",
"papers": "Papers"
},
"basics": {
"email": "[email protected]",
"phone": "+30 6945482042",
"website": "hytromo.github.io",
"location": {
"address": "Patras, Greece"
},
"name": "Alexandros Solanos"
},
"work": [
{
"company": "Omilia",
"location": "Patras, Greece (Remote)",
"position": "Senior Devops Engineer",
"website": "https://omilia.com",
"highlights": [
"Multi-cloud and multi-account network redesign and implementation using Transit Gateways and transitive routing, automated fully through IaC using best practices that vastly simplified the life of every employee, saving precious engineering time.",
"Reimplementation of existing Terraform modules for AWS and creation of new ones, making setup and configuration of new environments a breeze, giving to the company the ability to make Agile decisions based on the needed infrastructure.",
"Full implementation of PCI-DSS requirements at infrastructure level (encryption at rest / in transit, logging, alarms, policies etc) using IaC using all the required AWS services, ensuring successful audit results.",
"Completely dynamic CI implementation for fast and iterative Terraform module development, making writing new modules and testing new technologies a fast and worry-free experience.",
"Implement CI/CD processes using Gitlab CE and EE, including static code analysis, testing, image building and deployment using Ansible, empowering the developers to take full ownership of their projects.",
"Automate the deployment and configuration / user management of the company's Bastion using idempotent Ansible, a key component to the security of our production systems.",
"Create, administer and maintain various CentOS environments in AWS and Azure using Terraform, Jenkins and Docker Swarm.",
"Implement and take ownership of serverless functions in AWS and Azure related to cost savings and production workloads in Python and Node.js.",
"Build and maintain an HIDS using Wazuh, automating the Wazuh agent installation and configuration, including POC on Kubernetes deployment."
],
"startDate": "Sep 2020",
"endDate": "Present"
},
{
"company": "TourPanda",
"location": "Patras, Greece (Remote)",
"position": "Software and Devops Engineer",
"website": "https://tourpanda.com",
"highlights": [
"Lead the developer team, managing people and developing software using test-driven development (TDD).",
"Design and build a complex, horizontally scalable RESTful API using Node.js.",
"Implement the main custom application-level algorithms for the resource availability, agnostic of resource type and resource characteristics.",
"Build a RESTful API using Nest.js for analytics purposes and the booking assistant, the application which end-users book from as well as the largest part of the dashboard, using React.js.",
"Transition the deployment to Kubernetes, with a staging and a production environment, IaC in GCP and a complex CI/CD pipeline within 2 months, cutting operational costs by over 40 percent and facilitating a faster, fully-automatic and less error prone release cycle, freeing valuable developer time.",
"Full-stack implementation of multiple live-update systems based on WebSockets.",
"Facilitate our Agile methodology as a Scrum Master, obtaining a deep understanding on the Agile culture and why there are certain practices around it.",
"Unit, integration and e2e testing (using cypress), working with Node.js, Redis, MongoDB and PostgreSQL in the backend.",
"Frontend development using React.js, Next.js and jQuery in the frontend."
],
"startDate": "Sep 2016",
"endDate": "Sep 2020"
},
{
"highlights": [
"Modernized the processes of the company: from doing manual data entry and manual comparison using different and inconsistent excel files, the users could now do data entry in a friendly and dynamic web interface which I built. The app was fed all the excel files and could do powerful comparisons of the aggregations of the data between different years, and of course allowed entry of new data. The application freed several man-hours per day and as of September 2021 the application is still being used daily. The frontend was built in jQuery and the backend used CakePHP and MySQL.",
"Generic IT support on Windows-based users."
],
"website": "https://ferrycenter.gr/",
"company": "Blue Star Ferries Agency",
"position": "Process streamlining / IT support",
"location": "Patras, Greece",
"startDate": "Sep 2014",
"endDate": "Sep 2016"
}
],
"education": [
{
"location": "Patras, Greece",
"studyType": "Master's",
"startDate": "Sep 2012",
"endDate": "Jun 2020",
"institution": "University of Patras",
"area": "Electrical and Computer Engineering",
"gpa": "7.27, Thesis: Design and implementation of a prototype IoT system based on containers and the Lightweight M2M protocol"
}
],
"volunteering": [
{
"company": "Ubuntu",
"position": "Official Ubuntu Member",
"website": "https://ubuntuforums.org/showthread.php?t=1984130",
"startDate": "May 2012",
"endDate": "Present",
"location": "Online",
"highlights": [
"Helping users at the Ubuntu Forums",
"Helping users at Ask Ubuntu",
"Reporting posts at the Ubuntu Forums for their better functionality",
"Bug Reporting at Launchpad and Gnome Bugzilla - testing beta applications",
"Providing Assistance on IRC Chatrooms",
"Proposing Ideas at Ubuntu Brainstorm",
"Developing scripts and helpful programs for the Ubuntu Community",
"Contributing at community wiki (https://bit.ly/3f0zGRI)",
"Various open source contributions, like in terser (official webpack minifier) and CakePHP"
]
},
{
"company": "TsikiBoom Camping",
"website": "https://tsikiboom.com",
"endDate": "Jul 2010",
"highlights": [
"Team activities",
"Creative learning"
],
"position": "Assistant to the team leader",
"location": "Chania, Greece",
"startDate": "Jun 2010"
}
],
"skills": [
{
"keywords": [
"AWS",
"Azure",
"GCP",
"Digital Ocean"
],
"name": "Cloud experience"
},
{
"level": "",
"keywordInfo": {
"Typescript": {
"level": 90,
"moreInfo": "I have worked in large-scale projects for years in Typescript and Javascript. I've worked both in the backend and in the frontend using various frameworks and I also have knowledge about bundlers, like webpack and rollup."
},
"Python 2/3": {
"level": 60,
"moreInfo": "I have worked a lot of times using python but mostly in order to automate things or build small libraries. I haven't worked in large-scale projects using python. My latest noteworthy experience with it was to automate the deployment of a minikube kubernetes cluster in a development environment and streamlining the development inside it."
},
"Bash": {
"level": 70,
"moreInfo": "While bash was my first programming language, I try to avoid it in most cases, because complex logic and loops can become awkward fast. My latest experience with bash was using it in order to orchestrate complex CI/CD processes."
},
"PHP": {
"level": 70,
"moreInfo": "PHP was the first language of the web I learned and I've worked with it with various frameworks (Laravel, CakePHP) as well as vanilla, to better understand its internal workings."
},
"C / C++": {
"level": 60,
"moreInfo": "C was my second programming language and I learned algorithms and data structures with it. My latest noteworthy experience with it was programming along with a friend a Bosch XDK for an IoT contest organized by Bosch (and we got first place!). C++ can be very complex and thus I can't claim I know it well, but I've built Wallch with it, along with a friend. Wallch made it into the Ubuntu repositories back in 2010, when we were 16. While Wallch was a simple wallpaper changer program, it was developed further as a learning experience: It used multithreading to not block the UI thread while loading images, a caching mechanism to quickly load thumbnails, it could combine pictures (clock-wallpapers) and it accessed the internet to download a \"live\" earth image (built by a third party) and set a live website as desktop background. It also integrated with the (now dead) Ubuntu Unity desktop by utilizing Gtk libraries."
},
"Java": {
"level": 60,
"moreInfo": "Using Java, I have built NotiSIM for Android, an app that sends an SMS message to a configured phone number if it detects a change in SIM. I also have experience with Java in university, covering OOP and advanced programming techniques like multi-threading, semaphores etc."
},
"Golang": {
"level": 60,
"moreInfo": "I'm very interested in Golang with a big side-project on the works that integrates with container registries and Kubernetes using goroutines."
}
},
"keywords": [
"Typescript",
"Python 2/3",
"Bash",
"PHP",
"C / C++",
"Java",
"Golang"
],
"name": "Programming Languages"
},
{
"keywords": [
"Express.js",
"Next.js",
"React.js",
"Nest.js",
"CakePHP",
"Qt (C++ and Python)",
"Gtk 2.0",
"Various ORMs"
],
"name": "Libs / Frameworks"
},
{
"keywordInfo": {
"Kubernetes": {
"level": 70,
"moreInfo": "I started learning kubernetes out of a necessity to automate the integration and deployment processes in TourPanda. I have used both Google Kubernetes Engine in production and Minikube as a development environment and I've built complex deployment environments inside the cluster, with autoscaling, monitoring, databases and more. These days I'm using Kubernetes daily mostly on side projects."
},
"Helm": {
"level": 70,
"moreInfo": "I've used helm for the templating of kubernetes manifests in production. While I've worked with it a lot, I wouldn't consider myself an expert in authoring helm charts."
},
"Helmfile": {
"level": 80,
"moreInfo": "I've used helmfile extensively, along with lots of its features, like selectors, environments and subhelmfiles in order to organize, define dependencies and streamline the deployment of helm charts. Helmfile has been used as part of a CI/CD pipeline."
},
"Ansible": {
"level": 80,
"moreInfo": "I've worked with idempotent Ansible extensively for the configuration of VMs like a Bastion host and the implementation of CD for Docker Swarm."
},
"Terraform": {
"level": 100,
"moreInfo": "I have used Terraform as IaC in AWS, Digital Ocean, Azure and Google Cloud Platform in a daily basis. I have created terraform modules for multi-account AWS usage, including a dynamic CI process for them, working in different deployment environments, saving and referencing remote state. I have also used terraform in CI/CD in order to do infrastructure changes similarly to how we do code changes, creating a unified pipeline."
}
},
"keywords": [
"Kubernetes",
"Helm",
"Helmfile",
"Ansible",
"Terraform"
],
"name": "Devops tools"
},
{
"keywords": [
"Lead of developer team",
"Scrum Master",
"Interviewing for technical positions",
"Public speaking",
"Knowledge sharing"
],
"name": "People"
},
{
"keywordInfo": {
"Greek (native)": {
"level": 100
},
"English (C2)": {
"level": 90,
"moreInfo": "I have obtained the certificate of proficiency in English from the University of Michigan. I am fluent in English and I've been working in an all-english speaking team for 4 years full-time and I continue speaking and writing English daily."
}
},
"keywords": [
"Greek (native)",
"English (C2)"
],
"name": "Languages"
},
{
"keywords": [
"VSCode",
"Vim",
"QtCreator",
"Eclipse",
"Sublime Text"
],
"name": "Editors"
}
],
"projects": [
{
"name": "Wallch",
"roleDescription": "I built the support for different desktop environments, the main UI, the caching mechanism, the live website feature, the live earth image feature, multi-threading for not blocking the UI thread, the CLI interface that allowed for advanced scripting, the Unity desktop integration and more.",
"keywords": [
"C++ / Qt"
],
"description": "A first C++ GUI experiment that made its way into the official Ubuntu repositories (2010); a wallpaper changer. A big learning project for a lot of things around building software. Built along with a classmate.",
"url": "https://launchpad.net/wallpaper-changer",
"pictures": [
{
"isAnimated": false,
"alt": "The main Wallch window",
"description": "The main Wallch window, following the then-style of Ubuntu Software Center"
},
{
"isAnimated": false,
"alt": "The wallpaper clocks feature",
"description": "The wallpaper clocks feature, on the left you can see the Unity integration"
},
{
"isAnimated": false,
"alt": "The live website feature",
"description": "The live website feature, allowing you to set a non-interactive website as desktop background, giving the ability to crop a part of it as well as provide login details for password protected websites"
},
{
"isAnimated": false,
"alt": "The preferences dialog",
"description": "The preferences dialog, with a wide range of options"
}
]
},
{
"keywords": [
"PHP / CakePHP",
"MySQL"
],
"name": "MalvaGallery",
"roleDescription": "I am the sole author of this project. I built the whole website, which includes \"infinite scrolling\" on the paintings, a RESTful API for users and paintings management and using an ImageMagick-based script to automatically add the trademark logo on the uploaded images.",
"description": "A simple website built with CakePHP for my artist uncle. A learning project for web development which also features users and paintings management.",
"url": "https://malvagallery.com/",
"pictures": [
{
"isAnimated": false,
"alt": "The main view of the website",
"description": "The view of the website the visitor is greeted with, after reading the introductory text."
},
{
"isAnimated": false,
"alt": "Browsing the paintings",
"description": "Browsing the paintings, featuring infinite scrolling."
},
{
"isAnimated": false,
"alt": "Seeing details of a painting",
"description": "Seeing details of a painting by clicking on it."
},
{
"isAnimated": false,
"alt": "The \"Edit Painting\" view of the management dashboard",
"description": "The \"Edit Painting\" view of the website management dashboard"
}
]
},
{
"keywords": [
"PHP / CakePHP",
"MySQL"
],
"name": "University Department E-class",
"roleDescription": "I built about half of each section of the project (MVC architecture)",
"url": "https://github.com/themetalfleece/university-department-eclass-project",
"description": "An open e-class clone (https://www.openeclass.org/en/); a university project. Co-created along with another university student.",
"pictures": [
{
"isAnimated": false,
"alt": "Viewing the usage of a classroom",
"description": "Viewing the usage of a classroom"
},
{
"isAnimated": false,
"alt": "Enrolled courses view of a student",
"description": "Enrolled courses view of a student"
},
{
"isAnimated": false,
"alt": "Course management (secretary view)",
"description": "Course management (secretary view)"
},
{
"isAnimated": false,
"alt": "Enrolled courses schedule (student view)",
"description": "Enrolled courses schedule (student view)"
}
]
},
{
"keywords": [
"Java",
"Android"
],
"name": "NotiSIM",
"roleDescription": "I built this project as an alternative way to protect your phone",
"description": "NotiSIM will send an SMS message to a number of your preference when it detects that your SIM card has changed. That way you can easily get the phone number of the newly inserted SIM card, in case your phone is stolen. The application supports white-listing any number of SIM cards, so 2 or more people can use the same phone with different SIM cards. Note that the application runs only on boot for detecting SIM changes and thus it does not run constantly, draining your battery.",
"pictures": [
{
"isAnimated": false,
"alt": "The setup screen where you can input the number to send the message to and the message itself",
"description": "The setup screen where you can input the number to send the message to and the message itself"
},
{
"isAnimated": false,
"alt": "The screen that allows you to change the whitelisted SIMs",
"description": "The screen that allows you to change the whitelisted SIMs"
}
]
},
{
"keywords": [
"Python 2 / Qt"
],
"name": "MacroPolo",
"description": "A python module that can be used in order to automate high-level processes (macros)",
"roleDescription": "I built this project to automate some high level tasks that did not provide an API.",
"url": "https://github.com/hytromo/MacroPolo",
"pictures": [
{
"alt": "A basic text macro giving terminal commands",
"description": "A basic text macro giving terminal commands",
"isAnimated": true
},
{
"alt": "A more advanced example, finding a tool in Gimp by its color and drawing a circle with it",
"description": "A more advanced example, finding a tool in Gimp by its color and drawing a circle with it",
"isAnimated": true
}
]
},
{
"keywords": [
"C++ / Qt"
],
"name": "Anem",
"roleDescription": "I built both the graph generator and the mostly-static website for this project.",
"description": "A graph generator that combined the powers of C++, ImageMagick and rrdtool to generate graphs regarding the power output, wind direction and wind speed of wind turbines. This side-project is dating back to 2013 and it wasn't intended for production use but it ended up being used for years by Petrogaz (https://www.petrogaz.gr/en/). Sadly the project got discontinued.",
"url": "https://github.com/hytromo/anem",
"pictures": [
{
"alt": "The main website view, with the first 2 images that are being generated by the data receiver, wind speed and wind direction",
"description": "The main website view, with the first 2 images that are being generated by the data receiver, wind speed and wind direction",
"isAnimated": false
},
{
"alt": "More graphs that are being generated by the data receiver and shown in the mostly static website",
"description": "More graphs that are being generated by the data receiver and shown in the mostly static website",
"isAnimated": false
}
]
},
{
"keywords": [
"Python 3"
],
"name": "python-digitalocean-ssh",
"description": "A CLI-only python project aimed to make DO VMs easily accessible via ssh at any time.",
"url": "https://github.com/hytromo/python-digitalocean-ssh"
}
],
"papers": [
{
"name": "Cyber-Physical Microservices: An IoT-based Framework for Manufacturing Systems",
"description": "Conference: 1st IEEE International Conference on Industrial Cyber-Physical Systems (ICPS 2018), Saint Petersburg, Russia, May 15-18, 2018.",
"url": "https://bit.ly/2BXPLsz",
"keywords": []
}
],
"awards": [
{
"title": "Bosch XDK Ideation Jam Winner",
"date": " Aug 2016",
"awarder": "Bosch",
"summary": "Our team's project was deemed to be the best on using Bosch's XDK in an internet of things application: https://bit.ly/2YZZ3xr"
}
],
"sections": [
"templates",
"profile",
"work",
"education",
"skills",
"projects",
"awards",
"volunteering",
"papers"
]
}