I'm typically forward looking and barely take time to reflect (not to say those two things are mutually exclusive). However, last year was a especially unique and crazy, so in honor of that (and the new blog design) I decided to sit down, reflect, and write something.
This will be roughly chronological going through the big events that took place last year, and will conclude with some books, lectures, and ideas that had a big impact on my thinking and worldview.
At the beginning of the year it seemed like I finally arrived at job happiness. In 2015 I helped start the JS Infra team at Facebook. The motivation for building this team came from my experience building the React Native Packager where I noticed that the infrastructure that we're basing our development toolkit on was poorly maintained, bug-ridden and in some cases poorly designed with no hope without a full rewrite (or replacement).
JS Infra sailing off-site. Not in the photo: Christoph Pojer (which was taking the photos). And our manager Tom Occhino
Although the JS infra team was deeply technical and in some cases working on problems a few layers removed from the developer experience, we always thought it's best to start from the user experience and work our way backwards. For instance, I remember talking to someone from the Parse team who told me about a metric they used to make sure their tools are easy to get started with: TTH, time till hello world. So when the time came to think about how people would get started with React Native, it was obvious that the CLI needs to be robust enough to guide the user all the way through to see something on the screen within 5 minutes of installation!
react-native init AwesomeProject cd AwesomeProject react-native run
Although our team wasn't perfect, we had immediate impact starting with the first half in our existence. We worked on and released Babel 6, which took Babel from being merely a transpiler to being a platform and a compiler toolkit. We switched over Facebook's entire JS infrastructure to use it. And not only used it for transpiling it was now being used by teams throughout the company for things like i18n, accessibility, optimization and so much more! We fixed Jest and it became a few order of magnitudes faster. We continued improving on the React Native packager which became a central piece of infrastructure at the company (both as a development tool and as a build system).
Unfortunately, not everyone at the company believed that our team's existence is justified. There was a big push to work on performance (which I thought was justified since the website was very slow). So there was a lot of pressure on us to dump everything that we're working on and focus a 100% on performance.
I didn't agree that what we're doing and the performance goal weren't aligned. But in the end I lost the office politics game and our team was all but dismantled. Luckily, I had a great manager, and great support from many other people at the company. So I was given a chance to find something I could be as passionate about. But to be honest, my passion had already drifted towards an old but growing side project of mine.
(A new and improved version of the team has now reassembled and are building amazing things for the JS community -- like the Yarn package manager!)
Starting Repl.it (the company)
In 2015 Haya Odeh and I planned to give an old side project of ours a face-lift -- mostly just for fun. We knew that some people were using Repl.it but when we looked, we where surprised to see that there are 10s of thousands of people using it a month. We started researching, visiting our users, and doing surveys. We found that our biggest impact was on physical classrooms across the country and the world. (Which was not that big of a surprise).
Haya talking to students using Repl.it at the Mountain View High school
Repl.it was always at least partly about education. Back in school, I was displeased with the fact that every class I went to had to spend hours installing software. And I watched the instructor struggle to get everyone's compilers and editors setup (with matching versions). I started dreaming up a site where you open a new tab and start coding. And in 2011 that's what we built and not only did it help with that, we open-sourced the underlying execution engine (built with emscripten) which went to on power many learn-to-code websites (most famously, Codecademy, which I joined as the #1 employee).
One thing lead to another, and my brother Faris joined us in working on the project and we ended up not only redesigning the website, but we added user accounts, built a cloud-based code execution engine and many smaller features. We also started planning a totally new product on top of our core offering -- a classroom product that automates many of the tedious tasks we noticed a teacher has to do to manage their classroom. Things like submitting homework, giving feedback on homework, and tracking student progress.
We incorporated in May, 2016 with the mission to make programming more accessible. We're building powerful yet simple coding interfaces for programmers and students. And we're building a platform for teachers that want to bring programming to their classroom or reach a wider audience online.
We rushed to build our first major product as a company. After tons of research and a tight feedback loop with a handful of teachers it was ready for the release just before the fall school season started. We launched in August and much to our surprise that put us on an exponential growth curve. Professors at universities like CMU signed up and used us to teach "Math Background for Machine Learning", followed by MIT, Cornell and many others. Bootcamps like Hack Reactor and App Academy used us for introductory courses. And high-schools across the US, UK, Japan, and elsewhere in the world started signing up.
The student environment
We're so lucky to be in this part of the world -- Silicon Valley is a place where immigrants can come in and build companies. We're double lucky to have found the support and mentorship of amazing people. Repl.it is now backed by Bloomberg Beta and Reach capital and I could've never imagined that the founder/investor relationship could be this good. We're still starting out and the journey is only 0.0001% complete (Facebook likes to say it's 1% complete), but whatever modest success we achieved we couldn't have done it without the support and mentorship of Roy Bahat, Wayee Chu, Christina Cacioppo, Chris Mather, and Ly Nguyen.
Repl.it in 2017
We spent the last quarter of 2016 focused on the core REPL product -- adding more power yet maintaining the simplicity. We added support for third-party libraries, implemented a debugger, and live file updates. You can see more on our blog.
Live file updates
We also grew the team and hired our first employee. This month, we'll be moving to our first private office and we're hoping to add more engineers to the team soon. We have a lot of interesting technical challenges, and we'd like to think we're working on an important mission, if that's interesting to you then consider joining us :)
This year we're going to continue being heads-down focused on product and technology. We have a lot of interesting features in the pipeline. But most importantly we want to find ways to have our teachers, students, and engineers collaborate with each other and build an awesome community.
Thoughts, books, etc
Coming to terms with Physicalism
You don't notice how much outdated belief you have in your head until you sit down and examine them. In a recent talk, Alan Kay describes how every 3-5 years he sits down and writes down all his beliefs in an effort to update them.
This year I did this for my worldview and my philosophy on the nature of the universe. Physicalism is the thesis that everything is physical. That means -- among many other things -- that your mind/soul is a product of the physical processes in your body, and it obeys the laws of physics just like an apple falling from a tree. The implications here are big and many. It also could be scary, but luckily I was aided by a few books that I recommend to anyone who wants to come to terms with this.
To build an AI you need to understand and describe how the human mind works (and how it often doesn't). This book helped me in a few ways:
- I now understand pervasiveness of cognitive biases and fallacies. In the words of Richard Feynman: "You are the easiest person to fool".
- Using a mix fables and science the author gently guides you from the default dualist belief (mind is separate from the body/world) to a purely physical world.
- Presents different ways to think about some of the seeming absurdities of Physicalism (for example, are we all just cogs in the unwinding clock that is the universe?).
The book has all sorts of tips and tricks to help you face up to the truth. One of my favorites is the "Litany of Gendlin":
What is true is already so.
Owning up to it doesn't make it worse.
Not being open about it doesn't make it go away.
And because it's true, it is what is there to be interacted with.
Anything untrue isn't there to be lived.
People can stand what is true,
for they are already enduring it.
This book layed out the basis for a hopeful and optimistic Physicalist worldview. It gives people (or universal explainers in general, as the book calls them) a more privilege place in the universe. Yes, we are "chemical scum" that evolved via Darwinian selection but our reach can be infinite. And our journey has just begun towards the infinite creation of knowledge.
The concept of "self" seems to be a hack. Evolution gave us this abstraction because it seems to simplify a lot of things -- most importantly, self-preservation (so we can take care of ourselves until we procreate). This idea started forming in my head in 2015 after reading Marvin Minsky's Society of Mind, which plausibly breaks down the mind into modules and presents it as if it's a big piece of software.
Consider how split brain patients seem to have two sides of their brains behave somewhat autonomously (as if it's a different person). In this video the patient's right hemisphere is shown a word (via his left eye) but he couldn't say what it was. However, when he closed his eyes and started drawing he was able to draw a pan (which is the word that he saw).
This is just scratching the surface, earlier this year I started reading Reasons and Persons by the late Derek Parfit (died a few days ago). It includes all sorts of thought experiments that all but destroys the concept of self. I couldn't finish the book because it was too hard and jargony. However, luckily, I found a course on YouTube titled Death that draws heavily from Parfit's work on personal identity. And this completely shattered how I thought about my self and my place in the world.
I'm now more accepting of the fact that I and everyone I know and love will die in the not very distant future. I feel more connected to other people. And finally understand what it means to have an impact in the world (improve lives and reduce suffering).
(For a quick primer on the subject I recommend Wait But Why's "What Makes You You?" essay).
Thanks for reading.