Esteban Manchado Velázquez

Personal Information

Name

Esteban

Surnames

Manchado Velázquez

E-mail Address

emanchado

Blog

http://hcoder.org

Gitea

https://gitea.hcoder.org/emanchado

GitHub

https://github.com/emanchado

Nationality

Spanish

Date of Birth

8/8/1977

Profile

Multifaceted software engineer with around 20 years of professional experience. I can work as a developer, quality assurance engineer or something in between, always adapting to the needs of the team. I focus on scripting languages, especially JavaScript and Python, and I am very fond of functional programming, especially Elm, Clojure and ClojureScript, but I also have experience with other programming languages.

I am a strong believer in test automation and in adapting to the environment and circumstances. My main focus as a developer and quality assurance engineer is on code quality through automated tests, development tools (possibly developed in-house, like RoboHydra), documentation, workshops, and reusable libraries. I mostly have experience with web applications but have also built some cross-platform GUI-based applications. I also have experience in customisation and maintenance of Free Software: I was a Debian Developer between 2002-2011; was one of the lead developers for mEDUXa, a Linux distribution for Canarian schools; and have maintained a number of free software projects throughout the years.

Work Experience

Red Hat (August 2019 - present)

Description

Senior Quality Engineer

Highlights

Worked on Continuous Kernel Integration, a small team dedicated to providing continuous integration for the Linux kernel.

Helped with the documentation effort mostly with overview documentation of systems and processes, and with day-to-day development guidelines.

Helped maintain different tools (like KPET), wrote small tools to automated common tasks.

Helped develop and maintain the code for the Data Warehouse, a Django web application to collect all test results and provide statistics and graphs.

Xeneta (May 2016 - June 2019)

Description

Senior Software Developer

Highlights

Worked on both frontend (ES6, React, Redux) and backend (Python, Flask, PostgreSQL).

Main maintainer of an external API for customers and helped define rules for better APIs.

Made an almost complete rewrite of the permission system.

Gave numerous talks, about Git, functional programming, the (overhauled) permission system, and other topics.

Basic usage of fabric and Docker.

Fronter AS (Apr 2014 - Apr 2016)

Description

Developer in the Analytics team, member of the API and QA guilds.

Highlights

Helped build, improve and ultimately rewrite a notification system based on Apache Kafka, with pieces written in Python, JavaScript and PHP.

Rewrote the notification server in Node.js for maintainability reasons, used Ansible and Jenkins to improve its deployment, and added statistics, graphs, and alerts, using Zabbix and Kibana, to gain an overview of the system health.

Worked in the mobile team, designing and implementing APIs to be consumed by the mobile applications.

Helped getting several teams started with RoboHydra and API testing.

Won the Hackathon in 2014 with a shared board application implemented in Clojure and JavaScript.

Gave several RoboHydra talks, and Clojure talks and workshops.

Opera Software ASA (Jan 2007 - Jul 2013)

Description

Quality Assurance Engineer, Project Manager and Developer. Lead QA for several projects, including Opera Link and My Opera. Project Manager for Opera Link, Dev Opera and My Opera. Developer for Opera Sync (new version of Opera Link) and other projects.

Software packaging, development of internal tools, automated testing, testing infrastructure and coordination, specs, guidelines and documentation.

Highlights

Built a testing environment and automated testsuite for the Opera Link server and for My Opera.

Built several mock servers to improve the reliability of some functional tests, and to dramatically improve the testing of the Opera Link clients. This work was the seed for the ideas in RoboHydra.

Helped design, document and test the Opera Link API. Wrote two articles (now offline) about the Link API on Dev Opera.

Wrote several automation tools (a database migration tool called Migraine, among others) and improved processes in different projects.

Setup and maintenance of a Continuous Integration Server.

Gave many talks and workshops on tools, processes and software automated testing. Organised several lightning talk sessions.

Built a Debian package repository with packaging guidelines and documentation, along with many Debian packages for both internal and external software. Part of this work was designing, implementing and releasing Arepa (Apt REPository Assistant).

Fotón Sistemas Inteligentes (Jul 2002 - Dec 2006)

Description

Analysis, design and implementation of custom applications, mostly web-based.

Server administration, software packaging, internal tools development.

Technologies Used

Web development: Perl CGIs, Perl + Mason, Ruby on Rails, PHP, JavaScript.

