I convert ideas into products of all shapes and sizes. My technical strength is unpacking and simplifying complicated systems.
Projects I've been involved with:
The goal of EOS is to be the most powerful infrastructure for decentralized applications. This objective is dependent on high quality Block Producers to serve as the backbone of the blockchain infrastructure.
EOS Asia proposed and was accepted to act as core block producer for EOS:
EOS Asia has an all-star founding team that brings together wizards of China, Europe, United States and South Korea. Our core technical members are backed by Silicon Valley incubator Y Combinator and recognized by well-known industry veterans. With 15 years of experience in server and cloud technology, handling applications for tens of millions of users, we’ll bring the best of of technology and international representation to make EOS the blockchain infrastructure for mainstream applications. Our team has previously built games and applications that are used by tens of millions of people, and we are committed to build DApps that will take EOS technology to mainstream adoption.
My responsibilities at EOS Asia are mentoring, writing tutorials, blockchain development, and collaborating with the team to solve technical challenges.
Responsibilities: Architecture Design, Product Documentation, Power Budget Calculation, Component Procurement, Network Analysis, Prototyping Solutions (Clojure)
Braingate allows tetraplegic patients to control computers and robotic arms with their thoughts. My responsibility was working with the team to design an electronic/software architecture that allowed components to communicate in a way that's resillient, simple to program new experiments on, fascilitates diagnostics, and allows the patient to be mobile.
Some of the design challenges of the architecture involved making trade-offs in the components, network protocols, high bandwidth transfer of sensitive data between components, energy-usage constrains, allowing the system to be troubleshooted by administrators, and allowing the existing researched math models to be used.
Responsibilities: Architecture Design, NIST compliant Infrastructure Setup, Building Services, Internal key management, Integration with 3rd party providers
The goal of Rivetz is to assert within blockchain transactions that "this device, in this condition, following these rules, made this transaction". Currently, Rivetz offers a convinient interface for developers who want to secure their applications using a Trusted Execution Environment. It has worked with Telefónica to create a multi-sig strategy between SIM chip and a phone's secure enclave.
Strikingly / SXL.cn
Tools used: AWS: EC2/ECS/Route53/S3/SQS/SNS/KMS, Docker/Kubernetes, NGINX/Lua, Ruby/Rails, Node.js, React
Responsibilities: Architecture Design, Infrastructure Setup, Building Services, Developer Ergonomics, Hiring, Mentoring
Strikingly is a website builder that allows people to build portfolios, blogs, ecommerce websites, and personal websites easily without ever writing code. Because Strikingly powers millions 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:
- Built and released a highly user-requested feature: automatically generate and provide HTTPS for user sites. This improved SEO and security.
- Reduced user-site server costs by 35% and added high-availability by building a low-latency service that caches responses while serving content to users.
- Improved SEO and page-speed score for millions of user sites by deploying a Lambda function that generates and inlines critical CSS for a user site.
- Designed, deployed, and maintained our CDN infrastructure in Japan, USA, and Europe with AWS ECS. This allowed our user sites to load twice as fast for our international users.
- Extended and refactored our internal user payment system. This allowed us offer more products in different package combinations.
- Interviewed backend candidates, helped on-board new developers, added on-boarding material, and simplified the development setup required by containzerizing dependencies. I also contributed to the hiring initiative by presenting in RubyConf China 2017 and giving speeches for local meetups.
- Improved code contribution practices by writing guides, enforced best practices for having code reviewed, and mentoring developers to improve their proposal submissions.
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, 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.