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: Docker/Kubernetes, NGINX/Lua, Ruby/Rails, Node.js, React
Responsibilities: Architecture Design, Infrastructure Setup, Building Services, Developer Ergonomics, Hiring, Mentoring
I’m currently at Strikingly, a website builder that allows people to build portfolios, blogs, ecommerce websites, and personal websites easily without ever writing code. Because Strikingly powers tens of thousands of websites across the world, every problem it solves has to be systematized to scale.
Some of the things I’ve been responsible for during my time here:
- Generating SSL certificates dynamically and managing certificate handshake depending on the request host.
- Analyzing, generating, and managing cache points in a request chain. The service responsible for caching sites reduced server costs by ~30% and let us offer higher availability for user sites.
- Handled the integration with AWS Lambda to generate critical CSS for a user site. This improved SEO by increasing page speed score.
- Cross-region deployment of services to decrease latency for international users with AWS ECS.
- Extended the payment system which let us offer new products in different package combinations.
- Interviewed candidates and became involved in the hiring initiative by presenting in conferences.
Responsibilities: Coordinate product development with fully remote team, manage junior developers, design and setup infrastructure, backend/frontend product development, setting up data metrics
NomadPass is a platform designed that allows digital nomads to find high quality locations and meet fellow traveling professionals. For businesses, it provides a service that organizes retreats and business-ready locations to offer remote work for their employees. As a social community with users and customers all around the world, the development involves a lot of geographic-based features and dev-ops setup for low latency wherever the users may be.
My role at Nomadpass was as a senior developer in a fully remote position. I mainly helped the project stakeholders prioritize against technical realities, mentored less experience developers, reviewed code, handled architecture design, and more importantly, built the product from
rails new NomadPass.
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:
Responsibilities: Architecture Design, Product Documentation, Networking Analysis, Prototyping Solutions (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.
Responsibilities: Architecture, Technical Risk Assesment, Priority Management
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.
Stack: Ruby/Rails, PostgreSQL, React/Redux
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.
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)
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.
Consulting / Mentorship / Speaking
Aside from some local Hackathons, I served 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.
I also did some speeches at local Ruby meetups in Providence, and was invited to present at the 2017 Ruby Conf in China.
In between mentoring and speaking, I also take on short-term consulting work to help startups solve urgent scaling or tech-debt problems.
Responsibilities: Lead product development for backend and frontend, Coordinate with Stakeholders
Stack: PHP, MySQL, Redis, Apache, Linux
“Accelerate Product” was a tool designed by the financial group ACG as a flagship product to supplement their financial consulting business. The platform provided a service to record and broadcast high-quality video interviews that allowed a marketplace of investors and hedge funds to accelerate the typical due-diligence process. This allowed investors to vet a broader range of investment options faster, and allowed entrepreneurs seeking investment to have a wider reach. The platform went offline in 2014.
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: 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.