About Me

Technologies

Some of the things I like/don't like to work with:

  • My passion right now, and the area where I believe I can deliver the most value, is in improving performance and scalability of API services, such as backends for mobile applications, JSON APIs, etc. Ideally, those that are written in Ruby on Rails, but I'm fairly agnostic to platform on this. I've always loved working on performance, so if your service is having issues due to high load, or you are expecting a large traffic increase, I would love to help!
  • My favorite language is, by far, Ruby. At the moment, it's the one I have the most experience in and, all else being equal, the one I favour for new things.
  • Ruby on Rails is hands-down the best server-side Web Application Framework I've found so far. Nothing else that comes even close to the level of productivity and agility that Rails brings to the table.
  • That said... I'm pretty language-agnostic, prefer to use the right tool for the job, and I pick up new languages pretty quickly. Most recently, I've been using Go, Crystal, a little bit of Elixir, and of course, lots and lots of PHP, which I was hoping I wouldn't be touching by now, but somehow that skill remains ever relevant.
  • I tend to favour pure-API backends, or "old-school" server-rendered web apps that post back to their backend. Again, nothing else comes even close to being that productive / flexible.
  • While I used to be a full-stack developer, and I know Javascript "the language" very well, I'm quite behind on the "modern toolchain". ECMA6, Node, anything using npm... I haven't quite caught up. So I'm a pretty weak frontend developer these days.

I'm experienced in:

Besides the languages and environments mentioned above, I have considerable experience with:

  • Performance: I have a deep understanding of performance at the database level, network level, application and web layers. I also have considerable experience with stress / load testing methodology and tools, and profiling both CPU and Memory usage.
  • Web Security: Deep knowledge of SQL Injection, Cross Site Scripting, Cross Site Request Forgery, Input Tampering, and methods to secure the code against these. Good understanding of cryptography techniques and how to apply it to secure user information in the database and in transit.
  • Observability and Production Readiness: I'm experienced in using the right combination of logging and metrics to make systems easy to observe, monitor, alert when they're not behaving as expected and debug when things inevitably break. This is also complemented by appropriate use of queues, circuit breakers, etc, to try and keep things from falling over when load increases.
  • Money management sites: I've single-handedly created 2 escrow sites, and 4 sites whose main function was being an intermediary between two parties in a transaction, managing other people's money. And of course, I work for a payments company today. I have a solid accounting background, and extensive experience in the database design and the code functionality to make robust, auditable systems. The code I wrote in just the last 2 years of my freelancing has managed money movements for over $100 million USD.
  • Payment Processors: I'm a PayPal Certified Developer, having integrated dozens of websites with both PayPal Standard and Direct Payments, plus their recurring billing and automated mass payments APIs. I've also integrated, in different sites, a large number of other payment processors, both the "regular gateway" type, and the "redirect to us and we'll send back something weird" type.
  • Memcached and Redis: I have experience with memcached and Redis, having used both heavily. For Redis in particular, I'm very proficient in making the best use of each of its data structures as they fit each problem. Still haven't found a real use case for HLOGLOGs. One day...
  • ERPs and ERP-like systems: I worked for many years in a reseller/localizer of one of the largest ERPs worldwide (MAPICS XA / Infor XA). This gave me a deep understanding as to how ERPs are structured, and how to properly design gigantic databases, to make systems flexible, configurable, and resilient.
  • Experience with music industry standards: DDEX Asset Description and Reporting.
  • A lot of archaeological stuff no one cares about anymore, but which is useful for perspective sometimes: Tons of experience with VB5, VB6, ASP Classic, AS/400 systems, RPG/400, CL/400 and others.