About

PERSONAL DETAILS
Welcome to my Personal and Academic profile! Unavailable as freelancer

BIO

ABOUT ME

Hello, welcome to my website! My name is David Gonçalves, a Portuguese Software Developer. I am passionate about creating new things from where nothingness was before. Most of my time is spent in front of the computer screen, but somehow I still spare time for other activities.

I have a strong will to learn new technologies and their workings. As a hobbyist in my free time, I like to work on small non-commercial programming related projects that broaden my experiences as a developer. Some of these projects can be found on my GitLab, GitHub and BitBucket pages.

INTERESTS

TECHNOLOGIES

When it comes to technologies, I have interest in the areas of computer networking, embedded systems, computer security, distributed systems, compilers, databases and web development, among many others. This does not mean I have a deep understanding of these areas, however. One of my favourite shows of all time is MacGyver (1985), this should give some insight about my interests and mindset.

SUBJECTS

In terms of subjects, my interests are broad. I enjoy working with things related to my hobbies — music and art, to name a few — but I am also interested in learning new varied things.

HOBBIES

PROGRAMMING APPS

Ironically, one of my hobbies is tied with my work. I like using my skills in order to make new things, for fun or for helping others, whilst improving my capabilities in the process.

GUITAR

I learned the basics of guitar when I was in 9th grade and since then I occasionally play a song or two. I started by learning classical songs and moved on to playing anime fingerstyle songs.

DRAWING

I took a special interest in drawing in 5th grade when one of my colleagues made an astounding Dragon Ball Z drawing. From then on I began practicing drawing in manga style, joined drawing forums and came up with the online nickname “MangaD” — not very creative.

FORUM ADMINISTRATION

Following the Hero Fighter Empire project I was entitled with the duty of administrating and maintaining the website.

PHYSICAL EXERCISE

Although I spend most of my time in front of the computer screen, I still spare time for physical activities and enjoy nature outdoors.

Resume

EXPERIENCE
  • LISBON, PORTUGAL

    PROGRAMMER ANALYST – INTERNSHIP

      LINK CONSULTING

    Trainee consultant with focus on VB.NET, ASP.NET and SQL Server. Technical management of a wage processing application and derivatives, including database administration, code maintenance and improvement, in a production environment. Close contact with clients and support.
EDUCATION
  • LISBON, PORTUGAL

    INFORMATION SYSTEMS AND COMPUTER ENGINEERING – MASTER'S DEGREE

      INSTITUTO SUPERIOR TÉCNICO

    Degree has focus on two main topics, Cybersecurity and Distributed Systems:
    Cyber-Security: Software Security, Forensics Cyber-Security, Highly Dependable Systems, Cryptography and Security Protocols
    Distributed Systems: Design and Implementation of Distributed Applications, Mobile and Ubiquitous Computing, Cloud Computing and Virtualization, Network and Computer Security
    Other competencies: Applications and Computation for the IoT, Data Administration in Information Systems, Independent Studies 1, Independent Studies 2
    Dissertation: TBA
  • LISBON, PORTUGAL

    INFORMATION SYSTEMS AND COMPUTER ENGINEERING – BACHELOR'S DEGREE

      INSTITUTO SUPERIOR TÉCNICO

    Degree has focus on two main topics, Computer Sciences and Engineering Sciences:
    Computer Sciences: Foundations of Programming, Digital Systems, Databases, Object-Oriented Programming, Operating Systems, Computer Networks, Computer Architecture, Human-Computer Interaction, Software Engineering, Systems Analysis and Modeling, Computer Graphics, Logic for Programming, Introduction to Algorithms and Data Structures, Artificial Intelligence, Distributed Systems, Analysis and Synthesis of Algorithms, Compilers, Signals and Systems
    Engineering Sciences: Differential and Integral Calculus I, Differential and Integral Calculus II, Discrete Mathematics, Electromagnetism and Optics, Theory of Computation, Complex Analysis and Differential Equations, Mechanics and Waves, Probabilities and Statistics, Linear Algebra
    Other competencies: Management

Skills

PROGRAMMING

Note: The following percentage levels are self-perceived.

