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.
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
EXPLAINand 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
- Managing my work and organizing priorities.
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)
Stack: Ruby/Rails, Go, React/Flux, MySQL, Redis, AWS: S3/RDS/SQS/EC2
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 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:
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.
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.
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
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.