Scroll To View More
Leonardo Andrés Garcia Crespo, JavaScript Developer in London, United Kingdom
Leonardo Andrés Garcia Crespo

JavaScript Developer in London, United Kingdom

Member since January 1, 2014
Leonardo is a lifelong fan of technology and is always trying to learn something new while keeping up to date with his favorite technologies. He has a very proactive personality, and he's always building something. He is currently heavily working with technologies such as React and GraphQL.
Leonardo is now available for hire

Portfolio

  • Twitter
    React, React Native Web, Redux, GraphQL, Node, Service Workers, React Router
  • Match.com
    JavaScript, React, Fluxible, React-Intl, React Virtualized, Node, GraphQL...
  • Progistix Worldwide (via Toptal)
    React, Redux, React Router, Algolia, Mapbox, Python, Flask

Experience

  • JavaScript, 8 years
  • React, 4 years
  • Redux, 3 years
  • GraphQL, 3 years
  • TypeScript, 2 years
  • Apollo, 2 years
  • Relay, 1 year
  • React Native, 1 year
London, United Kingdom

Availability

Part-time

Preferred Environment

Browser, Visual Studio Code, CLI

The most amazing...

...thing I've built is a mechanism to specify data dependencies and make the necessary REST requests inspired by GraphQL, for a single-page application