SOFTWARE DEVELOPMENT
20%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
C / C++11 GDB CMake Valgrind Doxygen
20%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
Java Javadoc
5%
LEVEL : ABSOLUTE BEGINNER EXPERIENCE : HOBBYIST
C# Unity Assembly
70%
LEVEL : INTERMEDIATE EXPERIENCE : 11 months
VB.NET WinForms
10%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
Python
Read more...

TO-DO

WEB DEVELOPMENT
60%
LEVEL : INTERMEDIATE EXPERIENCE : HOBBYIST
HTML5 CSS3 MyBB
30%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
JavaScript jQuery AJAX PHP
20%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
Bootstrap Joomla XML
5%
LEVEL : ABSOLUTE BEGINNER EXPERIENCE : 11 MONTHS
ASP.NET
Read more...

TO-DO

DATABASES
20%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
MySQL PHPMyAdmin MySQL Workbench SQLite
20%
LEVEL : BEGINNER EXPERIENCE : 11 MONTHS
SQL Server
Read more...

TO-DO

SCRIPTING
10%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
Makefile Bash Batch
Read more...

TO-DO

VERSION CONTROL
50%
LEVEL : BEGINNER EXPERIENCE : HOBBYIST
GIT
20%
LEVEL : BEGINNER EXPERIENCE : UNIVERSITY
CVS
Read more...

TO-DO

OTHER
Driver's license: B
LANGUAGE
ENGLISH
85%
LEVEL : C1 [?]
Reading Writing
70%
LEVEL : B2 [?]
Listening Speaking
Read more...

I have been in contact with the English language since 2005. I began to learn the language at elementary school and quickly moved on to watching movies with English subtitles. Nowadays, I mostly watch English movies without subtitles, although I still prefer to watch them with English subtitles when available. The vast majority of my online work and online communication is also done in English. In early 2017 I visited the Oxford school, located in Lisbon, in order to get my English skills tested. I was requested to do both written and oral exams, and got placed in the C1 level of the Common European Framework. Although, I personally believe that my oral skills are not yet of C1 level due to lack of practice.

PORTUGUESE
98%
LEVEL : Native
Reading Writing Listening Speaking
Read more...

Portuguese is my native language. However, there are a few differences between Portuguese from Portugal (PT-PT) and Portuguese from Brazil (PT-BR). I am acquainted with the first, but I understand both versions perfectly.

Projects

PROFESSIONAL
  • LISBON, PORTUGAL

    The Rich Group – Part 1

      INSOMNIUM EYE

    ReactJSHTML5CSS3Electron BootstrapFontAwesome 5MySQLPHP PHP SessionsCORS
    An application for managing a company's clients. The application's font-end is built using ReactJS and Electron, featuring both mobile and desktop views; it interacts with the back-end which is built using PHP and MariaDB. The app uses a login system — which resorts to PHP sessions — so that only administrators can use it. It also features a spreadsheet parser (.xlsx) so that multiple clients can be inserted in the database. Because the client's domain differs from the server's domain, CORS has also been implemented.
  • LISBON, PORTUGAL

    CAMRH

      LINK CONSULTING

    SQL ServerVB.NETASP.NETWindows Services MS ExcelSupport
    Trainee consultant with focus on VB.NET, ASP.NET and SQL Server. Technical management of a human-resources application — centralised on wage processing and derivatives — including database administration, code maintenance and improvement, in a production environment. Close contact with clients and support.
PERSONAL

