I spent last summer at home, feeling somewhat dissatisfied with the work I was doing. I was working on making web apps — and I liked what I made, I even thought it could’ve been important — it just felt like I was trapped inside this box of web development: It’s the only thing I’d ever known, and I didn’t know if I was capable of doing other things even mildly well. Because this is all I thought I could do, all my new ideas somehow turned out to only be ideas for web apps — and that sucked!
I was gonna turn 20 the next year, and it felt like I should work to get out of this rut and try something new. Doing different things would be the only way I’d get different ideas.
Around then, I was on a call with Krish, and was told that he recently met the best engineer he’d ever seen — and that this guy was working on making robot butlers. I looked up the startup, called Prosper, and spent an hour playing a game they made that explored the robotic future they wanted to build. It was pretty fucking cool — how many other companies build games to explain their vision? I was intrigued, and Krish offered to introduce me to Shariq, the founder at Prosper. With only 3 engineers, they’d built a super low cost teleoperated humanoid robot that could… do things. It was wild — there’s so much stuff that had to be done to make this happen. This is the kind of work I wanted to be able to do. So, I asked Shariq if I could visit Prosper, and he said yes!
I spent 2 weeks in November in London, visiting Prosper — and came out of it inspired af. This team was incredibly smart and worked very hard. After the 2 weeks, Shariq offered me an internship to come back and work at Prosper! I was incredibly excited — I came back to Berkeley and got through finals, decided to work at prosper in the summer, and also to take a gap semester.
Why the gap? I could have just continued school in the spring, but this felt like the perfect time to try working on another thing I’d never done before.
Soham had been pushing me to do more challenging work for over two years now. He found me on Hacker News when I was in 12th grade, and we’ve stayed in touch since. He left behind a life as a computer science PhD student at Cornell to lobby the Indian Government for more widespread rapid COVID-19 diagnostics, and after that, he built PopVax, a mRNA vaccine company in Hyderabad. He had no training in biology, and now is running the 50 person team working on the frontier of vaccine development.
I thought it could be fun to work in biology — I’d finally understand what Seyone talked about all day, and I knew someone who was on the cutting edge. Soham agreed to let me intern at PopVax, and I flew over to Hyderabad, where I’d stay for the next 2 months.
Popvax is a mRNA vaccine company based in Hyderabad, funded by Vitalik Buterin’s Balvi fund and the Bill and Melinda Gates foundation, and they’re currently working on building a vaccine that is capable of neutralization across the betacoronavirus genus of pathogens.
I spent the first couple weeks at PopVax building a web-app that could organize all of the data generated at PopVax in a sensible way — everything would be backlinked, and you could create views of all these different entities to see what’s happening in the company — for example, a a protein entity could be linked to a RNA entity, which was linked with a DNA entity — and after a dozen more steps was linked to a mouse which had the protein inside it! It was pretty cool work, and something I thought could turn up the productivity in the company a fair amount. While working on the web-app in the day, I spent all my nights reading literature in protein engineering and ML for structure prediction. I was the only software engineer at PopVax at the time — and after getting this web app to a useful point + once I felt like I understood enough biology, I started working on the product directly.
I designed several candidates for antigens that would elicit specific antibodies capable of neutralizing the actual virus. This was guided by very little literature, but there were some great codebases to build on top of! Essentially, I wrote software to make better protein antigens for vaccines, and it felt like attempting to hack biology.
Writing software to create tiny little proteins that could someday go inside humans and maybe save their lives?! Who would’ve thought I could even work on that? I wrote some cost functions that added constraints to a design pipeline which used AlphaFold to create feasible looking proteins, which made candidates much more promising: for example, generated designs now never overlapped with the structure of the antibody (which would straight up prevent binding), and we could create multimeric displays of proteins spaced evenly from each other.
PopVax was moving at a speed I thought could simply not be achieved in biology — all kinds of whacky proteins were designed every week, and tried every other week in vivo. Stuff that was an entire PhD project just 5 years ago, we could try in a month! The pace of the whole field was INSANE. There was new research coming out every week that made us reconsider the way we were doing things.
My time in Hyderabad was spent almost entirely either in the hotel or at the PopVax lab — I was either reading or working — and it was great! Spending ~14 hours a day on learning biology stuff was super doable because it’s so fkn fascinating. The more you learn the more questions you end up having. I also did not know anyone in Hyderabad, so work is all I did lol.
These months gave me a lot of confidence. I was able to come into a field I knew nothing about, read a lot, talked to a bunch of smart people, and within 2 months, add some value to it. Just because a field is several decades old doesn’t mean you can’t grok enough in a few weeks!
Hanging with Soham taught me a lot. He made things happen so fkn fast, and I was honestly in awe of how he managed the company (great post he wrote on the founding of the company). Like I mentioned earlier, he had no real training in biology and taught himself enough to be the creative force of the company: he was the one having most of the ideas. He was incredibly generous with his time — I asked him a lot of questions, and that went a long way in helping me be less intimidated by all the new stuff everywhere. Being less intimidated is probably the best first step when working on something new :)
After PopVax, I spent a very fun month traveling around in Japan. Then, I flew to London.
Prosper Robotics is making a partially automated robot butler that can cook, clean, and take care of a bunch of chores.
Prosper was pretty insane. I constantly felt like I was working on sci-fi! I spent the first few weeks working on business development — building a website, (trying to) produce videos, and talking to potential customers of a service we were planning to launch. The idea was to get a profitable business going with human service, and then soon add robots to it! Wasn’t able to make much progress with it, but was pretty fun and very different than anything I’d worked on before!
After that, I was working on the robot’s software with one goal: make it faster for the robot to do tasks. It was the first time I worked in Unity — and it felt like a very different kind of programming than I was used to: the feedback loops were way slower — a build took 10 minutes, and it was often very unclear where a bug was. It is incredibly easy to debug web apps today — the state of tooling is incredible, and the feedback loops are very fast. So this was a pretty crazy switch — I had to think very clearly, since it was almost always worth it to get things right on the first go.
I re-wrote the inverse kinematics on the robot to make it much more fluid for teleoperators — this meant searching more diverse solutions without increasing the time the search takes, approximating and interpolating towards solutions, doing quaternion math to calculate joint angles, and creating UI to guide teleoperators towards good solutions that are within the joint limits of the robot. I spent a few hours on a weekend at the British Library just rotating each joint on my arms in weird ways to figure out the vector math for how joint angles could be calculated, and got a whole lot of concerned looks. It was really fun actually solving problems before I wrote code: I spent a single digit percentage of my time working on this stuff actually writing code, which is very different than the amount of time I spend writing code when doing web apps (at least 70%! There’s not that much to figure out).
I ended up almost always getting things wrong on the first go, and spending way more time than I should have on debugging — but I did get better every week I worked on this! Next up, I spent a couple weeks optimizing the UI for teleoperating the robot: things like adjusting the scale of objects, adding virtual cameras, dynamically positioning cameras so that things feel more intuitive, editing shaders to make sure things are rendered in the correct order. I got pretty used to working in Unity at this point, and was able to get through most things pretty fast and felt good because I didn’t waste too much time on debugging!
For the last few weeks of my internship, the team moved to Shenzhen (faster to source stuff to build a new version of the robot). I spent those weeks building a realisticish simulation of the robot and trying motor control strategies — trying to find fast trajectories to move the end effectors to a given set of co-ordinates while minimizing vibrations. I threw myself into something new again: the world of physics simulations. It took me a whole week from when I started to even get a realistic simulation going — but things got exciting after that. I read up on a bunch of RL stuff, learnt more from conversations with Shariq (he worked on OpenAI’s dota 2 bot!) — and started trying a bunch of motor control strategies. Nothing conclusive, but some promising ideas by the time my internship ended :)
Shariq was an awesome mentor. I was super inspired by the way he approached all kinds of challenging engineering problems: it started with how hard can it really be to do this?
He let me work on stuff I was not very productive on, and was very invested in my learning. He didn’t handhold me on a bunch of stuff, even though that would have saved him a lot of time compared to guiding me the way he did. Because of that, I think I’ve come out of the internship being much much better at debugging and just thinking clearly than I was going into it. I feel much more like an engineer!
London was also great! I love a city with a functioning public transport system. Theatre was awesome, food was delicious, and the museums were fascinating. I also had a bunch of homies from high school who were around, and made it a very fun time.
I had the best time, and did the most traveling I’ve done in the last 8 months: I was in Aurangabad (home), Hyderabad, Japan (Tokyo, Kyoto, Sendai, Hiroshima, Nagoya, Kanazawa, Fukuoka), London, Shenzhen, and Hong Kong. Passport been collecting the stickers xD
I have more ideas than ever, and I’m more excited than ever to build things. I also feel so much more equipped to make the most out of school: curiosity goes a long way, and the last 8 months have helped a lot with figuring out what kind of stuff I’m really curious about.
I’m heading back to Berkeley this fall to dive deeper into biology — I want to get better across the stack. Both PopVax and Prosper were very full-stack companies — a lot more things than you’d expect were done in-house, with surprisingly little resources. Understanding a system from a full-stack perspective seems like a superpower: you end up having much better ideas and make more sound decisions.
Maybe taking a gap semester should be the default, and you should only be in school if you’re intensely curious about something!