about

I'm based in Montreal. Came from Peru to study mechanical engineering at McGill, stayed for the city. Now I mostly do software.

I used to train boxing, now I'm working on handstand pushups. I speak spanish, french, and a little bit of japanese.

If you want to hire me for a project, get in touch. Contact info in my resume.

professional

I've worked with these people:

pico.chat

A lot of friends moved away. When we wanted to have a quick teleconference-type meeting, all existing solutions (Skype, Hangouts, Facebook, etc.) failed us. Also, I go out of my way to avoid supporting half the companies running them, and the other half doesn't have interoperability with people outside their own walled garden. So I made a little virtual chatroom for us.

It uses Haskell/websockets on the server-side; TypeScript, Mithril.js and WebRTC on the client-side.

forum

An old-school style discussion forum with a few very modern features.

Basically a database, fronted by an API built on Django REST Framework, with a Mithril.js frontend.

miniPNM

PNM stands for "Pore Network Modeling".

During my Master's in Chemical Engineering, I worked on Hydrogen Fuel Cells (PEMFCs), modeling the impact of various manufacturing variables on cell chemistry (lots of linear algebra) and quasi-static fluid-flow within microporous membranes (lots of graph theory). The end-goal was to allow PEMFCs to start under cold weather conditions.

It all started by porting Matlab code to Python, but ended with the full Python scientific stack (NumPy, SciPy, Matplotlib, Pandas) as well as Qt and VTK.

Some of my work was incorporated into the first release of OpenPNM, which netted me my first and only citation.

notes

A bunch of collected writings, best-of lists, and little coding snippets.

Essentially a pure-python (so that I can use PyPy!) static-blog generator, with a pure-python pseudo-markdown parser.

puzzles

I got into programming via puzzles, and still try to partake when I can. I usually compete as "RodericDay".

hachimaki

A little game engine project, which I used to learn some game physics and some TypeScript.

jGap

A japanese learning tool. This one takes prompts and translations from /r/NHKEasyNews, and turns them into SAT style fill-in-the-gap exercises. Basically a homework generator.

It's not mobile friendly, but it's not a pleasant tool to use on mobile anyway. I'm working on something that uses the same source files, but for a different purpose.

simplebixi

Montreal has a great bike-sharing program called Bixi. Finding out where nearby bike stations are located, and whether have parking slots or available bikes, is a cinch with its mobile application, or with other apps like Transit. However, I'm not such a huge fan of apps, and I try to avoid installing them if they are used for very little. There's also the official website, which has a map in it, but it's completely unusable (especially in small form-factor phones like the iPhone SE).

This uses the Bixi API, Leaflet.js, a very restricted subset of OpenStreetMap tiles (served via HTTPS from my server, to ensure the connection is secure so that it would work on Safari/iPhone), TypeScript, and some OSX system tooling that I discovered while ImageMagick was being annoying, that does a pretty good job at transforming SVG to PNG.

timer

My first project in programming! Still gets near daily use from me. A programmable interval timer for working out in sets.

Safari on iOS does not play sounds from the browser, unless the app is "installed" as a Progressive Web App. I learned a whole bunch about those, to be able to use this one on the go.

fairshare

A minimalist cost-splitter. A few friends and I participated in a hackathon hosted by MasterCard in Fall 2015 and, with a far more polished version of this core, we won an all expenses paid trip to San Francisco, where we faced-off with a dozen teams from all over the world.

The team dismantled before we did anything real with it, mostly due to the existence of Splitwise and Venmo and so on, but I decided to keep a super stripped-down version because it's useful sometimes.

Uses Mithril.js.