Note: The following projects are often done during my free time as a hobby and to improve my skills.

  • LISBON, PORTUGAL

    HF Workshop

    C++14CmakeGDBValgrindDoxygen MakefileReverse EngineeringSWFGit
    Following the HF Story Editor project, I was dissatisfied with it due to the unnecessary CPU and memory consumption that comes with Node.js and Electron, plus relying on a third-party tool to manipulate SWF files. Thus, I decided to start a new project, completely from scratch, that would allow the players of the Hero Fighter game to replace stories, images, sounds and even characters in the game. In order to do this, manipulating the SWF file was necessary, which led to the creation of libswf.
  • LISBON, PORTUGAL

    libswf

    C++14CmakeGDBValgrindDoxygen MakefileReverse EngineeringSWFGit Catch2
    libswf is a C++14 library that aims to provide a C++14 interface for manipulating SWF files. So far it features conversion from SWF to EXE, using Adobe Flash Player projector; compression / decompression of SWF files using zlib and lzma algorithms; exporting and replacing MP3 sounds; exporting and replacing some types of images; exporting and replacing binary data; and some unfinished AMF manipulation.
  • LISBON, PORTUGAL

    HF Story Editor

    HTML5CSS3JS ES6jQuery NodeJSElectron Ace EditorReverse Engineering SWFXMLGit
    I started this project somewhere in 2016 but left it unfinished and only picked it up again in 2018 after learning NodeJS and figuring out how to convert SWF files to EXE files programmatically. This project allows the players of the Hero Fighter game to make their own in-game stories, replacing the original stories in the game. Because of my limited free time, I had the help of 2 other programmers in developing this project. Unfortunately, the project is closed source as I don't own any rights to the game it modifies — I reverse engineered it. More information can be found here.
  • LISBON, PORTUGAL

    PERSONAL WEBSITE

    HTML5CSS3jQuery PHPBootstrap 4 Google FontsFont Awesome 5 Open Graph Protocol ApacheLinux
    My personal and academic profile. To keep a record of my skills and projects, as well as to talk a little about myself. The website is hosted on my Raspberri Pi 4 using the LAMP stack. No CMS is being used. The template and theme is raw made, using references from other websites.
  • LISBON, PORTUGAL

    DISCORD BOT

    Python 3
    Discord is a free voice and text chat for gamers which allows the use and development of bots. The Discord API comes available in many languages, I chose to use Python 3. This bot is for personal use on the Hero Fighter discord channel. It provides many useful functionalities which can be found here.
  • LISBON, PORTUGAL

    LF2 Online Data Changer

    HTML5CSS3JavaScriptElectron
    Little Fighter 2 is a freeware PC fighting game for Windows. The game can be modified to some extent and makes use of “data” files which are encrypted. A LF2 fan figured out how to decrypt those files and thus, modify them. This is a online version of the LF2 data changer — in a universe of data changers — featuring syntax highlighting using the ace editor.
  • LISBON, PORTUGAL

    LF2 MultiServer 2.0 – Porting

    C#C++14CmakeDoxygenMakefile
    Little Fighter 2 network mode game only allows 2 computers to connect originally. This program extends the feature to allow up to 8 players from different computers to connect. LF2 Multi Server v2.0 was created by ayalx using DLL injection on the game side and C# for the server itself. I merely translated the program from C# to C++14 in order to allow the program to run on Windows/Mac/Linux out-of-the-box.
  • LISBON, PORTUGAL

    HF Room Server – Porting

    JavaC++11CmakeGDBValgrindDoxygenMakefile
    This project earned me the endorsement of Marti Wong himself on Linkedin. This project is a follow-up of HF Room Server – Improvements. It is a complete rebuild of the Java program from scratch in C++11 and also led me to create the C++11 socket library. Unfortunately, the project is closed source as I don't own any rights to the original software — I reverse engineered it. More information can be found here.
  • LISBON, PORTUGAL

    C++11 Socket Library

    C++11CmakeGDBValgrindDoxygenMakefile
    As I was working on the translation of the HF Room Server, I found myself in need of a portable socket library which C++11 does not ship by default. I considered boost, but I did not want to clutter my project with unnecessary code. Then decided to make my own portable socket library with objects and methods similar to Java's socket library.
  • LISBON, PORTUGAL

    HERO FIGHTER EMPIRE

    JoomlaMyBBHTML5CSS3JavaScript jQueryAJAXPHPAdobe Photoshop CC
    Initially created by Matthias Hilger and Chris, Hero Fighter Empire is the official fansite for the Hero Fighter game. In 2014 the website was hacked and Matthias took it down. As he had no time to rebuild it, I offered myself to rebuild and administrate the website, which I did from scratch using Joomla and MyBB.
  • LISBON, PORTUGAL

    HF ROOM SERVER – IMPROVEMENTS

    JavaMakefileReverse Engineering
    Hero Fighter is a beat 'em up game created by Marti Wong. The game allows for multiplayer through network mode and ships an extra Java program for opening “room” servers that players can connect to in order to play together. Due to the stagnation of the game's development, I decided to reverse engineer this little program in order to fix bugs and add new features to it.
