My professional life's adventure

Version 2025.08.14-beta

  • 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 , or* drop me a line at . 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

    Database icon SQL

    Flavours of relational databases

    I work with SQL Server logo SQL Server for C# services and applications, mostly, and MySQL logo 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 logo 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;
    Id Name UsedIn IsCurrentlyUsing
    1 SQL Server C# services and applications True
    2 MySQL PHP-based projects True
    3 PostgreSQL Deployment of Django application False
    4 Informix Legacy 4GL code False

    Handled with the right utensils

    When command-line interfaces are not enough I tend to favour HeidiSQL logo HeidiSQL, although Visual Studio logo Visual Studio's tools and Visual Studio Code logo Visual Studio Code's extensions are quite convenient.

    I have used SQL Server Management Studio logo SQL Server Management Studio regularly to manage databases and analyse execution plans, although lately I have shifted to using Azure Data Studio Studio logo Azure Data Studio for the latter purpose.

    Expressed as code SELECT * FROM IDE;
    Id Name Comments
    1 HeidiSQL NULL
    2 Visual Studio NULL
    3 Visual Studio Code Using extensions
    4 SQL Server Management Studio For server management
    5 Azure Data Studio Can estimate execution plans
    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
    ;
    PlatformId PlatformName IDEId IDEName
    2 MySQL 1 HeidiSQL
    2 MySQL 2 Visual Studio Code
    1 SQL Server 5 Azure Data Studio
    1 SQL Server 1 HeidiSQL
    1 SQL Server 4 SQL Server Management Studio
    1 SQL Server 2 Visual Studio
    1 SQL Server 3 Visual Studio Code

    PHP logo icon 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 logo WordPress, although I have also worked with PrestaShop logo 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 logo 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 Initialized empty Git repository in /home/galdecoa/php-project/.git

    It is also not unusual to find myself running Docker containers for a multitude of purposes: to run through a web server (Apache logo Apache, preferably), to use Xdebug logo Xdebug, to test a different environment, to experiment with a new feature, etc.

    Expressed as code $ cat docker-compose.yml version: "3.9"
    services:
      web:
        image: 8-apache
        container_name: php-project
        ports:
          - 8080:80
        volumes:
          - .:/var/www/html/

    These and other tools are mentioned further down.

    JavaScript logo icon 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 logo webpack (and, by extension, Node.js logo 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 logo three.js to present this résumé as a 3D game and revise WebGL logo 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 logo 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 logo jQuery extensively (and, before that, Protoype and MooTools), and I have worked with Angular logo Angular and React logo React (with Vite logo Vite) a couple of times. Currently, I try to keep the codebase as dependency free and lean as possible.

    C# logo icon C#

    A natural choice for Microsoft solutions

    Even though .NET logo .NET has been cross-platform for a while now, I have "only" used C# for Microsoft-based projects: web services deployed on Microsoft logo IIS servers, integrations with Azure logo Azure Cloud Services and other products via Graph Toolkit logo Microsoft Graph, and developing Windows logo 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

    Tux, official brand character of the Linux kernel Linux

    Linux is my main OS at home, and an invaluable tool at work. It is incredibly useful to have a Bash logo bash at hand, with all the wonderful utilities the command line has to offer: grep, sed, awk

    Git logo 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 logo Docker

    Docker has become my go-to solution for isolating my development environments, after many years of relying on virtual machines, mostly.

    Ollama logo Ollama

    It is unusual that I am required to run LLMs locally, but I try to leverage all the resources I may have available.

    HTML5 logo 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 logo Python

    A few personal projects with the Raspberry Pi logo Raspberry Pi provided the motivation to delve into Python. I have also looked into Django logo Django . I would love to learn more.

    Jira logo Jira

    I have used Jira Service Management, although I will be the first to point out that I am no expert.

    Image file icon Image editing

    If a situation requires some image manipulation, either in vector format or raster graphics, I know my way around Inkscape logo Inkscape and GIMP logo 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

    Employer
    Nexus5 logo
    Duration
    —ongoing
    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:
    1. The room next door (Pedro Almodóvar, 2024)
    2. Mentiras pasajeras (Blanca Andrés Gómez, Nerea Castro, 2023)
    3. Strange way of life (Pedro Almodóvar, 2023)
    4. Parallel mothers (Pedro Almodóvar, 2021)
    5. It snows in Benidorm (Isabel Coixet, 2020)
    6. Pain and glory (Pedro Almodóvar, 2019)
    7. Julieta (Pedro Almodóvar, 2016)
    8. I'm so excited! (Pedro Almodóvar, 2013)
    9. The skin I live in (Pedro Almodóvar, 2011)
    10. Broken embraces (Pedro Almodóvar, 2009)
    11. 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

    GIO UPM
    Employer
    GIO UPM logo
    Activity
    e-Learning
    Duration
    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:

    1. Masters’ Degree in Business Administration (MBA)

      GIO UPM logo GIO UPM, .

    2. Masters’ Degree in Telecommunication Engineering, major in Telematics

      ETSIT UPM logo ETSIT UPM, .

    3. Zertifikat Deutsch (ZD)

      Goethe Institut logo Goethe Institut, .

    4. Ciclo Superior, Inglés

      Community of Madrid logo Escuela Oficial de Idiomas, .

    5. Certificate of Proficiency in English (CPE)

      CELA, University of Cambridge logo University of Cambridge, 1994.

    Languages

    Spanish flag icon Spanish

    Native language.
    Es el idioma que utilizo en mi día a día.

    English flag (Union Jack) icon 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 flag icon 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 flag icon German

    Basic (Zertifikat Deutsch).
    Leider kann ich nur ein bisschen Deutsch. Ich möchte mehr lernen.

    Other studies and interests

    Member of Eurielec logo, EESTEC logo LC Madrid, from 1997 to 2022.

    Casual user of Duolingo logo Duolingo. My profile.

    Loading…

    Choose a character

  • There are three areas of interest:

    Game area map
    • The stalls of Skills Market provide references of the tools I am familiar with.
    • The houses in Experience Village contain information about selected clients, tasks and competencies, and projects.
    • The Training Garden lists my relevant studies, so far.

    Use w/a/s/d keys to move.
    Mouse control is a bit finicky.

    Controls
    Engine
    Options