Resume

Gabriel Madeira

ABOUT
Hey, I'm Gabriel,a Software Engineer 💻
EXPERIENCES
Work Experience
Aprix
Software Engineer
May 2024 - Present
Porto Alegre - Brazil

Technology stack: Python, Pandas, Angular, Docker, PostgreSQL, Microsoft Azure.

German Research Center for Artificial Intelligence (DFKI)
Exchange Student
April 2023 - March 2024
Kaiserslautern - Germany

• Designed and developed a visualization tool for the exploration of generic and large knowledge graphs through filtering, exploration, and grouping features.
• Implemented the tool module in three different knowledge graph environments: DBpedia and two private knowledge bases.
• Conducted a 10-user evaluation where the tool outperformed the baseline in one of the two defined user tasks and reached a 79.5 score in the System Usability Scale method.
Technology stack: Java, Spring Boot, Vue.js, D3.js, SPARQL.

Computer Graphics and Image Processing Research Group
Undergraduate Researcher
June 2022 - November 2022
Porto Alegre - Brazil

• Executed performance tests of existing trained classification/segmentation models (cytology field) fine-tuning with the group’s private oral cell image dataset.
• Studied deep learning techniques applied to image classification and segmentation.
Technology stack: TensorFlow, Python.

Nelogica
Software Development Intern
February 2021 - March 2022
Porto Alegre - Brazil

Back-end team (October 2021 – March 2022):
• Implemented a database event proxy REST API service, in the OpenAPI Specification, almost zeroing the rate of accumulated database commands in the notification service.
• Created a service dynamic installer, making the process of creating specific new instances easier.
• Implemented the replaceable tags feature in the body of a message in the notification service for clients.
• Technology stack: Delphi.
Front-end team (February 2021 – September 2021):
• Developed a simulated exchange wallet component for the crypto trading web platform, supporting virtual positions.
• Optimized the login screen loading with JavaScript asynchronous imports, reducing its required file size by 47%.
• Designed an asset conversion method from several different quote sources using JavaScript promises.
• Technology stack: Vue.js, JavaScript, CSS, HTML.

Information Management Research Group - FURG
Undergraduate Researcher
April 2018 - July 2020
Rio Grande - Brazil

• Applied the Nearest Centroid algorithm and TF-IDF method to build an advisor recommendation system.
• Developed The Gold Tree, a web tool for academic genealogy analysis.
• Cleaned anomalies in a database with more than 500 thousand rows.
• Received a research scholarship.
• Technology stack: PostgreSQL, JavaScript, HTML, CSS, Python, Scikit-Learn.
Publications:
[1] Madeira, G., Borges, E.N., Baranano, M., Nascimento, P.K., Lucca, G., de Fatima Maia, M., Santos, H.S. and Dimuro, G.P., 2019. The Gold Tree: An Information System for Analyzing Academic Genealogy. In Proceedings of the ICEIS 2019 (pp. 114-120).
[2] Madeira, G., Borges, E.N., Lucca, G., Santos, H. and Dimuro, G., 2019. A tool for analyzing academic genealogy. In Lecture Notes in Business Information Processing, vol 378, (pp. 443–456).
[3] Madeira, G., Borges, E.N., Lucca, G., de Carvalho Segundo, W., Wieczynski, J.C., Santos, H.S. and Dimuro, G.P., 2021. Using Academic Genealogy for Recommending Supervisors. In Proceedings of the ICEIS 2021 (pp. 885-892).

Qwerty News Portal
Computer Technician
April 2016 - July 2017
Dom Pedrito - Brazil

• Developed an arrival and departure control web system for internal employees.
• Developed a web transparency portal.
• Technology stack: PHP, HTML, CSS, JavaScript, MySQL.

Education
Federal University of Rio Grande do Sul
Bachelor's degree, Computer Science
March 2020 - August 2024
Porto Alegre - Brazil

GPA: 9.40/10.00 - Magna cum Laude
5th best Brazilian university according to the Times Higher Education’s World University Ranking 2024.

Rheinland-Pfälzische Technische Universität Kaiserslautern-Landau
Exchange Program, Computer Science
April 2023 - March 2024
Kaiserslautern - Germany

Attending Master's classes as part of an exchange program.

