A Year of Code

Jackie Luo
12 min readFeb 17, 2016

A few weeks ago, I marked a year since I started coding every day. Last year, for me, began with a breakup. I remember crying in bed at midnight on New Year’s Day, a few minutes after ending a three-year relationship with someone who’d been my best friend since I was eleven. It felt unimaginably final, and even though I knew that it was the right decision, it didn’t feel that way.

This story’s not about that. It’s about a year I spent learning more than I thought was possible and doing more than I could have anticipated. But I didn’t have any expectations at that point — life just happened.

GitHub Streak: 0 Days

I made my GitHub account in August 2014 to start working on personal projects. I hadn’t taken my first class in computer science yet, a trial run to see if I even wanted to add another major on top of philosophy. And it wasn’t until three solid months of not understanding how to use Git (or, really, how to use the command line at all) that I made my first commit.

Toward the end of January, I decided to start committing daily in an effort to learn more and learn faster. I had spent the month depressed, a word that I don’t use lightly — my twentieth birthday passed, with little to no fanfare, and I needed a distraction that wasn’t sleep or Netflix. I started by doing practice programming problems, hundreds of them.

The opening talk for DevFest 2015. There I am, looking intently at my laptop!

Just a few days later, DevFest began. It was Columbia’s hackathon run by ADI, starting with a week of workshops. I went to “Building Apps with Flask” and learned about using the Python microframework for web development, but I was impatient—frustrated that, after one talk, I didn’t get everything already. At the overnight hackathon, I realized how much I still didn’t know when I tried to build a web app and halted after creating a front page. It was four a.m., and I headed back to my dorm and went to bed.

GitHub Streak: 30 Days

ADI opened applications for Labs, a group of people building projects to learn outside of classes with mentorship and structured engineering practices. I applied on a long shot, with no practical experience beyond my failed hackathon project, and was astonished to receive an email telling me that I’d been selected. I started working with a team on Sentiment, an app to determine the sentiment on campus based on students’ online activity. We had no idea what to do, really, since none of us had any real experience with web development, but we started with Google and StackOverflow (the way you start any programming project, obviously) to learn how to build a web scraper that pulled comments from Bwog.

Spring break came. My friends went to Cabo, South Beach, Nassau — even my family headed to Cancún — but I couldn’t imagine spending the week partying on a beach with a thousand drunk college kids. Instead, I stayed home alone and worked on finishing my DevFest project. It’s not cool to admit, I realize, but being fully immersed in learning and building that first web app — and finally getting it to work! — was the best feeling I’d had in months.

GitHub Streak: 102 Days

I spent the next two months interviewing for summer internships, and that came to a peak during finals week in May. I had last-round interviews downtown virtually every day and was beginning to wonder if I would even find a place to intern that summer. When I got the first offer from a company that wanted me for engineering, I skipped (yes, I know) in the middle of Union Square. Anyone who’s ever met me knows that I’m never that emotional in public, but it was, in some ways, the first evidence that anything I was doing mattered.

Mid-internship! We were big on orange.

I had all but resolved to take the internship, since I had followed the company for years and really liked the engineer I’d met, but I still had a few interviews scheduled and decided to go anyway. One of the companies was Percolate, which I had dismissed because it was an enterprise company. When I went to the office, though, the people I met and what they were building — a beautiful product with thoughtful design, unlike any I’d seen in enterprise before — really interested me. A week and a half later, I said yes.

The summer started well enough. I’d just returned from a trip to Mexico with a few good friends, and it was the evening before I flew back to New York. So much was ahead of me — my first engineering internship, a West Village apartment with friends, art gallery openings and outdoor movie screenings, fizzy drinks at cocktail bars, maybe even dating.

But, instead, that night turned into a disaster as I heard from my ex, still my best friend at the time, and was hit with news that definitively crushed any progress I’d made over the past few months. I didn’t sleep and boarded the plane, numb, the next day. Private as I was, I hadn’t talked about the breakup with anyone but my roommate for the past six months, and I couldn’t imagine moving into my new apartment alone that day. My friend Alice (who was living with me that summer) was out of town, but I told her everything, and she sent one of my friends downtown from Columbia to stay with me. I couldn’t sleep again that night. The next day, unfortunately enough, was my first day at Percolate.

