As of 2023, I've been coding for a full 8 years of my life. I taught myself to code in the 8th grade, and several thousand hours later, I've learned a lot in my journey.
The decision to solve hard problems with code was the defining characteristic of my teen years. So defining that when I introduce myself to people, I say that "my story begins in the 8th grade when I first started using code to solve problems." What makes my coding journey such a defining part of my identity? Using code to solve problems changed my life. Code truly allowed me to create things that had a real influence on the world. For the first time, I wasn't limited by my young age, geography, or credentials. With code, I could create websites used by tens of thousands, create tools that made me real money, and create platforms that changed people's lives.
I've avoided the phrase "learning to code" thus far. I hate the phrase "learn to code". I believe that learning to code shouldn't be a goal, but rather, a byproduct of a process I call "building cool stuff"1. When I say this, I mean that I've treated coding less like a skill that I learn—in the same way that I learned to play piano or to read—but as a tool to I use to tackle hard problems. This tool called "code" is best cultivated by using this tool to solve hard problems.
I like to solve hard problems. Some of these problems are best solved without code. Some are best solved with code.
I've been coding for 8 years. Some weeks I haven't coded at all. Others, I've spent 14 hours/day in front of the computer screen. Ever since my dad first mentioned the idea of coding to me in the 8th grade, I've been hooked. By now, I can confidently say I've spent upwards of 3,000 hours coding.
I've split my time using code to solve a number of different problems, ranging from the problem of automating email sales and marketing to simulating quantum computers. I tried to spend most of my time on hard problems that couldn't be solved without code. Yes, I've "learned to code" as part of this journey, but "learning to code" isn't the destination. This page is a compilation of some of the projects I've pursued in my journey.
1I talk extensively about what it means to "build cool stuff" in my blog.
When starting a company, there's a few key ingredients you need, including a good idea, great co-founders, and a healthy dose of engineering ability never hurts. Great companies don't live and die based on the idea's behind the company, but by the founding team behind the ideas. With that said, finding a great co-founder is is both difficult and necessary.
Problem
Out of the nearly 10,000 students at Harvard and MIT, find the 100 students who'd be most compatible to start a company with me (including findname, linkedin, and email)
Solution
1. I pulled the list of every Harvard student with their major and email from the Harvard directory. I got a similar list of MIT students (this was more complex since I don't go to MIT). For students without a listed email in the directory, I wrote a custom program to deterministically find the .edu email for the student using some basic tricks.
2. I pulled all of this data into a spreadsheet. I then created a script that went through each of the students and used the People Data Labs API to find their most probable LinkedIn profile URL based on their first and last name.
3. I then scraped their LinkedIn and placed that data into a spreadsheet in JSON format.
4. I then assigned a score to each LinkedIn profile based on certain attributes I care about in a co-founder, like past startup experience, whether they studied a technical field, and internship experience.
5. I then took all of this data and plotted it in a graph using the open source intelligence (OSINT) software Maltego
Outcome
I was able to find several dozen people with large scores on my LinkedIn Scraper. I reached out to several of them and had great conversations. Some of them even applied to the accelerator I helped run, Prod.
Fun fact: I actually co-founded the AR/VR club and the Augmentation Lab with the person who scored the highest out of all Harvard CS majors... so maybe my algorithm did work pretty well :)
For my robotics team, I noticed that one of the girls was sending out 1,000s of emails by hand to local businesses in order to get sponsorships. She was really successful—accruing around $40k of sponsorships over the course of the year. I wanted to see if code could help us do better, faster.
Problem
Given a search query like "Restaurants in Harvard Square" or "Robotics startups in the Bay Area", send an email to all establishments matching that query.
Solution
Outcome
I ran this program over a bunch of different queries to get in contact with everybody ranging from bakers in Carmel, Indiana to NYC hedge funds. The program worked well enough to secure several hundred responses, dozens of calls, and several sponsorships that amounted to $15k by the end of the week.
Lots of people have a scattered digital presence. They'll have a few articles on Medium and Substack, several instagram posts, and dozens of tweets. Content like this is spread out throughout the web. My goal was to aggregate all of this data so that you didn’t have to go between a half-dozen diffferent websites in order to get a full view of a person’s digital footprint. I wanted to make a beautiful site that took data from a growing list of sites and displayed the content, on a person’s profile. Design was a big part of this project. Above all, I wanted to make sure that this website not only conveyed your content, but was a gift to your eyes.
Problem
Given basic data about a person, compile all their digital footprint into a single interface.
Solution
1. I prompted the user to entire information like their name, Twitter profile, Medium profile, youtube profile, and Instagram account
2. For each of the different sources of media, I created a scraper that would access their public profile information and store it in my Firestore datbase.
3. When a person accesses another person's profile, it would query all that person's content from the firestore database. This eliminated the need to re-scrape a person's digital footprint everytime their profile was accessed.
Outcome
My friend and co-creator Taryn did a Twitter launch of our product. Did our application go viral? No. Was it super fun to build? Absolutely!
Eniac was my first company. I started it in high school. I was a high school senior that made an app to help his his sister keep track of her migraines. In 6 months, I led a team of 7, raised $100k, and had created a product that helped people improve their mental health. It was a wild journey—and the story doesn't end there.
The Beginnings
My younger sister had chronic migraines. Her doctor instructed her to keep a migraine journal and track her migraines each day. Compliance with this regimen was difficult for her, since she was 8 years old. She's Gen-Z (like me) so I knew she liked to use her phone. I created an app for her to track her migraines. It wasn't an app in the traditional sense though. Instead of downloading something from the app store, I set it up as so:
I noticed that a lot of people liked the app—but most weren't using it for migraine tracking. Instead, they were using it to do daily journaling to improve their mental health. What was more amazing was that some people were even willing to pay for the product I made. I set up a paywall and got a few dozen users. I was in high school and had never done a startup before, so at the time, this was really promising to me and sounded like good traction (in hindishgt, it was not). My mom found me a mentor who could help me form an LLC around this idea.
The entire story is too long for this website, but feel free to send me a message and I can go into details :) Long story short, I formed a team of advisors. The work required outgrew capacity of the advisors, so I raised around $100k from some mentors who really believed in me. I hired a team of staff and grew to about 7 people. As a small team, we developed the product, got our first hundreds of users, got partnerships with major organizations, and, hopefully, helped improve a few lives
Getting deep into the code
This was a complex code project. As I was a solo-founder on this venture, I wrote the first several thousand lines of code before I could hire people onboard to help. Here's how it worked:
Text-messaging Interface
Eniac was fundamentally a text-message based application. Users would receive reminders and respond with an emoji.
Online dashboard
As users continued to reply to the daily text messages, Eniac would store more and more of their journaling data. When the user went to their online dashboard, the dashboard would show all their data in an intuitive format.
Outcome
Eniac ended up being what got me into entrepreneurship and startups. Without it, I never would have even joined Prod. I decided to change my position in Eniac from Founder & CEO to just Founder, and passed the torch off to Andrew (the COO at the time) to be CEO. My reasoning behind this can't be explained in a simple blog post, but I'm incredibly pleased with the work Eniac has done, the lives it has changed.
Quidio, like Eniac, was another long-term project that I worked on. The goal of Quidio was to provide a place where users could ask programming questions, add a bounty, and get a great answer.
Problem
If you have a programming problem, you have two options. Firstly, you can try free Q&A sites like StackOverflow and Quora, but these suffer from low answer rates. Even if you have a really pressing question, you have to rely on the good will of volunteers to get an answer. The second option is to use freelancing sites like Fiverr and Upwork. The disadvantage of these sites is that if you're a programmer, you may just need a small part of your site completed and hiring an entire freelancer would be excessive.
Solution
The solution to this problem is a knowledge marketplace. Users post their programming questions online and pay a cost based on the price of the question. The questions are publicly available—so anybody, anywhere can answer it. A user selects the top answer to be the recipient of the bounty. The best way to understand Quidio is just to go and check it out here!
The frontend was made in React and the styling was done with Tailwind. Quidio was hosted on firebase hosting and all of the data was stored in Firestore. The backend was written in Node.js and used Vercel.
I had to implement Stripe for payments. This was complex because Quidio acted almost as a bank, in that answerers on the platform stored their earnings on the site before taking them out and transferring to their bank.
Outcome
Quidio ended up being one of the most fascinating technical and business challenges I've taken on. Building out the platform was not easy. However, the hardest part was certainly getting users onto the platform. I didn't want Quidio to go unused. I would post on sites like Reddit and message people with coding questions, offering to give them Quidio Credit in exchange for them using Quidio as opposed to other knowledge marketplaces.
In 2019, my robotics team had created a robot that could play a game with other robots. The game involved taking a ball, loading and unloading it into the robot, and being able to shoot the ball into an elevated hoop. There were a lot of engineering challenges in building this robot from start to finish, but challenge that called my name was the question of whether we could make our robot completely autonomous. More specifically, I wanted to make it so that the robot would autonomously find a path to traverse a set of points on the field and end where it started—the traveling salesman problem (TSP). But, there's a twist. In the robotics competition, most of the points are moving. This rules out most TSP based algorithms because I wanted my algorithm to be able to create this path even as the points on the field moved.
Problem
Given a set of n points positioned in the x-y plane, create a path that visits each point and ends at the start. The points in the path are moving.
Solution
I decided to use a genetic algorithm to solve this problem. I had played with genetic algorithms before (I had used them for my ISEF project earlier in the year) and I knew them to be reliable. In particular, a genetic algorithm fit the moving TSP problem in a few key ways, including that it could create a "best guess" of the optimal path instantly, and quickly improve upon that, you didn't have to completely restart the calculations once one of the nodes had moved, and the time complexity towards coming up with a best guess was much more reasonable with the genetic algorithm than with more common, deterministic implementations of TSP.
Outcome
I ended up presenting the research I had done on this with some friends at the International Artificial Intelligence Fair in China. It was a really great experience to present to a global audience of industry veterans and researchers with a solution approach I had created, especially as a sophomore in high school. Here's the paper my friends and I wrote on the topic.
You can find the code for this here.
In high school, I went really deep into scientific computing after working in a quantum computing research lab for a year. I'd developed my MATLAB skills and got pretty familiar with reading academic literature. I was interested in doing the International Science and Engineering Fair because a friend of mine had done it and it seemed interesting. I saw a paper describing the fabricaiton processor for solar cells, and they literally just put two plates of chemicals together to get it to work. Something told me
Problem
Solar panels are inefficient. There is a lot of energy lost between a photon striking the surface of the solar panel and the solar panel outputting energy. The chemical microstructure doesn't have the most efficient shape. Solar panels could be improved by changing the microstructure.
Solution
In 2019, I wrote a genetic algorithm to optimize the microstructure. I created a simulation a solar cell where I could calculate it's efficiency based on the microstructure. I represented the microstructure of a solar cell by a graph, where each node in the graph represented a "pixel" on the solar panel. For the sake of computation, each node was connected via an edge to the 8 nodes adjacent to it. The genetic algorithm I created would then generate several possible microstructures, evaluate each of the proposed microstructures, and propagate the features of the microstructure that had the highest solar cell efficiency.
The Process
I ended up writing several thousand lines of code for this. I estimate that this ended up taking several hundred hours. This was, up to this point, my biggest coding project. My high school physics teacher and mentor, Dr. Brandon Hogan, was incredibly helpful as I was developing this project. However, writing all the code alone and directing most of it proved to be a challenge.
Outcome
I ended up presenting the research I had done at the International Science and Engineering Fair in Arizona. You can find the pre-print I wrote up about this here. In the end, after running my genetic algorithm, I was able to develop a chemical microstructure that generated 40% more current than conventional solar cell designs.
You can find the code for this project here.