Curriculum vitae

PDF version: J. Pablo Fernández – CV

Profile

I’m a polyglot programmer with experience in more than 17 programming languages and many platforms, frameworks including but not limited to Ruby, Ruby on Rails, Python, Django, Clojure, etc. I have more than 18 years of professional experience programming and I’ve been coding since I was 7 years old, creating and contributing to various open source projects. Around that age I also started my first business, making keychains and selling them door to door. I co-founded two startups and joined a third one for a total of 6 years working asCTO/CEO.

Programming Portfolio: J. Pablo Fernández – Portfolio
GitHub: https://github.com/pupeno
GitHub Awards: http://github-awards.com/users/search?login=pupeno
LinkedIn: https://www.linkedin.com/in/pupeno
Stack Overflow: http://stackoverflow.com/users/6068/pablo
RubyGems: https://rubygems.org/profiles/pupeno
Clojars: https://clojars.org/users/pupeno

Experience

Qredo      CTO      2016-04 → Present
  • Presented the business to 150 people at the Techhub demo only after three days of joining.
  • Launched the product within two months of joining.
  • Trimmed the company to the most valuable employees and contractors, reducing cost and extending runway.
  • Established processes and policies for handling tasks, documentation, leads, documents, etc.
  • Improved culture and morale across the board.
  • Developed the web front end for customers to sign up, pay and manage their account in Ruby on Rails.
Carousel Apps      Director      2016-03 → Present
Carousel Apps      Co-founder, CTO, CEO, Director      2011-11 → 2016-03
  • Co-founded Carousel Apps as its CTO and took the CEO position later on.
  • Managed up to 4 people, including hiring and training: 2 developers and 2 support/marketing people.
  • Set up processes for smooth operations of every aspect of the company, from handling support to handling bank accounts.
  • Doubled revenue while acting as CEO serving hundreds of customers and hundreds of thousands of users.
  • Product market validation (Lean Startup style) for various new products including Screensaver Ninja.
  • Research of Single Page Application development for future projects; evaluating EmberJS, Clojure and ClojureScript developing:
    • Prerenderer: a library to pre-render single page applications on the server for performance and indexing.
    • Free-form: a super flexible library for generating forms in single page applications
    • jar-copier: essential tool to properly integrate New Relic in Clojure applications
    • conman: a database connection manager designed for Luminus and YeSQL.
    • to-jdbc-uri: library for simplifying database connection, specially on Heroku.
  • Screensaver Ninja:
    • Lay the foundation and design of the product, acting as product manager.
    • Started the codebase for both Mac OS X and Microsoft Windows, for the initial proof of concept prototypes.
    • Figured out how to have a separate cookie jar using Apple’s WebKit, something that Apple engineers deemed impossible.
  • Watu, our first product, a multi-tenant application for temporary staffing companies:
    • Developed it from scratch with Rails, Ruby on Rails, PostgreSQL, Solr. A total of 43k lines of code.
    • Took care of DevOps with scalable web servers on virtual machines with rapid provisioning with Puppet, a GlusterFS powered redundant distributed file system hosting 12.8 million files (mostly images) and a custom Solr setup for search.
    • Developed custom backup solutions as none supported our needs.
    • Served more than 100 customers with 1000s of managers for hundreds of thousands of staff members.
Hear a Blog      Co-founder, CEO      2010-04 → 2011-01
  • Came up with the idea, co-founded it as a part-time side-project startup.
  • Wrote half the codebase; in C# with ASP.NET MVC.
  • Startup selected as finalist for Seedcamp Paris.
  • Reached millions of users by narrating: Mark Suster’s Both Side of the Table, Peldi’s Balsamiq’s blog, Jason Cohen’s A Smart Bear, Patrick McKenzie’s MicroISV on a Shoestring and the biggest one, The Daily WTF.
  • All of this on a $2000 budget (total).
Simplificator       Software Developer       2010-03 → 2011-09
  • Developed complex application for data acquisition for environment metrics in Rails 3.
  • Merged several Rails web applications into a single parametrizable one. Currently serving tutor24.ch, homeservice24.ch, etc.
  • Started maintaining, improving and documenting the SimpleBillboard paying system (Rails 2.3).
  • Migrated Berufsbildner’s internal tool from Rails 1.2 to Rails 2.3 and started maintaining it.
  • Developed part of the subscription system for the next version of Evita.ch.
  • Tracked and fixed many nasty memory leaks for http://compass.prohelvetia.ch, a project I never worked on before.
  • Hackdays: Rails app to organize fussball matches, contributions to the Clojure app Clojars.
  • Internal tech talk: Why I love Smalltalk and Lisp