Awful as the first week was, I was compelled to meet new people, be friendly, learn — it was an ideal way to stay focused and, at the very least, pretend to be happy. There, everything that I learned was new. I was tasked with building the mobile automation framework for Percolate’s iOS and Android apps, without ever dealing with either mobile or automation. And, since it was relatively uncharted territory, few of the features we needed had been implemented anywhere. Meanwhile, out of work, I made a point of going to new restaurants, barre classes, open bar nights at clubs — with the hope, I guess, of proving that my summer hadn’t been ruined. In a lot of ways, it worked. I finished the framework for Percolate by August and, during my last week, demoed it for the mobile team.

GitHub Streak: 203 Days

In the middle of the summer, I had interviewed to be a part of Square Code Camp, an immersion program for twenty women in computer science to fly to San Francisco for a week and work with Square engineers in workshops, talks, and a hackathon. I was accepted (!) and, unsure of what to expect, headed to California in mid-August.

I tend toward skepticism when people talk about life-changing experiences, so bear with me, but, in a lot of ways, Code Camp was one. The people at Square took time and effort beyond all reasonable measure to help us learn. Tim, a Rails engineer, would stay at the office with our hackathon team past midnight to work with us on our project. We met people like Jack Dorsey, Sarah Friar, Alyssa Henry, who sat with us, fielded questions, and gave us advice. And, crucially, we met each other — it was the first time I’d been around so many women interested in what I wanted to do, and we formed closer bonds than I thought possible in five days. We spent the last night watching Clueless, with twenty college-aged girls piled into a hotel room like the kind of sleepover I hadn’t had since I was thirteen.

A few of the brilliant women in Code Camp V.

GitHub Streak: 236 Days

I was back in school for junior year. My friend Anshul and I had registered for HackMIT, and we decided to form a team with two others, Piyali and Annie. On September 19, we boarded a bus to Cambridge, brainstorming ideas on the way (all terrible). Once we arrived, we started working on, inexplicably, a panda cam that would tweet whenever a panda on a zoo’s livestream started moving.

Twelve hours into the project, we realized that it was, first, really difficult, and, second, really useless. With just twelve more hours, we pivoted to a second idea that had started, in hindsight, to look pretty good — a way of providing analytics for the real world, the way actions and interactions are quantified online. The project, Sensei, used computer vision (Kalman filters to track movement in video) and security camera footage from stores to provide metrics like number of visits over time, with the potential to generate information like which customers were most loyal. We submitted and waited to demo our project to the judges.

The HackMIT crew, with our dramatically big check.

To our disbelief, we made it to the finals, then placed in the top three — a surreal experience fueled by the adrenaline rush that comes from being awake for two days. The bus ride back to New York was long, and we were exhausted, but I couldn’t fall asleep — I kept thinking of what we’d built and how it had been impossible just two days earlier.

GitHub Streak: 252 Days

I was browsing Product Hunt in October when I saw N1, an open-source, extensible email client by a startup called Nylas. The preview was intriguing, to say the least. I had been struggling with Mailbox, Dropbox’s now defunct mail app that had lost pretty much all meaningful functionality in the last few months of its existence, and I put myself on the waitlist for an invite to N1. I didn’t think too much more of it.

Some of my favorite people in the Columbia Organization of Rising Entrepreneurs (CORE) at our NASDAQ bell ringing.

The next week was chaotic. On the morning of a midterm I had to take, I was in Times Square, ringing the bell to open NASDAQ. Just a few days later, I went to Start @ a Startup, a conference in New York with a small, tight-knit group of two hundred attendees, where we heard from founder after founder, telling us to take risks and accelerate our growth by working at small startups. I headed home to Houston for the Grace Hopper Celebration of Women in Computing just the next week, and that was the polar opposite — twelve thousand women in a convention center, with a career fair populated by remarkably elaborate booths for companies like Google and Facebook.

Before the conference, a few companies had asked me to interview, and I had an interview with Apple on the first day. It wasn’t a company that I had particularly wanted to join (I was looking for a startup, a few hundred people at most), but the technical interview went well, and my interviewer asked me to return the next morning for a second round.

