I design and engineer products

I’m a software engineer who takes pride in building elegant, maintainable, and performant solutions that run smoothly on a major scale. I’ve been shipping production code since 2008.

My portfolio

Crysandrea

screenshot

Stack: PHP/CodeIgniter, Node.js/Socket.io, MySQL, Memcached

Crysandrea was a forum with customizable avatars, virtual currency, and mini-games. It had over 40k users, brought in $xx,xxx/year and a community of players who enjoyed signing in day after day. I led the development, design, and managed the artwork/event coordination. All while in high school.

Eventually, the project lost its steam, and I decided to open source it. It was the first project that gave me some capital and technical confidence in dealing with production websites. Some of the big lessons for me were:

  • Optimizing SQL queries with EXPLAIN and identifying good candidates for indexes based on cardinality
  • Moving logic into queries so that I didn’t have to load every object into memory.
  • Strategies for transfering/deploying with minimal downtime, DNS management
  • Developing complex game interfaces with lots of dynamic data.
  • Tracking down memory leaks in Socket.io (using heapdump)
  • Managing my work and organizing priorities.

Mino Monsters

screenshot

Stack: Ruby/EventMachine, Objective-C, PHP, MySQL

Mino Monsters is a role playing game where you collect and train a team of monsters to battle with other players. The game moved from web-based, to Facebook game, to an iPhone app and hosted >1.5 million players. I co-founded it with my friend Josh, and together we became the youngest y-combinator founders.

The responsibilities of a founder vary a lot, but my focuses as the CTO were:

  • Interview technical candidates
  • Develop game features
  • Handle high traffic growth

The biggest challenges were re-architecting the server side to be compatible with each platform change, and handling the player traffic at our scale of growth. This became a crash course in engineering management, startup strategy, metric analysis, and designing highly scalable systems (e.g: understanding threads/processes/load-balancers)

Teespring

screenshot

Stack: Ruby/Rails, Go, React/Flux, MySQL, Redis, AWS: S3/RDS/SQS/EC2

Teespring is a platform where you can easily create and sell custom apparel. During my time there, the platform made $750,000/month with millions of orders to source, print, and fulfill.

My responsibility was identifying the most critical internal issues and building the tools to optimize those processes. I created an improved administration backend that customer service agents used to manage accounts and address campaign issues. I also created a fulfillment backend that allowed us to scale with dozens of printers across the US, provided flexibility for bulk or one-off orders, showed late jobs at a glance so the internal could triage, and provided metrics for business to analyze the performance of each fulfillment partner. Each of these panels were designed by talking with the people who would use it, identifying priorities, and iterating based on requirements as the company grew.

The development team size was over 20 developers. Some of the important lessons I learned through working with many developers, large datasets, and high traffic throughput:

  • Proficiency with Git
  • Setting up data replication and sharding in Rails with Octopus
  • Micro optimizing SQL queries
  • Principles of maintaining and architecting large code bases. Additionally, experience with breaking a monolithic application into microservices
  • Troubleshooting and techniques for handling large queue sets in Redis/Sidekiq
  • Tracking memory footprint in Ruby code to handle issues like swapping and memory leaks
  • Aligning deployment of separate applications and schema changes to prevent issues like the two generals problem
  • Techniques for caching pages with dynamic data. (e.g: setting up http level caching on campaign pages and loading ajax to check for auth status)

Mojotech

screenshot

Mojotech is an agency that specializes in web and mobile development. They have an exceptional team of engineers that take a disciplined approach to software engineering (which includes scientists from NASA and the U.S. Navy). When I joined Mojotech, my goal was to gain a broader experience by working with many startups solving different technical problems.

While I was there, I helped transition developers to Spacemacs, taught programming workflows (and ways to optimize them using elisp), went to conferences, and contributed to internal projects in Clojure. I worked on 3 client projects during my time there:

Countr

screenshot

Stack: Ruby/Rails, PostgreSQL, React/Redux, Memcached

Countr is an online marketplace where people shop, accrue a score for buying and sharing, and use that score to get discounts. The items listed were targetted toward a high-end audience, so a requirement when building the website was a high degree of front-end polish. The website is a single page application (configured with Webpack) using React to render, Redux to handle state, Mocha to test examples, and jsverify to test properties.

Collect Now

screenshot

Responsibilities: Architecture, technical risk assesment, project prioritization

Collect Now connects specialized lawyers with businesses who need legal help claiming invoices. My responsibility was to lead the technical aspects of the project discovery. This involved assessing areas of technical risk, prototyping, estimating, clarifying, suggesting trade-offs for solutions that would be faster to implement, and settling on a technology stack according to their needs.

Braingate

screenshot

Responsibilities: Architecture design, product documentation, networking analysis, prototyping (Clojure)

Braingate allows tetraplegic patients to control computers and robotic arms with their thoughts. My responsibility was pairing with Mojotech’s CTO to come up with an architecture for how components communicated that was resillient, simple to program experiments on, fascilitated diagnostics, and allowed the patient to be mobile.

Some of the design challenges of the architecture involved making trade-offs in the component protocols, high bandwidth transfer of sensitive data between components, accounting for energy-usage constrains, allowing the system to be troubleshooted by administrators, and allowing the existing researched math models to be used.

Mentor @ Firehose project

screenshot

Responsibilities: Mentoring junior developers, code reviewing

The Firehose project is a paid (~$8,500) educational program that helps students go from beginner to employable developers in under a year. Students need mentors. That’s where I come in. Students would come with questions about technical details, career advice, and architectual suggestions. I would check up on the progress of assigned tasks and helping them through areas they were blocked on.

In addition, I also servered as a mentor at the Brown University Hackathon: Hack@Brown. My responsibilities were to find projects that were stuck on a technical problem, help them through it, then find another technical problem. Rinse and repeat for 24 consecutive hours.

Pictures of me sharing ideas