-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
517 lines (467 loc) · 23 KB
/
index.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
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
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<link href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900" rel="stylesheet" />
<title>Gianluca Moro</title>
<link rel="icon" type="image/x-icon" href="assets/images/favicon.ico">
<!-- Bootstrap core CSS -->
<link href="bootstrap/bootstrap-5.3.1-dist/css/bootstrap.min.css" rel="stylesheet" />
<!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">-->
<link href="bootstrap/icons/font/bootstrap-icons.css" rel="stylesheet" />
<!-- DevIcons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/[email protected]/devicon.min.css">
<!-- Additional CSS Files -->
<link rel="stylesheet" href="assets/css/fontawesome.css" />
<link rel="stylesheet" href="assets/css/global.css" />
<link rel="stylesheet" href="assets/css/owl.css" />
<link rel="stylesheet" href="assets/css/lightbox.css" />
<link rel="stylesheet" href="assets/css/projects.css" />
<link rel="stylesheet" href="assets/css/skills.css" />
</head>
<body>
<div id="page-wraper">
<!-- Sidebar Menu -->
<div class="responsive-nav">
<i class="fa fa-bars" id="menu-toggle"></i>
<div id="menu" class="menu">
<i class="fa fa-times" id="menu-close"></i>
<div class="container">
<div class="image">
<img src="assets/images/author-image.png" />
</div>
<div class="author-content">
<h4>Gianluca Moro</h4>
<p style="margin-top: 1rem; padding: 0 2rem">
Software Developer,<br>MSc ETH Zurich in Computer Science
</p>
</div>
<nav class="main-nav" role="navigation">
<ul class="main-menu">
<li><a href="#sec-aboutme">About Me</a></li>
<li><a href="#sec-skills">Skills</a></li>
<li><a href="#sec-work_exp">Work Experience</a></li>
<li><a href="#sec-education">Education</a></li>
<li><a href="#sec-projects">Projects</a></li>
</ul>
</nav>
<div class="social-network">
<ul class="social-icons">
<li>
<a href="https://www.linkedin.com/in/gianluca-moro/" target="_blank"><i class="fa fa-linkedin"></i></a>
</li>
<li>
<a href="https://github.com/gianluca-moro" target="_blank"><i class="fa fa-github"></i></a>
</li>
</ul>
</div>
<div class="copyright-text">
<p>Copyright © 2023 - <span id="year">2024</span>, Gianluca Moro</p>
</div>
</div>
</div>
</div>
<!-- About me -->
<section class="section about-me" data-section="sec-aboutme">
<div class="container">
<div class="section-heading" style="padding-bottom: 0;">
<h2>About Me</h2>
<div class="line-dec"></div>
<p style="font-size: large; margin-bottom: 0;">
After obtaining my Master's degree in computer science at ETH Zurich with focus
on Data Management Systems, I have started working as a Full Stack Software Developer
at Raiffeisen Switzerland. I enjoy creating software applications,
and I am interested in cloud computing technology and data management / processing systems.
</p>
</div>
</div>
</section>
<!-- Skills -->
<section class="section skills" data-section="sec-skills">
<div class="container">
<div class="section-heading">
<h2>Skills</h2>
<div class="line-dec"></div>
</div>
<div class="section-item">
<div class="row skills">
<div class="col-sm">
<h4>Programming Languages</h4>
<ul>
<li><i class="devicon-java-plain"></i> Java</li>
<li><i class="devicon-typescript-plain"></i> TypeScript</li>
<li><i class="devicon-javascript-plain"></i> JavaScript</li>
<li><i class="devicon-python-plain"></i> Python</li>
<li><i class="devicon-kotlin-plain"></i> Kotlin</li>
<li><i class="devicon-csharp-plain"></i> C#</li>
<li><i class="devicon-html5-plain"></i> HTML</li>
<li><i class="devicon-css3-plain"></i> CSS</li>
<li><i class="devicon-mysql-plain"></i> MySQL</li>
<li><i class="devicon-bash-plain"></i> Bash</li>
</ul>
</div>
<div class="col-sm">
<h4>Technical Skills</h4>
<ul>
<li>Fullstack Software Development</li>
<li>Angular</li>
<li>Spring Boot</li>
<li>.NET</li>
<li>REST API</li>
<li>Data Management</li>
<li>Data Processing</li>
<li>Docker</li>
<li>AWS</li>
<li>Linux</li>
</ul>
</div>
<div class="col-sm">
<h4>Languages</h4>
<ul>
<li>German (Mother Tongue)</li>
<li>English (C1)</li>
<li>French (B1)</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- Work Experience -->
<section class="section work-experience" data-section="sec-work_exp">
<div class="container">
<div class="section-heading">
<h2>Work Experience</h2>
<div class="line-dec"></div>
</div>
<div class="section-item">
<a href="https://www.raiffeisen.ch/" target="_blank">
<div class="service-icon raiffeisen-logo"></div>
</a>
<h4>Software Developer at Raiffeisen Switzerland</h4>
<h5>December 2023 - present</h5>
<div>
<p style="margin-bottom: 9px;">Full stack software development for trading applications</p>
<p style="font-size: 80%;">
Skills: Angular, TypeScript, Spring Boot, Java, Kotlin, REST API, Docker, PrimeNG
</p>
<ul>
<li>Frontend web development with Angular</li>
<li>Backend REST API development with Spring Boot (Java and Kotlin)</li>
<li>Apprentice supervision</li>
</ul>
</div>
</div>
<div class="section-item">
<a href="https://www.snb.ch" target="_blank">
<div class="service-icon snb-logo"></div>
</a>
<h4>Software Engineer at Swiss National Bank (Internship)</h4>
<h5>January 2021 - August 2021</h5>
<div>
<p style="margin-bottom: 9px;">Full stack software development for monetary applications</p>
<p style="font-size: 80%;">
Skills: Angular, TypeScript, .Net, C#, REST API, Angular Material Design
</p>
<ul>
<li>Frontend web development with Angular</li>
<li>Backend REST API development with .NET (C#) and Microsoft SQL server</li>
<li>Rework of logging and alerting infrastructure using the Elastic (ELK) stack</li>
</ul>
</div>
</div>
</div>
</section>
<!-- Education -->
<section class="section education" data-section="sec-education">
<div class="container">
<div class="section-heading">
<h2>Education</h2>
<div class="line-dec"></div>
<span>I completed both my Bachelor and Master's studies in Computer Science at ETH Zurich</span>
</div>
<div class="section-item">
<a href="https://ethz.ch" target="_blank">
<div class="service-icon eth-logo"></div>
</a>
<h4>Master of Science in Computer Science ETH Zurich</h4>
<h5>September 2021 - September 2023</h5>
<div>
<ul>
<li>Major: Data Management Systems</li>
<li>Minor: Computer Graphics</li>
<li>Thesis: Evaluating Data Processing Datacenter Applications in Serverless Environments</li>
</ul>
</div>
</div>
<div class="section-item">
<a href="https://ethz.ch" target="_blank">
<div class="service-icon eth-logo"></div>
</a>
<h4>Bachelor of Science in Computer Science ETH Zurich</h4>
<h5>September 2017 - September 2020</h5>
<div>
<ul>
<li>Thesis: Storage Format for Almost-Homogeneous Data Sets</li>
</ul>
</div>
</div>
</section>
<!-- Projects -->
<section class="section projects" data-section="sec-projects">
<div class="container">
<div class="section-heading">
<h2>Projects</h2>
<div class="line-dec"></div>
<span>Here is a selection of projects I worked on</span>
</div>
<div class="section-item">
<h4>Contribution to Open Source Projects</h4>
<p class="project-skills">
Skills: Angular, TypeScript, JavaScript
</p>
<p>
I have contributed to a few open source projects
</p>
<ul>
<li><a href="https://github.com/primefaces/primeng" target="_blank">PrimeNG</a>: Bug fixes and documentation updates</li>
<li><a href="https://github.com/image-js/image-js" target="_blank">image-js</a>: Documentation updates</li>
</ul>
</div>
<div class="section-item">
<h4>Evaluating Data Processing Datacenter Applications in Serverless Environments</h4>
<h5>Master's Thesis, <a href="https://systems.ethz.ch/" target="_blank">Systems Group</a> ETH Zurich,
February 2023 - September 2023</h5>
<p class="project-skills">
Skills: Bash, Python, AWS Lambda, Amazon EC2, Apache Spark, Apache Drill, Docker
</p>
<p>
Serverless platforms provide a high degree of elasticity and fine-grained billing. Even though the
serverless programming model is very popular for short-lived, event-driven applications, it is ill-suited
for distributed data center applications because of restrictions like the lack of direct communication
between individual serverless functions. Boxer is a system developed to overcome these limitations and
provides an environment in real-world serverless platforms that is compatible with existing data center
applications. Boxer enables the use of existing unmodified query engines in commercially available
serverless offerings (e.g., AWS Lambda), and thus, allowing us to take advantage of the elasticity
properties of serverless platforms without the need to re-design the applications to fit the serverless
programming model. This offers the ability to instantiate data center clusters on a per-request granularity
and therefore reducing resource over-provisioning. <br> <br>
In this thesis, we study the requirements, feasibility and performance of using Boxer to run existing data
processing applications in a serverless environment. We show how to instantiate whole query engine clusters
in serverless functions on a per-request granularity and present experimental results of the TPC-H benchmark
using Apache Spark and Apache Drill query engines running in AWS Lambda serverless functions. We evaluate
the query engine cluster initialization time, query execution time, as well as monetary costs, and compare
them to results gathered from the same experiments performed in Amazon EC2 virtual machine clusters.
</p>
<a class="project-button" href="https://doi.org/10.3929/ethz-b-000631042" target="_blank">
<button><i class="bi bi-filetype-pdf"></i>Final Report</button>
</a>
<p style="margin-top: 1.5em;"><span style="font-style: italic;">Update (October 2023):</span> <br>
Our paper <a href="https://doi.org/10.3929/ethz-b-000646171" target="_blank">Off-the-shelf Data Analytics on
Serverless</a> has been accepted at the <a href="https://www.cidrdb.org/cidr2024/index.html"
target="_blank">Conference on Innovative Data Systems Research (CIDR), 2024.</a></p>
</div>
<div class="section-item">
<h4>Computer Graphics Project</h4>
<h5><a href="https://cgl.ethz.ch/teaching/cg22/home.php" target="_blank">Computer Graphics</a> course project,
ETH Zurich, 2022</h5>
<p class="project-skills">
Skills: C++, Python
</p>
<p style="margin-bottom: 6px;">
During this course, we implemented a renderer to create physically-accurate images. <br>
We extended the Nori v2 ray tracer by adding the following features:
</p>
<ul>
<li>Images as Textures</li>
<li>Normal/Bump Mapping</li>
<li>Textured Area Emitter</li>
<li>NL-means Denoising</li>
<li>Heterogeneous Participating Media</li>
<li>Directional Light</li>
<li>Motion Blur</li>
<li>Procedural Volume</li>
<li>Environment Map</li>
<li>Advanced Camera (Depth of Field, Lens Distortion, Bokeh)</li>
<li>Disney BSDF</li>
</ul>
<p style="margin-top: 6px;">
For our final image, we wanted to show the beauty of space. To fit the "Out of Place" theme, we wanted to
put something random into the scene: For example a car "driving" in space.
</p>
<a href="assets/images/projects/cg-final-image.png" data-lightbox="lightbox-cg-final" data-title="Final Image"
class="project-img">
<img src="assets/images/projects/cg-final-image.png" alt="computer-graphics-image"></a>
<a class="project-button" href="https://gianluca-moro.github.io/ComputerGraphicsProject/" target="_blank">
<button><i class="bi bi-box-arrow-up-right"></i>Final Report</button>
</a>
<div class="project-button-spacing"><br><br></div>
<a class="project-button" href="https://github.com/gianluca-moro/ComputerGraphicsProject" target="_blank">
<button><i class="bi bi-code-slash"></i>Source Code</button>
</a>
</div>
<div class="section-item">
<h4>Hybris - The Rise and Fall of Atlantis</h4>
<h5><a href="https://gtc.inf.ethz.ch/education/game-programming-laboratory.html" target="_blank">
Game Programming Laboratory</a> course project, ETH Zurich, 2022</h5>
<p class="project-skills">
Skills: C# (MonoGame)
</p>
<p>
Hybris (from Ancient Greek húbris) refers to excessive pride or dangerous overconfidence. It was due to
these traits that Atlantis, an island whose naval power besieged Athens in times long past, fell out of
the Greek Gods' favour, which lead to its downfall and submergence in the Atlantic Ocean. <br> <br>
"Hybris - The Rise and Fall of Atlantis" is a 3D city builder where the player must employ finesse and
strategy to expand their budding
nation, all the while taking care not to draw the wrath of the gods upon themselves and ultimately
succumbing to the same fate as the Atlanteans before them. <br> <br>
Hybris was developed by Benjamin Simmonds, Gianluca Moro, Eric Enzler, Fabian Bösiger and Kate Gadola
during the 2022 Game Programming Lab course at ETH Zurich. The game was implemented in C# using MonoGame and
3D models were designed in Blender.
</p>
<a href="assets/images/projects/hybris.png" data-lightbox="lightbox-hybris" data-title="Hybris ingame footage"
class="project-img">
<img src="assets/images/projects/hybris.png" alt="hybris-image"></a>
<a class="project-button" href="https://hybrisgame.itch.io/hybris" target="_blank">
<button><i class="bi bi-download"></i>Download</button>
</a>
<div class="project-button-spacing"><br><br></div>
<a class="project-button" href="https://youtu.be/4pkfWe7bkGw?si=FHo1u0FBG2jZ6yMJ" target="_blank">
<button><i class="bi bi-youtube"></i>Trailer</button>
</a>
</div>
<div class="section-item">
<h4>Wildfire Visualization</h4>
<h5><a href="https://cgl.ethz.ch/teaching/visualization22/home.php" target="_blank">Scientific
Visualization</a> course project, ETH Zurich, 2022</h5>
<p class="project-skills">
Skills: Python
</p>
<p>
In this project, we wrote an interactive program to visualize the spread of wildfires using real-life data.
We can use our visualization to analyze the effects of wind and terrain on the spread and temperature of the
fires.
</p>
<a href="assets/images/projects/wildfire.gif" data-lightbox="lightbox-wildfire"
data-title="Wildfire Visualization" class="project-img">
<img src="assets/images/projects/wildfire.gif" alt="wildfire-image"></a>
<a class="project-button" target="_blank"
href="https://github.com/gianluca-moro/WildfireVisualization/blob/main/SciVis-Project_Report-Wildfire-GroupB.pdf">
<button><i class="bi bi-filetype-pdf"></i>Final Report</button>
</a>
<div class="project-button-spacing"><br><br></div>
<a class="project-button" href="https://github.com/gianluca-moro/WildfireVisualization" target="_blank">
<button><i class="bi bi-code-slash"></i>Source Code</button>
</a>
</div>
<div class="section-item">
<h4>"Seeing" Temperature - Integration of IR Camera into the HoloLens 2</h4>
<h5><a href="https://www.cvg.ethz.ch/teaching/mrlab/2021/index.php" target="_blank">Mixed Reality</a>
course project, ETH Zurich, 2021</h5>
<p class="project-skills">
Skills: C# (Unity), Python
</p>
<p>
The goal of this project is to display the thermal information of people to the user by integrating an
infra-red camera connected to a Raspberry Pi computer into the HoloLens 2 system. In the end, the HoloLens
will have all the information needed to detect potential temperature hazards and make them visible. The
idea behind the project is to develop an application that helps detecting potential Covid-19 threads, e.g.,
in
hospitals, airports, workplaces and other places with a high infection risk.
</p>
<a class="project-button" href="https://github.com/gianluca-moro/SeeingTemperature/blob/main/Report.pdf"
target="_blank">
<button><i class="bi bi-filetype-pdf"></i>Final Report</button>
</a>
<div class="project-button-spacing"><br><br></div>
<a class="project-button" href="https://github.com/gianluca-moro/SeeingTemperature" target="_blank">
<button><i class="bi bi-code-slash"></i>Source Code</button>
</a>
</div>
<div class="section-item">
<h4>Storage Format for Almost-Homogeneous Data Sets</h4>
<h5>Bachelors's Thesis, <a href="https://systems.ethz.ch/" target="_blank">Systems Group</a> ETH Zurich,
March 2020 - July 2020</h5>
<p class="project-skills">
Skills: Python, Java, JSON, Apache Parquet
</p>
<p>
JSON is a popular data format which is very flexible since no schema needs to be defined and therefore the
data can also be heterogeneous. But this flexiblity comes at the price of performance. However, in
practice, most data sets do not use the flexibilty of JSON to its full extend and are mostly homogeneous.
We call such data sets almost-homogeneous. For almost-homogeneous data sets, the trade-off between the
flexibilty and performance loss of JSON is not justified. <br> <br>
Thus, we propose a new storage format for almost-homogeneous data sets which allows for faster processing
by storing the data in the Parquet file format. Parquet is optimized for structured, homogeneous data sets
and allows for significantly faster data processing compared to unstructured JSON. <br> <br>
In this thesis, we first cover the background on Parquet and also analyse the almost-homogeneity in
real-life JSON data sets. We then show how to preprocess and convert data sets from JSON to the Parquet
format. Finally, we evaluate the processing performance of our new storage format.
</p>
<a class="project-button" href="https://doi.org/10.3929/ethz-b-000426097" target="_blank">
<button><i class="bi bi-filetype-pdf"></i>Final Report</button>
</a>
</div>
</section>
</div>
<!-- Scripts -->
<!-- Bootstrap core JavaScript -->
<script src="jquery/jquery.min.js"></script>
<script src="bootstrap/bootstrap-5.3.1-dist/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/isotope.min.js"></script>
<script src="assets/js/owl-carousel.js"></script>
<script src="assets/js/lightbox.js"></script>
<script src="assets/js/custom.js"></script>
<script>
window.onload = () => {
document.getElementById("year").innerHTML = new Date().getFullYear();
}
var showSection = function showSection(section, isAnimate) {
var direction = section.replace(/#/, ""),
reqSection = $(".section").filter(
'[data-section="' + direction + '"]'
),
reqSectionPos = reqSection.offset().top - 0;
if (isAnimate) {
$("body, html").animate(
{
scrollTop: reqSectionPos
},
800
);
} else {
$("body, html").scrollTop(reqSectionPos);
}
};
var checkSection = function checkSection() {
$(".section").each(function () {
var $this = $(this),
topEdge = $this.offset().top - 80,
bottomEdge = topEdge + $this.height(),
wScroll = $(window).scrollTop();
if (topEdge < wScroll && bottomEdge > wScroll) {
var currentId = $this.data("section"),
reqLink = $("a").filter("[href*=\\#" + currentId + "]");
reqLink
.closest("li")
.addClass("active")
.siblings()
.removeClass("active");
}
});
};
$(".main-menu").on("click", "a", function (e) {
e.preventDefault();
showSection($(this).attr("href"), true);
});
$(window).scroll(function () {
checkSection();
});
$(".main-menu li:first").addClass("active");
checkSection();
</script>
</body>
</html>