Federal University of Rio Grande (FURG)
Bachelor's degree, Computer Engineering
March 2019 - December 2019
Rio Grande - Brazil

GPA: 9.40/10.00
(university and course transfer after one year)

Federal University of Rio Grande (FURG)
Bachelor's degree, Information Systems
March 2018 - December 2018
Rio Grande - Brazil

GPA: 9.62/10.00
(course transfer after one year)

Qwerty Escola
Technical course, Computing Technician
March 2015 - December 2016
Dom Pedrito - Brazil

GPA: 9.32/10.00
Some of the topics covered:
• Logic and Programming Languages • Operating Systems • Hardware • Interpretation of Computer System Specifications • Databases • Programming Logic • Operating System • Types of User Interfaces • Designing, Analyzing, and Planning Software Development

SKILLS

Programming Languages

JavaScript / TypeScript
Python
Java
C++
SQL
PHP

Technologies

Angular
Vue.js
Spring Boot
Git
Unix, Bash
Docker
Microsoft Azure
Scikit-Learn, Tensorflow
HTML, CSS
Qt

Languages

English
Advanced
Portuguese
Native
German
Beginner
PROJECTS
ascii-artC++QtOpenCV
Generate ASCII arts from images.

ascii-art

This is an application for generating ASCII arts from images. In its interface, there are some pre-processing image operations like resize, brightness, contrast, threshold, edge detect (Canny), and blur. Those are used to adjust the input image for better results in the output of the two available algorithms for conversion to ASCII code implemented in this app.

The first is a structure-based algorithm, using the template matching strategy, where an 8x8 kernel iterates the image computing the difference with all characters glyphs, and the one with less difference is chosen. Now, the second one is tone-based, where a density strategy is used. Given a pixel, the luminance 0-255 value is mapped to an array of characters ordered by density.

The project was developed for the final assignment of the Fundamentals of Digital Image Processing course (INF01046) at UFRGS.

Interface

Dependencies

  • Qt
  • OpenCV
image-processing-appC++QtOpenCV
Image manipulation application (like Adobe Photoshop)

image-processing-app

The goal of this project was to build an application for image manipulation (like Adobe Photoshop) but implement the image operations instead of using some method of existent libraries.

There are available operations like 3x3 convolution, quantization, brightness, contrast, rotation, flip, zoom in/out and negative.

This application was developed for Fundamentals of Digital Image Processing course (INF01046) at UFRGS.

Interface

Dependencies

  • Qt
  • OpenCV
INFinityDriveC++TCP Sockets
Dropbox-like service, which allows sharing files with automatic synchronization between different devices, using TCP Socket API.

INFinityDrive

INFinityDrive is a Dropbox-like service, that allows file sharing with automatic synchronization between different devices.

It is implemented using the Transmission Control Protocol (TCP) Socket API with C++. In its core functions, important concepts such as programming with multiple processes/threads, communication and concurrency control were used.

Another important mechanism implemented is the replication system with leader election. Using the Ring Election Algorithm it makes sure that when the primary server crashes, a backup server takes the responsibility.

It was tested with 5 computers connected to a network. One as the main server, 2 as backup servers and 2 as clients. Tests included:

  • Client file upload, check if it is propagated correctly
  • Kill the primary server, check the election of a backup server and the reconnection of the clients to it
  • Client file upload through the elected server
  • Kill the current elected server
  • ...

This project was developed for the Operating Systems II course at INF-UFRGS.

Working example

Working example

Authors

compiler-projectCLexYaccAssemblyMakefile
Compiler built from scratch.

compiler-project

The goal of this project was to build a compiler from scratch for a language specified by the professor. It was separated into 7 incremental parts:

  • 1: create the lexical analyzer using lex tool and initialize a global symbol table;
  • 2: create the syntax analyzer using yacc and populate the global symbol table;
  • 3: store the derivation tree found by the parser from part 2 (generated by yacc) in an Abstract Syntax Tree (AST) structure;
  • 4: perform semantic verification through a series of tests;
  • 5: intermediate code generation from AST; creation of the Three-address code (TAC) structure; temporary symbols and labels;
  • 6: translation of the intermediate code (TAC) generated in the previous part to assembly code;
  • 7: compiler error recovery and optimization.

