Esteban Manchado Velázquez

Personal Information

Name

Esteban

Surnames

Manchado Velázquez

E-mail Address

emanchado+cv

Homepage (Spanish)

http://demiurgo.org

Blog

http://hcoder.org

Twitter

https://twitter.com/estebanm

GitHub

https://github.com/emanchado

Nationality

Spanish

Date of Birth

8/8/1977

Gender

Male

Profile

Multifaceted software engineer with over 10 years of experience. I can work as a developer, quality assurance engineer or project manager, always adapting to the needs of the team. I focus on scripting languages (especially Python, Perl and Javascript), but also know others.

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, ready-to-use packages and reusable libraries. I have years of experience designing and writing web applications but have also built some cross-platform GUI-based applications (using Qt, WxWidgets and Tk). I am also very experienced 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

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 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. The repository is at BerliOS, in the fotonsi project (WebSVN view) and includes several interesting utilities.

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 (broken link as of Nov 2010) 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 A2Basic A2Basic B1Independent

Computer Skills

Operating Systems

Linux (advanced user level, medium administration).

Windows (medium user level, basic administration).

Programming Languages

Javascript, Python, Perl, Ruby, Clojure, PHP, UNIX scripting languages (sh, bash, sed, awk). Basic notions of Scala, C, C++ 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

Talks

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.
iCities, 25/04/2009
"Made In Canarias, Tecnólogos Canarios en centros mundiales de referencia". Round table about people from the Canary Islands working in big projects abroad.
Debian packaging course, 11/2008
4-day entry level course on Debian packaging.
LanzaOS, 24/11/2006
"TWiki: plataforma de colaboración empresarial" ("TWiki: enterprise collaboration platform"). Entry level talk about TWiki and use of Wikis in enterprise environments. It covered several uses of TWiki for collaboration purposes, Wiki culture and deployment tips.
ULPGC, November 2006 (6-23)
"Ruby on Rails, desarrollo web sobre ruedas" ("Smooth web development with Ruby on Rails"). Entry level 40-hour crash course on Ruby and Ruby on Rails. I gave five days, 15 hours total: the Ruby language introduction (four days) and the introduction to automated testing, covering Rails unit and functional testing, and browser functional testing with Selenium (one day).
Fotón S.I., 20/10/2006
Introduction to automated testing with Ruby and Rails. Introductory talk/demo on Ruby automated testing, covering Ruby unit testing, Rails unit and functional testing, and browser functional testing with Selenium.
I Encuentro de S.L., 18/09/2006
"Disección de una aplicación Rails" ("Dissecting a Rails application"). Introductory talk/demo about modifying real, complete Rails applications, at the I Encuentro de Software Libre de la ULL.
I Encuentro de S.L., 18/09/2006
"Un vistazo a Rails: La plataforma de desarrollo web de los samurais" ("A look at Rails: the web development framework for samurais"). Introductory talk/demo about Rails, at the I Encuentro de Software Libre de la ULL.
ULL, 19/05/2006
"Ruby on Rails: una revolución en el desarrollo web" ("Ruby on Rails: a revolution in web development"). Introductory talk/demo about Ruby and Rails, at the University of La Laguna.
Jabber, 5/5/2006
Una introducción a Darcs ("Introduction to Darcs"), via Jabber. The linked document was prepared from the conversation log by the attendees.
ULPGC/OSL, March 2006 (15 - 24)
Ruby on Rails crash course for the "Oficina del Software Libre" ("Free Software Office") of the Universidad de Las Palmas de Gran Canaria.
La Caja, November 2005 (22 - 24)
Intermediate level Rails seminar for La Caja de Canarias, one of the most important local banks in the Canaries.
LanzaOS, 14/10/2005
"Demostración de Ruby on Rails" ("Ruby on Rails demo")
LanzaOS, 13/10/2005
"Formatos abiertos y programas libres" ("Open formats and Free Software"). Talk about open formats and their importance, software patents, and the role Free Software plays in the spreading of open and better formats.
FiCIT 12/8/2005
"Ruby: un lenguaje dinámico moderno" ("Ruby: a modern dynamic language") for the "Fiesta Canaria de la Informática y Telemática" ("Canarian Computer and Telecommunications Party"). A 3-hour tour de force through most Ruby features.
ULPGC/GCC, JJTT 12/5/2005
Ruby on Rails demo for the "Jornadas Técnicas de Internet" ("Internet technical days"), organized by Gran Canaria Campus, a student organization in the University of Las Palmas de Gran Canaria
ULPGC/GCC, JJTT 6/5/2004
"La charla más divertida sobre patentes de programación" ("The funniest software patents talk"). Talk about the dangers of software patents, presented in a funny way.
FiCIT, 22/8/2003
"TWiki: trabajo en grupo, libre" ("TWiki: free teamwork"). Introductory and intermediate talk, showing both Wiki culture and history, and a little TWiki-specific programming.
laspalmasparty, 21/12/2002
"Jabber: mensajería instantánea y más" ("Jabber: instant messaging and more"). A mostly user-level introduction to Jabber, with a couple of references to its uses for developers (besides instant messaging per se).
FiCIT, 4/8/2002
"La comunidad de los programas libres" ("The Free Software Community"). An introduction to Free Software, both from the software point of view and from the human point of view.
ULPGC/GCC, JJTT, 15/5/2002
"Debian: un proyecto organizado por internet" ("Debian: an Internet-based project"). Introduction to the Debian organization, with some final notes about software patents.
Hispalinux IV, 16/10/2001
"PICA: Una solución inteligente para administrar sistemas". Talk explaining PICA, a system administration program.
Hispalinux III, 12/10/2000
"Libertad para el RTF" ("Freedom for RTF"). Talk explaining my final degree work, an RTF parser written in C++, using design patterns; and RTHC, an RTF to HTML converter, built with that library and "l10n"able via gettext.
ULPGC/GCC, sometime in 2000
Basic HTML crash course given for the Gran Canaria Campus student organization.

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.
Essay about technology
"Reflexiones sobre la tecnología", from Nov 2002
Shell programming tutorial
"Manual de programación en shell", from Nov 1998
Linux survival guide
"Curso básico de supervivencia en Linux", from Nov 1998
VI tutorial
"Otro Curso de VI Más" ("Yet Another Vi Course"), from Dec 1998

Spare Time

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.

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.

Flickr Memories
Simple Clojure application that connects to the Flickr API and fetches old pictures to send 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 API server for the tests. See clj-flickr-memories on GitHub.
Old Opera extensions
I have written several Opera 12 extensions, basically for fun and as a learning experience. The only relevant one is Meme panel (GitHub), not so much because of what it is (a simple client for the MemeGenerator API), but because it uses RoboHydra for the tests.
Bubug

Simple TODO application I built mainly for myself. It uses a fair amount of Ajax to make the UI as smooth as possible, and it supports postponing tasks and assigning a contact person for each task. Built with Merb and jQuery for the Javascript. The code is available on BitBucket. Unfortunately it's obsolete now, it doesn't run on recent versions of Merb (now Rails).

Interests

Computers

Functional languages, OOP, DSLs.

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

Music

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

Amateur drummer and songwriter; currently playing with two bands (jazz and rock); 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.