UNIVERSITY
  • LISBON, PORTUGAL

    HillClimbing@Cloud

      INSTITUTO SUPERIOR TÉCNICO

      Cloud Computing and Virtualization

    JavaAWSBITMachine learning
    The goal of this project was to design and develop an elastic cluster of web servers that is able to execute a simple e-science related function: to find the maximum value on simplified height-maps (maps) using algorithms such as DFS, BFS and A*. The system receives a stream of web requests from users. Each request is for finding the maximum on a given map, providing the coordinates of the start position and a search rectangle within the height-map. In the end, it displays the height-map and the computed path (in gray-scale) to reach the maximum, using hill-climbing. To have scalability, good performance and efficiency, the system will attempt to optimize the selection of the cluster node for each incoming request and to optimize the number of active nodes in the cluster using the Load Balancer and the Auto-Scaler.
  • LISBON, PORTUGAL

    P2PHOTO

      INSTITUTO SUPERIOR TÉCNICO

      Mobile and Ubiquitous Computing

    JavaAndroidGradleSQLiteGoogle Drive API RSAAESSHA-2Base64
    P2Photo is a mobile application that allows users to share photos with their friends in a privacy-preserving way. This is achieved by ensuring that the application provider is involved only in maintaining group membership. All the operations involving publishing photos in albums and reading photos from albums are performed without the provider's awareness, making use of 3rd-party cloud services or peer-to-peer Wi-Fi Direct (unimplemented) and cryptographic mechanisms.
  • LISBON, PORTUGAL

    HDS NOTARY

      INSTITUTO SUPERIOR TÉCNICO

      Highly Dependable Systems

    JavaGradleSQLiteECC RSAAESSHA-2Base64 BFTProof of workSmart card
    To-do
  • LISBON, PORTUGAL

    DDOS ATTACK MITIGATION

      INSTITUTO SUPERIOR TÉCNICO

      Network and Computer Security

    Python 3iptablesSnortjMeterNetplanVirtual Box
    This project aims to mitigate DDoS attacks through the use of iptables firewall and Snort NIDS. To simulate the DDoS attack, we wrote a script that telnets to virtual machines in the network and injects a DoS script that will target the victim's web server.
  • LISBON, PORTUGAL

    BUFFER OVERFLOWS

      INSTITUTO SUPERIOR TÉCNICO

      Software Security

    Python 3Cx86 Assembly
    This project consists on the development of a static analysis tool for identifying data and control flow integrity violations when inputs are not subject to proper input validation. The tool analyses small pieces of x86 assembly code.
  • LISBON, PORTUGAL

    COMPILER (“ZU” LANGUAGE)

      INSTITUTO SUPERIOR TÉCNICO

      Compilers

    C++OOPLexYacc AssemblyMakefileLinux
    Compiler project using the C++ programming language, lex and yacc. It attempts to compile the code of the given programming language called "Zu". The code generation part of the compiler has not been finished.
  • LISBON, PORTUGAL

    KOS – KEY-VALUE STORE OF THE OS COURSE

      INSTITUTO SUPERIOR TÉCNICO

      Operating Systems

    CMultithreadingData storage MakefileLinux
    The project consists on a system for data storage. KOS utilizes the key-value logic model of data organization. This kind of system of data storage is used in various contexts, such as Windows registry for storing configuration information and operating system metadata for example.
  • LISBON, PORTUGAL

    SPACE INVADERS 3D

      INSTITUTO SUPERIOR TÉCNICO

      Computer Graphics

    C++OOPOpenGLVisual Studio
    This is a game project using C++ programming language and GLUT, the OpenGL Utility Toolkit. The game is a reproduction of the classic Space Invaders, with the peculiarity of being 3D.
  • LISBON, PORTUGAL

    TO-DO

      INSTITUTO SUPERIOR TÉCNICO

    TO-DO
    To-do

Contact

DROP A MESSAGE