I come from a really low-income background, and learned how to use technology at a young age to fight against the things holding me down. Growing up, I used to have a ton of terrible prepaid phones, and if you didn’t overclock, or modify, them, they were almost as bad as garbage. When I was 13, I learned Linux and installed Ubuntu so I could build Android ROMs on my phones and upgrade them to make them more usable.
I did all of my Android ROM development on my phone’s hotspot, and had a gigabyte of data each month, so I had to ration it. Downloading Ubuntu back then was about 800 megabytes, so I had to choose if I wanted Linux to code, or do anything else that month. Having to download developer tools through WiFi hotspots versus having quick, high-performing devices, was a big challenge.
My foray into making my phones faster is how I got into open source. When I was 14, before I really knew how to code, I was on GitHub all the time observing the open source world and what it meant to use and contribute to these projects. Around 15, I learned a little JavaScript and started discovering the fundamentals of programming, even though I didn’t really know how to go from logic to application yet.
Things finally clicked for me when I was a freshman in college. Google had really good documentation on Android 2.0 development, which inspired me to release five apps that year on GitHub. These were all small apps that I wanted for myself, like a file-based text editor, local music player, and Android device diagnostics. They weren’t very popular, but they were open, and helped me get the hang of software development and open source.
I always liked the idea of working together as a community to build something greater, rather than just keeping things to ourselves. Why not share, collaborate, and help each other have better experiences?
Discovering an accessible way into an exciting new project
After doing some independent Android app development, I was introduced to AngularJS and modern JavaScript development. I joined some web development agencies, and was an SDE intern for Amazon’s Alexa, and a UX engineer intern at Google between school years.
Senior year, I discovered WebAssembly which was a new binary format that runs on the web. I was really excited about its predictable performance capabilities, as I saw WebAssembly as a key to building high-performance web applications. WebAssembly led me to AssemblyScript a Typescript-like language that compiles to WebAssembly, which was created by Daniel Wirtz. AssemblyScript gave me the freedom to pick up WebAssembly without having to learn an entirely new language.
I only had two classes in my senior year of college, so I started helping with AssemblyScript for fun on the side, opening issues, and becoming friends with Daniel. Most of my early support for AssemblyScript came from building a Game Boy emulator, which I’m really proud of. No one in school teaches you about emulators because they’re a legal grey area in terms of Copyright and IP. I had to seek out the information in IRC chat rooms and learn this dark art of coding to figure it out. There was something very meta about coding computer to computer.
After college graduation, I worked full-time at Google for a year. I was also doing developer relations for the WebAssembly ecosystem and AssemblyScript at night, which began to feel like a second full-time job. I moved on to Fastly for WebAssembly work, because they were quickly becoming leaders in the WebAssembly space! I still stay up until 2 a.m. and sometimes folks in Europe will ask why something’s not working with their WebAssembly. I don’t have a strategy for balancing it all, which might be my downfall one day. For now, I help people out whenever I have time.
Building access to fast, capable technology
Two years ago, I bought my first expensive phone. Before that, I was still buying budget Android devices because they worked fine and I didn’t understand why you’d pay $1,000 for an iPhone. Now that I have one, it makes more sense: Nicer devices allow you to do more things, faster.
When I was younger, I was motivated to learn how to code to improve the performance on my personal devices. But with WebAssembly, I hope it becomes a gateway into making technology more accessible to people with lower-performance devices. I want to give those with limited access a way to make their applications smoother and more usable for the devices they can afford.
I also want to reach out more to newer contributors and maintainers. I learned a lot independently, and it wasn’t until I started going to meetups that I met more people. Even though things are theoretically open, there’s a lot of insider knowledge you might not know unless you’ve been here for a while.
For example, I used to work on the AMP Team at Google, and when I worked there, you’d have to come to a weekly meeting, pitch your idea, and do a design doc in order to make a sizable contribution beyond a typo fix. It’s open, but there are a lot of insider rules that make it hard to contribute. Finding projects that haven’t been established yet is probably the only way around that.
Another core part of open source that they don’t teach in school is licenses. There are certain websites that explain why it’s important to set up common governance, but no one’s going to teach you. I learned a lot about open source just by doing it, which is hard but important, and oftentimes that’s the best and only way to learn.
Measuring success by calibrating your happiness
I measure success by checking in with how happy I am. Do I like what I’m doing? Do I like my team? I’m still not used to this tech life, and there’s a lot of guilt that comes with it. When you get to sit at a computer and work from home all day and, thankfully, make enough money to be more than comfortable, you start wondering if you really deserve it. So many people aren’t in that same position, and I wasn’t for a long time. I do love that we can contribute from all over the world to help each other, and the more I get into it, the more I like it.
The idea of working together as a society to build something greater is awesome because we’re all just expanding on each other’s ideas. But there are a lot of funding and communication problems, and we don’t want people to feel exploited. I don’t personally know how to fix it, but I see the issues, and know courteous and conscientious communication has a big impact. My hack is using emoji. Because even if you say something that doesn’t sound nice, if you put a smiley face on it, they know you mean well.
Then I see someone like Henry Zhu at Babel, and he’s leading this amazing effort to try to solve some of these problems on a larger scale. People outside open source often assume projects are just products. They think some big company like Google made the software, so it’s easy to complain and demand solutions. They don’t realize there’s a high likelihood it’s actually just one passionate maintainer staying up until 3 a.m. to make sure it works.
If coding hadn’t worked out, I probably would have pursued music professionally. On the surface, music might not seem very connected to code, but a cross-pollination of logic exists there: It’s all about timing and precise measurements. I make electronic hip hop music as Aviscerall and Groovy Kaiju (previously Groovy Godzilla). It’s actually recently become a little bit profitable, which is so cool. Sort of like a second career.
Some days I want to make music. Other days I want to code. It’s a balance between the two, and I’m trying to fit it all in right now, so I don’t sleep much. Someone once told me, “Try to be the best you can, but know you’ll never be perfect,” and it really stuck. Because it’s good to strive for perfection, but important to recognize you’ll never reach it. And that’s OK. I know I’m not perfect. You just have to always try your best, and pay it forward wherever you can.