System administration: Debian package development, Debian package repositories, Jabber servers, chroot-based “virtual machines”, Cygwin, VMWare, UML and Xen.

Cross-Platform GUIs: Perl/Tk, Perl/wxWidgets, Python/Qt, Windows Intaller Compilers.

Databases: MySQL, PostgreSQL.

Highlights

Design and development of a next-generation web widget system (DJWidgets, in Perl, and RemixWidgets, later, in Ruby).

One of the main developers of the Meduxa project (a Linux distribution for the Canary Islands government), based on Ubuntu and KDE. Lead developer of the automatic update system.

Development of a small call center based on a Jabber daemon system, written in Python, with a Qt interface.

Development of several internal code generation tools.

Testing evangelist, test development with Perl, Ruby and Python.

Development of an extensible build/configuration/install system for web applications, involving reusable, complex Makefiles.

TWiki patches (including PhotonSkin and PhotonSearch).

One of the advocates of having a public SVN repository for the Free Software produced inside the company.

Several talks and seminars.

COINPRE (Nov 2001 - Jul 2002)

Description

Design and implementation of a tax system (RecaNET).

Technologies Used

PHP, JavaScript, PostgreSQL, Perl.

Highlights

Deployment and Evangelisation of a Source Configuration Management System and a Bug Tracking System.

Refactoring and redesign of some important parts of the application, started a tiny JavaScript-based widget system.

OptymaNet (Jul 2001 - Oct 2001)

Description

Web developer for “Camelot”, an application for a law firm.

Technologies Used

Firebird database server, and the Mason web component system and JavaScript for the application.

Highlights

Use of Perl+Mason for the application coding, a very modern web component system at the time.

Development of a context-sensitive help system.

Subdirección de Comunicaciones ULPGC (Oct 2000 - Oct 2001)

Description

System administrator support.

Technologies Used

Perl, DNS, DHCP, Mail servers, System Monitoring Tools.

Highlights

Development of a system administration program called PICA.

Published article (now offline) about PICA on the SysAdmin magazine (now defunct).

Education and Training

University Degree

Degree Name

Licenciado en Informática

Institution

Facultad de Informática de la ULPGC

Number of Years

5

Dates

1 Oct 1995 - 10 Oct 2000

Main Subjects

Programming, Software Engineering

Master Thesis

“RTHC: Un conversor de RTF a HTML” (“RTHC: An RTF to HTML converter”) was given the highest degree (“Matrícula de Honor”, A+).

Design and implementation of a generic RTF parsing library in C++, using Design Patterns and UML for the design and the STL for the implementation.

Design and implementation of an RTF to HTML converter utility, using the above library for parsing, and gettext for i18n. The conversion utility was translated into several languages.

Study and documentation of the RTF format.

Study of the Free Software Community history, resources and way of work.

Packaging of the above software for RPM- and Debian-based systems.

A talk describing all of this was presented at Hispalinux III.

Misc

Rhetorics

Attended “Introduction to Rhetorics”, a two-day intensive course on Rhetorics.

APM Introductory certificate

Received the Association for Project Management's Introductory Certificate in Project Management.

Skills

Languages

Mother Tongue

Spanish

Other Languages (Legend)
Language Listening Reading Spoken Interaction Spoken Production Writing
English C1Proficient C1Proficient C1Proficient C2Proficient C2Proficient
Norwegian B1Independent B1Independent B1Basic B1Basic B1Independent

Computer Skills

Operating Systems

Linux (advanced user level, medium administration).

Windows (medium user level, basic administration).

Programming Languages

JavaScript (including ES6), Python, Elm, Clojure/ClojureScript, Ruby, Perl, PHP, UNIX scripting languages. Basic notions of Elixir, Scala, and several others.

Other Skills

Social Skills

Good communication skills (especially written).

Experience giving talks and workshops.

Organizational Skills

I have worked in different volunteer organizations (Debian, Gulic and Amnesty International).

Former employee representative at Opera Software (2010-2011).

Talks, Courses and Writings

Some of the talks I have given