Google       Software Engineer in Test       2007-05 → 2010-01
  • Gmail testing:
    • JavaScript mock of the Gmail server to test the UI independently.
    • Machine learning evaluation tool for Gmail Priority Inbox.
    • Re-wrote the development-mode Gmail starting program, from a 2000-long Bash script into a properly modular Python application. Gmail is a collection of tens of servers of which some are essential and some are optional and different developers run different sets
    • Continuous integration setup.
  • Developed of end-to-end and integration tests for various internal secret applications. Among other things:
    • Predicted dangerous bug which three months latter stopped the development of 53 projects.
    • Increased the realism of a set of tests unveiling at least 3 potentially data-loss bugs.
    • Created web application to keep track of quality metrics of other  products.
    • Set up various continuous integration monitoring dashboards.
  • Tech talks: “Python testing tools”, “Coding in Erlang”, “Introduction to Testing”, “Esperanto”.
Reliable Services       Software Developer       2005-08 → 2007-04
  • Developed Asterisk module to manage users and tasks. Working without a flaw since day 1 due to heavy testing.
  • Developed gateway between an XML protocol and Asterisk’s Manager Interface.
  • Maintained around 10 complex Asterisk deployments with more than 300 phone terminals.
  • Stress and performance testing of Asterisk IVRs installations. SIPp.
  • Added real-time support for agents in Asterisk (5143).
  • Packaged Asterisk and related tools and libraries for Debian GNU/Linux for our own servers, speeding up deployments.
  • Wrote extensive documentation of procedures, installation, maintenance, administration, etc.
  • Performed general system and network Administration.
Freelancing       Software Developer       2005-02 → 2005-08
  • Hosting Map, web application for searching hosting plans.
  • Random Text, web component to show random texts from a database.
  • Getter, web application to automatically download, parse and archival of files.
  • Sentences, random periodic delivery of sentences from database to a text file.
  • Redirector, web component for managing automatic redirection.
  • PicoURL, generate shorter URLs that redirect with accounting.
  • Sustainability/viability study of free instant messaging solutions.
IfPeople       Software Developer       2004-09 → 2005-01
  • Design, set up and deployment of a Plone web site with more than 40 editors requiring custom products.
  • Developed Plone products for:
    • Displaying documents stored in other locations (like a symlink)
    • Speeding up the addition of keywords to documents.
    • Embedding external web sites in a Plone web site.
    • Handling quotes including a portlet for displaying.
  • Helped with deployment of other Plone sites.
Andi      Software Developer       2003-03 → 2003-11
  • Developed of a video editor for set top box using C++, Qt/KDE, transcode, mplayer and Xine.
Freelancing      Software Developer       2002-03 → 2003-03
  • Developed web sites for a painter, a marble and granite shop and an elitist party organizer in PHP and MySQL. The first one run for more than 10 years without an issue.
TecSis      Intern Software Developer & Sysadmin      1999-06 → 2002-03
  • Deployed various GNU/Linux and OpenBSD servers.
  • Developed GUI file usage monitoring application, called KSamStat, for Samba to be able to replace a Novell Netware server.
  • Developed a web app to administrate a library of CD-ROMs including a big medical collection with the goal of also handling magazines, books, web sites and other educational material.
ITPA S.A.       Intern Software Developer & Sysadmin       1998-03 → 1999-06
  • Installed a Linux firewall using ipchains.
  • Developed web administration tool for it in C using CGI in Apache (yes, a web app in C, crazy days!).