Employment

  • Senior Software Engineer

    2018 - PRESENT
    Twitter
    • Drove adoption of React inside a team when I joined, implementing the integration with the previous framework and working through migrating several parts of the app.
    • Initiated collaboration with external teams, participating in discussions, document reviews, and new idea proposals.
    • Worked with high impact and visibility even when working remotely for teams in very different time zones (London to San Francisco).
    • Owned several entire workstreams and followed through to completion with all of them.
    • Became the go-to person for numerous areas of the app such as React, GraphQL, and testing, helping others in the team and proposing improvements on the usage of those.
    Technologies: React, React Native Web, Redux, GraphQL, Node, Service Workers, React Router
  • Senior Software Engineer

    2016 - 2018
    Match.com
    • Served as the technical go-to person in the team, both for desktop and mobile web apps.
    • Designed architecture to declaratively specify and co-locate data dependencies with components, inspired in GraphQL.
    • Proposed GraphQL as a technology to adopt and rebuilt several parts of the app on it in order to gain adoption. Gave several classes to onboard the team on it. This decision drove adoption of GraphQL in the company as the main API.
    • Designed an i18n solution using react-intl, co-located translations, and separate locale bundles.
    • Drove adoption of TypeScript and led the migration from plain JavaScript to TypeScript in order to increase confidence in the code.
    • Spearheaded app performance tuning, code splitting, and webpack configuration.
    • Drove proposals, discussions, and meetings to specify our own internal standards and practices.
    Technologies: JavaScript, React, Fluxible, React-Intl, React Virtualized, Node, GraphQL, TypeScript
  • Senior Front-end Architect

    2015 - 2016
    Progistix Worldwide (via Toptal)
    • Developed a full SPA with React, React Router, and Redux.
    • Worked with highly complex forms, maps, and interactive visualization of results.
    • Performed queries with algolia, working with their SDK and creating an autocomplete component to show the results.
    • Developed a mechanism to mutate the state with Redux in a way that it doesn't cause any side effects and allows time travel debugging.
    • Worked with the team as a technical referent, designing the architecture for the overall app and for complex pieces inside.
    Technologies: React, Redux, React Router, Algolia, Mapbox, Python, Flask
  • Senior Software Engineer

    2014 - 2016
    Power Supply Collective (via Toptal)
    • Proposed using React, Redux, and immutable data structures for creating the UI.
    • Refactored the UI into reusable components sharing same look and feel.
    • Created a component catalog to visualize the UI elements in the web app.
    • Aided in design decisions for improvements to the user experience.
    • Developed an iOS application using React Native with a feature subset for mobile.
    Technologies: Ruby on Rails, JavaScript, jQuery, React, React Native, Redux, Immutable.js, PostgreSQL
  • Full-stack Developer

    2013 - 2015
    SCVSoft
    • Developed an internal suite of gems that built up a framework to quickly develop internal tools. The suite went from authentication to deployment, look and feel, and front-end components.
    • Led a team of eight developers, working in three different internal tools at the same time.
    • Contributed back to a couple of open-source projects both in bug fixing and bug detection as well as feature addition. Encouraged the team to do so as well.
    • Moved legacy tools with Rails 2 to full Rails 3 + asset pipeline + Angular apps, increasing responsiveness and overall performance along with code quality.
    • Contributed to the internal Puppet provisioning scripts and provisioned boxes for new apps.
    Technologies: Ruby on Rails, AngularJS, Capistrano, Puppet, MySQL, SMACSS, Twitter Bootstrap
  • Developer

    2014 - 2014
    StudyBloc (via Toptal)
    • Integrated Quill WYSIWYG editor with React into a reusable library.
    • Supported math expressions and editor inside the WYSIWYG editor.
    • Supported source code with syntax highlighting in the editor as well.
    • Integrated the editor with the look and feel of the application.
    • Contributed back to Quill editor to fix bugs and propose improvements.
    Technologies: JavaScript, React, Quill, MathQuill
  • Developer

    2014 - 2014
    Soma (via Toptal)
    • Built the entire new checkout workflow in Angular, making it a single page and with a way to easily configure the order of steps.
    • Increased the test quality of the product by increasing coverage and reducing usage of mocks in tests, and attempting to test the real thing as much as possible.
    • Participated in design discussions with the client, trying to find the best solution.
    • Contributed to an open source Ruby gem that the app used as an admin interface.
    • Contributed to make better documentation for the newcomers in the project, by documenting and expressing the business motivation of the core classes in the app.
    Technologies: Ruby on Rails, MongoDB, AngularJS
  • Full-stack Developer

    2012 - 2013
    SCVSoft
    • Proposed the use of Backbone.js to create a rich UI with high interactivity.
    • Tuned the data fetching mechanism for real-time forecast info from dozens of wind farms for different clients.
    • Optimized queries and caching for most recent data visualization, with acceptable latency in the client.
    • Encouraged intensive client-side test coverage together with actual HTML and JS interaction.
    • Contributed to bug fixes on the HighCharts library that we used to draw the charts in the browser.
    Technologies: Ruby on Rails, PostgreSQL, Backbone.js
  • Web Developer

    2012 - 2012
    Teracode
    • Led a team of three developers all working remotely from different places in the world.
    • Created a Groupon-style app based on a Facebook app with high usage of the Facebook API.
    • Automated deployment via Ruby scripts to achieve "one-click deploys."
    • Proposed usage of Backbone.js to achieve more interactive UIs that are also more maintainable.
    • Spearheaded adoption of GitHub for development workflow and made lots of code reviews in the pull requests.
    Technologies: ASP.NET MVC, Backbone.js, Facebook API
  • Web Developer

    2011 - 2012
    Teracode
    • Moved the existing app from ASP.NET to ASP.NET MVC, thus increasing overall the performance of transferring the state over the wire.
    • Made the application update asynchronously with Ajax calls where it was necessary instead of full-page refreshes.
    • Proposed several design improvements to the user workflow.
    • Increased testing coverage of the existing application.
    • Improved NHibernate usage and thus improved overall app querying performance.
    Technologies: ASP.NET MVC, SQL Server
  • Developer and Co-founder

    2010 - 2011
    Wisibee
    • Founded my own company with a friend.
    • Led full development of the product—a site for design contests, similar to 99designs.
    • Learned about the startup lifecycle: incubated at a startup accelerator.
    • Worked with supporting multiple payment methods, like PayPal and a local payment gateway called MercadoPago.
    • Deployed the application, configured the boxes to run it, and was in charge of the DB backups and uptime.
    Technologies: ASP.NET MVC, MySQL, NHibernate