Elm talk
An introductory Elm talk. It presents some of the basic but interesting ideas in the language, and had a short demo showing how to make a meaningful change to a “real” application (NARROWS).
Full day testing workshop
An introductory-to-mid-level workshop to teach testing, including basic testing concepts, guidelines for writing better tests, intro to TDD, and basic RoboHydra use.
Introduction to Clojure
An introductory workshop to teach Clojure, organized several times (material).
Introduction to RoboHydra, 4/12/2013
An introductory talk showing the ideas behind RoboHydra and its basic capabilities (material), along with two different demos (testing a browser extension and testing an Android application that use an API).
Test-Driven Development Workshop, 15/10/2013
An intro workshop to TDD (material), explaining what it is, what advantages it can bring to the programmer, and when to apply it. After the initial explanation, the attendees practised TDD themselves by solving a simple problem (in this case, a Yahtzee score calculator).
Test-Driven Development Introduction, 23/08/2012
Test-Driven Development: How I Learned to Stop Worrying and Love the Tests”. A short introduction to TDD, explaining what it is, what advantages it can bring to the programmer, and when to apply it.
Google Test Automation Conference, 28/10/2010
Lessons learned from testability failures” (slides). Stories about testability problems and challenges at Opera, together with solutions and advice to improve the testability of projects.

Writings

Technical article book
El camino a un mejor programador” (Spanish only), published Nov 2012 under a Creative Commons license. Also available on Leanpub. It's a collection of technical articles, mostly on software quality and automated tests, written with two colleagues. I wrote three of the articles, about functional languages, common testing problems and about the meaning of software quality.

Spare Time

Pet Projects

RoboHydra

RoboHydra testing tool written in JavaScript, using Node.js. It's a web server that makes it easy to write mock servers to test HTTP-based clients, do exploratory testing, prototyping, etc. Initially developed for an Opera project, later open sourced as it's completely generic. The code is available on GitHub and its tests are written in Buster.

Wiki-Toki

Simple personal wiki system written in JavaScript, using Node.js and the express web development framework. Written to learn about “serious” Node development, plus I couldn't find any personal wiki written in JavaScript I liked. The tests are written using Test’em so they run on the browser and not Node.js. The code is available on GitHub.

NARROWS

Online storytelling system written in Elm and JavaScript, using Node.js and the express web development framework for the backend.

Lyre
Web-based tool to help storytellers add images and music to their stories, including a "map mode" which allows the storyteller to "uncover" an image (normally, some kind of map) bit by bit. I used it mostly to learn basic ES6, TypeScript, basic Canvas usage and some CSS tricks. See the lyre Git repo.
Music Explorer
A small experiment in JavaScript (ES6) to learn and explore music theory, with the aid of a piano that shows scales and chords visually on the keys. I used it mostly to learn a bit more music theory, a bit more ES6, and React. See music-explorer on GitHub.
Photo Memories
Simple Clojure application that connects to the Flickr or the Trovebox API and fetches old pictures to send them via e-mail every week (“in a week like this, x years ago, you were doing this”). It uses a RoboHydra-based mock of the Flickr/Trovebox API server for the tests. See clj-flickr-memories on GitHub.
Cludoku
Simple Sudoku solver written in Clojure/ClojureScript. The idea is not solving the sudoku fast, but solving it using the same techniques a human would use, and show the steps. Most of the functionality is written so that it can be used on the server side or the client side, and on top of it there's a static web UI written in ClojureScript and using React/Om.

Debian Work

Dates

Debian Developer from April 2002 to November 2011.

Highlights

Development of two proposals for a testing framework for dpkg, one using DejaGNU, and the other using Perl's Test::Unit (both integrating C unit tests, using the check library, and functional tests).

Part of the Debian/Ruby library packaging team. Lead developer for the generic Makefile used to compile Debian packages for Ruby libraries and programs.

Maintaining dhelp, a documentation integration program. Rewrote one of the main utilities in Ruby (was C), fixing bugs and adding enhancements like a templating system and making it fully l10nable with gettext.

Part of the Spanish translation team.

Interests

Computers

Functional languages, automated tests and Quality Assurance.

Communities; Wikis, collaboration and documentation; Free Software; software packaging.

Music

Rhythm, progressive rock/metal, jazz and music in general.

Amateur drummer and songwriter; have written some songs and played in some bands; basic notions of other percussion instruments, guitar and bass.

Comics

Expression with a mix of pictures and text.

Use of comics in the workplace (explore usecases, project vision, impact of design decisions on users, etc). See for example the use case comics I made for RoboHydra.