This project was developed for the Compilers course at INF-UFRGS.

Code compilation example 1

Code compilation example 1

Code compilation example 2

Code compilation example 2

academic-genealogy-rsPythonScikit-learn
Source code of the work described in the paper "Using Academic Genealogy for Recommending Supervisors"

academic-genealogy-rs

Source code of the work described in the paper "Using Academic Genealogy for Recommending Supervisors".

It includes the pre-processing, classification model and evaluation of a recommendation system based on academic genealogy.

Abstract

Selecting an academic supervisor is a complicated task. Masters and Ph.D. candidates usually select the most prestigious universities in a given region, investigate the graduate programs in a research area of interest, and analyze the professors’ profiles. This choice is a manual task that requires extensive human effort, and usually, the result is not good enough. In this paper we propose a Recommender System that enables one to choose an academic supervisor based on his/her academic genealogy. We used metadata of different theses and dissertations and applied the nearest centroid model to perform the recommendation. The obtained results showed the high precision of the recommendations, which supports the hypothesis that the proposed system is a useful tool for graduate students.

Published paper

murkC#Unity
Murk's idea is to be an immersive game by listening, where there are no graphics, just sounds.

:skull: :headphones: murk

Games usually have graphics and sound. However, as the visual is usually preferred, it ends up not taking advantage of resources that an audio-only game could offer. Murk's idea is to be an immersive game by listening, where there are no graphics, just sounds. The user will put on headphones, close his eyes and concentrate to understand where he is and what elements are around him. Game's main goal: turn off radios across the map by surviving the monsters.

This project was developed for the Human-Computer Interaction course at INF-UFRGS.

Murk's Idea

Murk Screens

Interface Description

Authors

news-recommender-systemVue.jsNeo4jPython
News recommender system based on knowledge graphs

news-recommender-system

This work seeks to use the technique of creating knowledge graphs to recommend news and users. A knowledge graph was built from the MIND dataset through an initial pre-processing and storing it in a Neo4j database, which is based on graphs. After that, queries and an interaction interface for news and user recommendation were developed.

Currently, news and users are recommended simply by searching first-level nearby nodes. More complex methods could be implemented using the same knowledge graph.

Knowledge graph structure example (Neo4j query)

Neo4j Query

News RS interface

News RS Interface

Users RS interface

Users RS Interface

This project was developed for the Database Project course at INF-UFRGS.

thegoldtreeJavascriptd3.jsHTMLCSSPostgreSQL
An Information System for Analyzing Academic Genealogy

thegoldtree

Academic genealogy investigates the relationships between student researchers and academy professionals. In recent years, it proved to be a powerful technique to help analyze the spread of scientific knowledge. Tools that make to visualize these relationships among academics easier are potentially useful and have been proposed.

This work specifies and describes the development of a Web information system for creating and visualizing academic genealogy trees from a set of metadata extracted and integrated from multiple sources. The proposed system allows a researcher to query and track information about his or her advisers and graduate students at any level. A case study was explored to validate the system using data from more than 570 thousand theses and dissertations.

The project was developed in the Information Management Research Group (GINFO) of the Universidade Federal do Rio Grande (FURG) and was partially funded by the FAPERGS.

Published Paper

Website

Interface

z-wavesC++OpenGL
Surviving in a zombie-apocalyptic world.

:zombie: z-waves

Z-Waves is a game where you survive in a zombie-apocalyptic world. There are successive waves of zombies, making the game harder and harder. You can find "Cow boosts", which give more speed, rate of fire, and extra life.

This project was built using OpenGL for the Fundamentals of Computer Graphics course at INF-UFRGS.

Z-Waves

music-creatorJava
Simple music creator using Java and Jfugue music lib.

music-creator

Simple music creator using Java and Jfugue music lib.

Given a list of commands, those are converted to music when the user presses play.

Project developed for the discipline of Program Construction Techniques (INF01120) at UFRGS.

Interface

UML

Dependencies

  • Jfugue
  • Javafx
youtube-dbPostgreSQLPython
YouTube database modeling.

youtube-db

Youtube database modeling and a simple tool to connect with db and run some interesting queries

Developed for the discipline of Database Fundamentals (INF01145) at UFRGS.

UML