Projects, open source libraries and contributions

  • assert_difference: a gem that improves Rails’ assert_difference method in various ways. 44854 downloads.
  • validation_auditor: a gem to track when validations are not passed in a Rails project. 5668 downloads.
  • random_unique_id: a gem for generating small random ids for records in Rails. 5662 downloads.
  • action_texter: a gem to send SMS messages with pluggable backends, with Twilio and Nexmo implementations. 8482 downloads.
  • ubiquitous_user: a gem to generate users on the fly in a Rails project without requiring log in. 16196 downloads.
  • rails_openid: a gem to help authenticate OpenID users in Rails. 4094 downloads.
  • image_button_to: a gem that adds image_button_to and to_function to Rails. Also submitted as a patch for Ruby on Rails itself. 3091 downloads.
  • Keep on Posting: checks your blog or twitter feeds and let’s you know when your not posting as often as before.
  • DNSk9: constantly checks your DNS configuration and informs you by email when something breaks.
  • Sano: health tracker developed over a weekend as an experiment on productivity in Ruby on Rails, blogging as I did it.
  • Dice: dice simulator for Android leading a team of two.
  • Fanterlastic Four: Example of how to use Serlvers to write some extremely basic IP servers.
  • Serlvers: Erlang module to write IP (TCP/IP) servers.
  • SCons Erlang: Extension for SCons to be able to build Erlang projects.
  • File Activity Viewer: Monitors files and shows the new lines almost real-time (visual tail -f).
  • Score Reading Trainer: Improve reading speed of musical scores, written several times it C++, C# and Java.
  • KTTSD: A KDE DCOP plug in based Text To Speech service.
  • Rails: found and fixed a bug when dropping indexes (4809)
  • Python: small patch to Python for skipping tests (1034053).
  • Django: converted Django itself to work with email addresses instead of usernames and maintained it for a while (never published). Added some patches for removing “import *” (14675).
  • Asterisk: real-time support for agents in Asterisk (5143).

Presentations

  • “What is a Macro”, 2015-12-03, Clojure Exchange, London, UK.
  • “What Ruby can’t do”, 2012-07-09, LRUG Monthly meeting, London, UK.
  • “Programming Languages and what they can teach us”, 2006-11-11, CaFeLUG’s CaFeConf 2006.
  • “Lisp, a different Language”, 2005-11-20, 5º Jornadas Regionales de Software Libre.
  • “Lisp, a different Language”, 2005-10-13, CaFeLUG’s CaFeConf 2005.
  • “Multi-platform toolkits for graphical interfaces”, 2005-06-06, Usuaria’s Second National Congress of Free Software.
  • “Architecture of KDE, building an integrated desktop”, 2004-07-15, II Linux Gathering of Litoral, Entre Rios National University.
  • “Programming Qt/KDE, the 1, 2, 3 of GUI programming”, 2004-07-15, II Linux Gathering of Litoral, Entre Rios National University.
  • “Develop faster using KDevelop”, 2004-05-28, Usuaria’s First National Congress of Free Software.
  • “KDE”, 2004-05-22, CaFeLUG’s First Demo Day.
  • “Rapid Application Development with Qt/KDE and KDevelop”, 2004-03-20, CaFeLUG’s Charla Técnica Trimestral.

Publications

  • “Programming in Python part 1” and “… part 2”, Linux Journal, issue 158 and 159, June and July 2007.
  • “An XML Approach to Templating with PHPTAL”, and “… continuation” php|architect, volume IV, issue 3 and 4 on 2005.
  • “KIO: Input and Output with KDE”, Mundo Linux, issue 71, October 2004.
  • “DCOP: Interprocess Communication”, Mundo Linux, issue 70, September 2004.

Buzzwords

  • Programming concepts: Functional, object oriented, multiple dispatch, testing, meta-programming.
  • Programming Languages: Ruby, Clojure, Python, Objective-C, Swift, C, C++, Java, JavaScript, Lisp, Erlang, Haskell, Smalltalk, C#.
  • Libraries and frameworks: Rails, Django, Android, Cocoa, CocoaTouch, Qt, KDE, Gtk+, Gnome, Cairo, libFFI, PyGtk, Twisted, GNUstep.
  • XML: DTDs, HTML 5, CSS 3, XHTML with CSS, DOM, DocBook, TAL.
  • Databases: SQL, MySQL, SQLite, PostgreSQL, OpenLDAP.
  • DevOps: Linux (Debian, (K)Ubuntu, Gentoo), Puppet, Linode, AWS, OpenBSD, FreeBSD, Mac OS X
  • Version control: Git, Mercurial, Darcs, Subversion, Perforce, CVS.

Education

  • 1982 → end-of-time Self-learning of computer science by books, papers, magazines, videos, etc.
  • 2004 → 2007 Attended some university courses as a visitor.
  • 1996 → 2001 Electronics & Electromechanics, Technology Institute Philips Argentina.

Languages

  • Spanish: Native;
  • English: Read, written and conversational;
  • Esperanto: Basic.