Ruben
Ascencio

Skills

Data Stores

Most of the projects I’ve worked on use PostgreSQL. I've also worked extensively with CouchDB. In the past, during my PHP and ActionScript days, I used MySQL. More recently, I’ve been using Elasticsearch for analysis and search applications.

Back End

Although I consider myself a Rubyist, I've worked in Node and PHP projects as well, and can easily adapt to new technologies when the project calls for it.

Front End

Lately, I've been crafting UIs with React or Stimulus. I usually write vanilla JS (ES6) but I’ve also used TypeScript before. I have experience with a lot of different JS frameworks, from Backbone to Ember, and even Angular. I’m also proficient in CSS (big fan of Grid and Flexbox) and its different preprocessors.

Mobile

I've done a fair amount of native development in Objective-C, mostly for the iPad. I also briefly worked on a native Android application, so I can find my way around but I'm not an expert. When it comes to hybrid apps, I've worked on a couple of Ionic apps, as well as a more DIY approach using Rails for the backend and Ratchet in the frontend.

Relevant Experience

Nov 2023 – Present / Senior React developer / AdTheorent

Oct 2018 – Nov 2023 / Full Stack Ruby + React developer / AdQuick

  • Built the main app filters’ bar using React and Redux.
  • Revamped the cart and checkout process (backend and frontend) to allow booking ad spaces multiple times from the same plan/campaign.
  • Created an alternate view for the main app, replacing the map with a list for easy keyboard-navigation and favoriting units. Used React for the keyboard events.
  • Implemented the ability to book custom items (add-ons) using Stimulus and StimulusReflex (websockets).
  • Created a UI so the users could customize their Excel reports, from adding custom headers/rows and values, to colors and column groups. Used Stimulus for all the front-end logic.

Jun 2017 – Jun 2018 / Full Stack Ruby developer / Waggl

  • Migrated our main app to use Postgres on production while maintaining compatibility with MySQL for custom in-house deployments.
  • Worked on generating async downloadable reports using delayed jobs and S3.
  • Enhanced internal tooling as well as setup scripts for customer accounts.
  • Developed major features using a Backbone/Rails stack.
  • Worked on migrating our API to v2 based on JSON API and using React for the frontend.

May 2014 – Jun 2017 / Ruby and Mobile developer / Amco

  • Built a Continuous Delivery tool for our iOS apps on top of Travis CI and Rackspace, using the Github API to retrieve build version details.
  • Lead the development of a hybrid app for iPad using Rails for the backend and Ratchet in the frontend.
  • Part of the mobile team during two major releases of one our native iOS apps, contributing new features and fixing bugs.
  • Developed a prototype for connecting multiple Android tablets using Wifi Direct and socket connections for real-time interactions between peers.
  • Built a Customer Analysis dashboard using Elasticsearch for calculating scores based on different metrics and then allow filtering by score ranges or exact match.

Jun 2013 – May 2014 / Senior Ruby on Rails Developer / 3DRobotics

  • As a member of the small team in charge of the online store—the only direct-sales channel at the time—I made a lot of customization work in our store to support international shipping and product bundles, among other challenging tasks.
  • I contributed to the open source community by improving the Spree gem itself, as well as some of the extensions.
  • I created the Spree Audited gem for recording changes to the most crucial parts of the store.

Jul 2012 – May 2013 / Ruby on Rails Developer / ConnectBy

  • Coded this small social network and had a lot of fun adding internationalized push-notifications—oh yes, that was hard.
  • As an interest-based social network, for this project I made use of Elasticsearch to facilitate topic lookups and then sorting posts by relevance. Being this my first production app using ES, I'm very proud of the outcome: an uncomplicated yet powerful interface.