The next day, I chatted with a head of the team for half an hour about what I loved about Apple, and, at the end of the interview, she stood and said, “Sounds great. Let’s get your offer letter!” I had gone through so many arduously long interview processes at that point that I thought she was joking and followed her out of the interview booth, only to be handed a physical offer letter in a folder full of paperwork. They gave me a month to decide, and I told them that I would consider it if they let me interview for a position in machine learning, a field in which I had no experience but thought I would still grow in a company that large.

GitHub Streak: 269 Days

A week or so later, I finally got my invite to try N1. I downloaded it, and I was struck by the clean interface and the developer-oriented nature of the project. Hours after I tweeted about the app, I was checking my email when I saw one from someone named Michael Grinich. He introduced himself as the co-founder and CEO of Nylas and asked if I wanted to interview with the company. At the time, I had been thinking about taking a leave of absence from Columbia to intern for the spring, but I didn’t have too many strong leads for companies willing to take someone full-time in the middle of the year, so it looked like the perfect opportunity.

I wanted to work with really smart people building a cool product, and the team at Nylas was exactly that. The first few interviews went well, but the last part — a code test I was supposed to finish in an hour and then review with Michael over the phone — was harder. When I didn’t get a call, I started wondering if my code was so tragically flawed that he didn’t want to deal with the awkwardness of rejecting me over the phone. I was relieved that he’d decided to send an email instead.

The next evening, I was at a session for Almaworks, a student-run accelerator that some of my friends in CORE had started, when an unknown number called me. I answered, and it was Michael — calling to extend an offer. There are probably still Snapchat videos somewhere of my reaction (confusion/excitement/shock) to that call; it was the end of October, and suddenly I was thinking of leaving school and moving to San Francisco in two months.

The opening bell ceremony for Square’s IPO. Hey, Jack Dorsey on the left!

GitHub Streak: 297 Days

In November, I received a cryptic email from a Square employee, inviting me to be a part of a “special event” in New York with a select group of Code Camp alumni and Square merchants. I signed an NDA and waited to hear more. I had read the news when the company filed to go public, but it wasn’t until I heard back that I realized that what they were asking me to attend was the opening bell ceremony for Square’s IPO. An insane, once-in-a-lifetime experience that was about to happen to me for the second time that month.

The big day was a blur of excitement and anxiety. My friend Terri, another Code Camp alum who went to NYU, waited with me in the crowd, unsure of what to do as press swarmed to photograph Jack Dorsey. The bell ringing ceremony was structured as a transaction, reminiscent of the first one (a flower bouquet purchase) ever processed through Square. As Jack narrated what was happening live for the people watching on Periscope, the countdown began, and — there it was, a public company listed on the New York Stock Exchange, and we’d had the opportunity to be a part of the day.

GitHub Streak: 388 Days

And, now, we’re here. I moved to San Francisco in the middle of January and started at Nylas a month ago, and I accepted an offer to work with Apple’s applied machine learning team, where I’ll be this summer. This year, against all odds, has been one of the best of my life. And it hasn’t been about external validation or a linear path to getting better. It’s been about the feeling of learning to build something, creating it, then moving onto another area where I know nothing again. It’s been about failing a hundred times (again, literally, for the hundred rejections for internships I received over the year) for everything that does work. It’s been about thinking I was going to be fine again, only to have an ill-timed chain of events tip me back into crying in my roommate’s bed at three a.m. — and then, after six, eight, ten months, starting to be fine.

An exceptionally perfect California day in Dolores Park with part of the team at Nylas.

Someone special I knew wrote, “The price we pay for living full authentic lives is occasionally having our hearts broken.” I think that that’s true. Pain isn’t beautiful or poignant, but sometimes, if you can get through it, it contextualizes what comes later. A year is a short time. You never think that that’s long enough to substantially change what you’re capable of doing, but what you choose to do every day eventually shapes who you are. A year ago, as much as I loved tech, I wasn’t sure I’d ever want to be in engineering or study computer science. Since then, I’ve learned six programming languages, taken seven CS classes, and worked on twenty-odd personal projects. There’s nothing intrinsically meaningful about a GitHub streak, but, somewhere along the way, I started remembering what it felt like to be myself.