Hello, my name is Gonzalo.
I'm a telecommunications engineer and MBA, working from Madrid (Spain) as software developer and analyst in IT projects.
This is a text version of my interactive résumé. Visit https://cv.galdecoa.com/ to see it in action. Hopefully, it provides some respite from the tedious task of reading through endless CVs (I feel your pain, recruiter—there is a mini-game in the JavaScript section).
If you like my profile, get in touch at LinkedIn, or* drop me a line at cv@galdecoa.com. A conventional résumé can be downloaded here.
* Not XOR.
For less interactivity, switch to "Text mode" using the selector on the header.
⚠️ Coded from scratch, without libraries, as a fun project. Still a work in progress.
Technical skills
SQL
Flavours of relational databases
I work with SQL Server for C# services and applications, mostly, and
MySQL for PHP-based projects. A bit more on these languages can be found in their respective sections, further ahead.
I have deployed and used PostgreSQL databases as well, and even migrated Informix servers and provided support for legacy 4GL code, but those were essentially one-off projects.
Expressed as code
SELECT * FROM Platform;
Handled with the right utensils
When command-line interfaces are not enough I tend to favour HeidiSQL, although
Visual Studio's tools and
Visual Studio Code's extensions are quite convenient.
I have used SQL Server Management Studio regularly to manage databases and analyse execution plans, although lately I have shifted to using
Azure Data Studio for the latter purpose.
Expressed as code
SELECT * FROM IDE;
SELECT
r.PlatformId, p.Name AS PlatformName,
r.IDEId, i.Name AS IDEName
FROM
Platform AS p
INNER JOIN PlatformIDE AS r ON r.PlatformId = p.Id
INNER JOIN IDE AS i ON i.Id = r.IDEId
WHERE
p.IsCurrentlyUsing = 1
ORDER BY
p.Name, i.Name
;
PHP
Made to measure: Custom web projects
I use PHP in a fair share of web services.
My current preference is PHP8, although I have a hand in a few legacy projects using older versions, mostly PHP7.
I draw a line at PHP5.4. I recall fondly my first contacts with web development using PHP3 but do not wish to revisit them.
Expressed as code
/**
* A represtantion of my history using PHP.
* @version 8.3.2
* @since 3.0.0
*/
class CodingInPHP extends Coding {
/** @var string Oldest version of PHP I handle. */
const OLDEST_VERSION = '5.4';
/**
* Check if I work with a certain PHP version.
* @param string $php_version A PHP version.
* @return bool `true` if I will work with the given version.
*/
static function will_work_with( string $php_version ): bool {
return version_compare(
$php_version, self::OLDEST_VERSION, '>='
);
}
}
Prêt-à-porter: The world of CMS and e-commerce
A sizeble part of the work I have used PHP for involves Content Management Systems. Almost overwhelmingly, it is WordPress, although I have also worked with
PrestaShop and, to a lesser extent, Joomla and Drupal.
Expressed as code
/** An enumeration of CMS I have worked with. */
enum CMS: int {
case WordPress = 1; // Since version 1.5
case PrestaShop = 2; // Versions 1.6, 1.7 and 8.1
case Joomla = 4; // I have not used it in a while
case Drupal = 8; // Only in isolated cases
/** @var int A bit mask of the CMS I am familiar with. */
private const FAMILIARITY = 0
| self::WordPress->value
| self::PrestaShop->value
;
/**
* Check if I have familiar knowledge of a CMS.
* @param CMS $cms A CMS I have worked with.
* @return bool `true` if I am familiar with the given CMS.
*/
public static function check_familiarity( CMS $cms ): bool {
$masked_result = static::FAMILIARTY & $cms->value;
return ( $masked_result === $cms->value );
}
}
Complements: Git and Docker
While the only requirement I have to start coding is opening Vim and access to the documentation, nowadays I would not write a line of code or documentation without using Git.
Expressed as code
$ git init
It is also not unusual to find myself running Docker containers for a multitude of purposes: to run through a web server ( Apache, preferably), to use
Xdebug, to test a different environment, to experiment with a new feature, etc.
Expressed as code
$ cat docker-compose.yml
These and other tools are mentioned further down.
JavaScript
Interactive fun!
This CV's "game mode" is coded in JavaScript although, admitedly, the gimmick falls short on the gaming aspect. I did use the same base code to implement a more conventional paddle and ball mini-game —I even wrote about its design.
Talking about writing, looking at the source code might also give a soupçon of my continuous effort to write readable code, following a consistent standard, including providing comments with documentation using JSDoc.
Available practically everywhere in a convenient bundle!
I like being able to run the same code on different platforms. I like even more tools like webpack (and, by extension,
Node.js) that help reduce the file size, use less bandwith and load faster, whilst producing the amazingly useful source maps.
3D! AI!! More exclamation marks!!!
For a moment, I considered using three.js to present this résumé as a 3D game and revise
WebGL to boot. I also planned implementing a neural network similar to one I had already deployed, for some NPCs, but this time learning how to efficiently use
WebAssembly for the calculations.
However, the best-laid schemes o' mice an' men…
and all that, so I found myself with less time than I would require. Hence, I had to keep it simple. Nevertheless, I am not above including the previous paragraph to name a couple more things I know about.
Something is missing…
Yes, I know. Where are the popular libraries and frameworks?
I used to use jQuery extensively (and, before that, Protoype and MooTools), and I have worked with
Angular and
React (with
Vite) a couple of times. Currently, I try to keep the codebase as dependency free and lean as possible.
C#
A natural choice for Microsoft solutions
Even though .NET has been cross-platform for a while now, I have "only" used C# for Microsoft-based projects: web services deployed on
IIS servers, integrations with
Azure Cloud Services and other products via
Microsoft Graph, and developing
Windows programs.
Expressed as code
namespace ProgrammingWithCSharp;
// FIXME: Add documentation
public interface IProduct {
public string Name { get; }
public string Provider { get; }
}
public class MicrosoftProduct : IProduct {
public string Name { get; } = "";
public string Provider { get; } = "Microsoft";
}
public class IIS : MicrosoftProduct {
new public string Name { get; } = "Internet Information Services";
}
public class Azure : MicrosoftProduct {
new public string Name { get; } = "Azure Cloud Services";
}
public class Graph : MicrosoftProduct {
new public string Name { get; } = "Microsoft Graph";
}
public class Windows : MicrosoftProduct {
new public string Name { get; } = "Windows";
}
// TODO: Add a factory class
Other tools
Linux
Linux is my main OS at home, and an invaluable tool at work. It is incredibly useful to have a bash at hand, with all the wonderful utilities the command line has to offer: grep, sed, awk…
Git
Initialising a repository is the first thing I do when starting a project. It is a de facto condicio sine qua non, if you pardon my latin.
Docker
Docker has become my go-to solution for isolating my development environments, after many years of relying on virtual machines, mostly.
Ollama
It is unusual that I am required to run LLMs locally, but I try to leverage all the resources I may have available.
HTML + CSS
I make a conscious effort to periodically revisit and keep up-to-date with these specifications. It is easy to loose touch with them through the use of libraries and frameworks.
Python
A few personal projects with the Raspberry Pi provided the motivation to delve into Python. I have also looked into
Django . I would love to learn more.
Jira
I have used Jira Service Management, although I will be the first to point out that I am no expert.
Image editing
If a situation requires some image manipulation, either in vector format or raster graphics, I know my way around Inkscape and
GIMP.
Future wares
Boring Technology™
As all the other sections might indicate, I tend to prefer proven, well understood, solutions. When looking into an unfamiliar resource that might be put in the production pipeline, I want to find a generous degree of certainty.
That does not mean I am satisfied with the tools I am familiar with. There are so many options I know very little about, I would welcome learning more.
The Next Big Thing™
It is difficult to tell wether something is a "Frivolous Fad" or the "Forthcoming Future". Some trends over-promise and/or under-deliver, others are premature, and others become part of the norm. All kinds have had their fair share of examples in the last decades: Cloud Computing, Big Data, Consumer-Grade Virtual Reality, Blockchain, Artificial Intelligence, Quantum Computing…
Whatever comes next, I want to be able to use it to build better, stable, and long-lasting solutions.
Experience, by employer
Software engineer
- Main tasks and competencies
- Developing custom software, standalone or supplementing existing infrastructure.
- Deploying and enhancing web services, pages and applications.
- Requirement analysis and contract-oriented requirement documentation. Consulting and data mining.
Selected clients and projects
Naturgy Engineering
- Activity
- Nuclear engineering
- Duration
- —ongoing
- Tasks and competencies
- Data modeling, processing and analysis for nuclear waste management services, including full technical specification, validation tools and reports.
- Support for the development of a human-machine interface for the simulation kernel developed between GNFe and Tecnatom of the Jules Horowitz's Reactor.
- Project references
- GECYRE: Spent fuel and special waste management database and application for ENRESA.
- AVI-CNAT & HCC-CNAT: Fuel and inventory management, and spent fuel containers load simulator, for Almaraz-Trillo nuclear power plants.
- Jules Horowitz Reactor: A high-performance material test reactor designed to generate up to 100 Mwth, as well as producing radioisotopes, mainly for the medical industry.
El Deseo
- Activity
- Pedro Almodóvar's film production co.
- Duration
- —ongoing
- Tasks and competencies
- Building multi-language custom web services and pages with geographical restrictions, HTML5 animations, AV content, ticket sales services integration, credentials management…
- Creating HTML5 ads for on-line campaigns distributed by Sizmek, Initiative, MagnaGlobal… based on designs by different studios, mainly Mariscal, Gatti, and Barfutura.
- Project references
-
Films and TV shows:
- The room next door (Pedro Almodóvar, 2024)
- Mentiras pasajeras (Blanca Andrés Gómez, Nerea Castro, 2023)
- Strange way of life (Pedro Almodóvar, 2023)
- Parallel mothers (Pedro Almodóvar, 2021)
- It snows in Benidorm (Isabel Coixet, 2020)
- Pain and glory (Pedro Almodóvar, 2019)
- Julieta (Pedro Almodóvar, 2016)
- I'm so excited! (Pedro Almodóvar, 2013)
- The skin I live in (Pedro Almodóvar, 2011)
- Broken embraces (Pedro Almodóvar, 2009)
- El patio de mi cárcel (Belén Macías, 2008)
- 9to5: Time control service and progressive web application, with offline functionality, cryptographic features and geolocation.
- Kinematic: Proprietary web service for reviewing production dailies, integrated with Azure Media Services.
- expressa: Virtual press office.
CIASA
- Activity
- Document digitalisation and archival
- Duration
- —
- Tasks and competencies
- Integrating and deploying services for financial entities.
- Project references
- Minsait (Indra) × Deutsche Bank: Upgrade of local legacy services to a remote environment.
- Cecabank CKBvault: Repositories and lookup services for digitalised cash letters and processed UCC compliant documents.
Signet Armorlite Ibérica / Essilor
- Activity
- Ophthalmic lenses manufacturing
- Duration
- —
- Tasks and competencies
- Lead developer for Kodakonnect's web services and front-end.
- Support for third party applications: legacy code maintenance and update for an application with a 30-year-old C core and 4GL over Informix, deployment and maintenance of a Navision database.
- Data mining for the generation of Standard Audit File for Tax (PT) compliant documents.
- Project reference
- Kodakonnect: Web ecosystem for optometrists that enabled on-line calculus, ordering, manufacturing and tracking of ophthalmic lenses integrated with third party CRM, ERP, and POS. Multi-national deployment (Spain, Portugal, Germany), over 2,000,000 units processed.
Analyst/Programmer
- Tasks and competencies
- Development of an on-line real-time collaboration tool for teams: a web team chat client synchronized with an IRC server with support for private and shared spaces.
- Study and development of a testing module and test building tools for multiple test configurations.
- Project reference
- ARFO: Custom and propietary e-learning platform used in Spain and Latin America.
Training
Degrees and certificates
In reverse chronological order:
-
Masters’ Degree in Business Administration (MBA)
GIO UPM,
.
-
Masters’ Degree in Telecommunication Engineering, major in Telematics
ETSIT UPM, .
-
Zertifikat Deutsch (ZD)
-
Ciclo Superior, Inglés
-
Certificate of Proficiency in English (CPE)
CELA,
University of Cambridge, 1994.
Languages
Spanish- Native language.
- Es el idioma que utilizo en mi día a día.
English- Bilingual (Certificate of Proficiency in English).
- As a child, I spent some time in England. After that, I obtained my CPE. I make a habit of regularly reading and writing in English.
French- Basic (Studies at Lycée Français de Madrid).
- Je n'ai pas parlé français depuis un moment. J'ai étudié pendant quelques années au Lycée Français, même si je n'ai pas obtenu de diplôme.
German- Basic (Zertifikat Deutsch).
- Leider kann ich nur ein bisschen Deutsch. Ich möchte mehr lernen.
Other studies and interests
Member of ,
LC Madrid, from 1997 to 2022.
Casual user of Duolingo. My profile.
to move.