Experience

  • GraphQL Tag Babel Macro (Development)
    https://github.com/leoasis/graphql-tag.macro

    Babel macro that allows to use the GraphQL tag without adding a new Babel plugin.

  • GraphQL persisted document loader (Development)
    https://github.com/leoasis/graphql-persisted-document-loader

    Webpack loader that allows the system to persist a GraphQL document and inline the document ID.

  • React Sound (Development)
    https://github.com/leoasis/react-sound

    A React component that plays a sound when rendered.

  • Open-source Contributions (Other amazing things)
    https://github.com/apollographql/react-apollo

    I've contributed heavily to React Apollo, adding TypeScript support and participating in discussions to add the render props APIs (Query, Mutation and Subscription components).

  • Amplified (Development)

    Personal project. Makes sharing rehearsals within your band easier. Allows to organize your rehearsals and comment on rehearsed songs while listening to them. Developed with Ruby on Rails, Backbone + React, and PostgreSQL.

  • JS Conf UY (Other amazing things)

    Gave a talk at JS Conf Uruguay about using functional reactive programming with a library called Bacon.js.

  • Meetup.js — JavaScript Meetups in Buenos Aires (Other amazing things)
    http://www.meetup.com/Meetup-js/

    One of the founders of the JavaScript Meetups in Buenos Aires, currently running meetups every month—both participating in organization and also giving talks from time to time.

  • Fnky.js (Other amazing things)
    https://github.com/leoasis/fnky

    A just for fun functional library for JavaScript that allows you to create functors, applicative functors, and monads among other things.

  • Makery.js (Other amazing things)
    https://github.com/leoasis/makery.js

    JavaScript library for creating objects for testing "factory-style". API inspired by Machinist, a Ruby Gem.

  • ActiveRecord::Futures Gem (Other amazing things)
    https://github.com/leoasis/activerecord-futures

    A Ruby Gem that enables ActiveRecord to execute multiple queries in a single round trip.

  • Challenge Accepted (Development)

    SCVSoft contest that required the competitors to pass 5 challenges by resolving them either in Ruby or JavaScript, and send the code to an API via POST and a user token. We developed that API using Ruby with the Cuba framework, and stored the data in Redis.

  • Elempleo.com (Development)
    http://elempleo.com

    One of the first projects I ever worked on. A job searching portal that is used by millions of people in Colombia and other countries. Developed with ASP.NET.

  • React.js View State Management Tutorial (Publication)
    One of the biggest and most common problems in front-end web development is state management. A developer is constantly focused on keeping the state object in sync with its view and the DOM representation. Users can interact with the application in many ways and it's a big task to provide a clean transition from one view state to another. We will see how using React JavaScript library can help us reduce application complexity and offload UI transitions from our application.
  • React.js Best Practices and Tips by Toptal Developers (Publication)
    This resource contains a collection of React.js best practices and React.js tips provided by our Toptal network members.
  • Toptal Mentor
    Leonardo is a mentor in the Toptal Global Mentor’s Program. This program is a partnership between Toptal and General Assembly to provide high quality mentorship for students from minority and low income backgrounds who are looking to begin their careers as professional software engineers. Leonardo shows commitment to diversity in tech by mentoring a General Assembly student every week for a year, covering everything from coding tips and tricks to advice on making it in the industry.

Skills

  • Languages

    HTML5, CSS3, SQL, JavaScript, TypeScript, GraphQL, Ruby, Sass, Haskell
  • Frameworks

    Express.js, Redux, AngularJS, Ruby on Rails (RoR), Relay, React Native
  • Libraries/APIs

    React, React Router, Immutable.js, Highcharts, AngularUI, Backbone.Marionette, Backbone.js, React-intl, React Native for Web, Facebook API, GitHub API
  • Tools

    GitHub, React Apollo, Chrome Developer Tools, Trello, Flow, Apache Solr, VirtualBox, Git
  • Paradigms

    Object-oriented Programming (OOP), Agile Software Development, Functional Programming, Event-driven Programming, Functional Reactive Programming, Concurrent Programming
  • Platforms

    MacOS, Mac OS, Ubuntu, Windows, Linux
  • Other

    Apollo, Macbook
  • Storage

    MySQL, MongoDB, PostgreSQL, Microsoft SQL Server, NoSQL, Memcached, Redis

Education

  • Bachelor's degree in Systems Engineering
    2002 - 2011
    Buenos Aires University - Buenos Aires, Argentina
I really like this profile
Share it with others