• How to have healthier debates

    A fun fact that you may or may not know about me, is that for about 13 years of my life, I was involved in some sort of competitive debate or speech extracurricular activity. When I was in the sixth grade, I joined my middle school’s afterschool debate club, where we each took turns delivering short speeches, taking any position, on a topic that the teacher pre-selected each week. In high school, I got involved with Mock Trial, Model United Nations, and Model Congress, traveling multiple times a year to competitions and conferences. In college, I joined and eventually became...

  • What I learned from running doodling workshops online

    Back in mid-March, as announcements rolled out across North America asking people to stay home, I returned to my parents’ home in New Jersey to start my new job. (Why did I need to be physically in the States to start a remote role, you may wonder… and that is a long, boring story about immigration and work status, that I won’t tell right now.) When I arrived back at my childhood home, with only my parents, grandparents, and family dogs for company — which, admittedly, is a lot better than quarantining alone — I realized that I had a...

  • Habits of High-Functioning Teams

    I often struggle to explain what it means to be part of a high-functioning software team. Sure, there are mountains of literature, and an entire genre of LinkedIn thought leadership that professes all kinds of guidelines and heuristics about what makes teams work, but in my experience, it’s hard to internalize these ideas and follow someone else’s model if you’ve never seen what good looks like.

    I’ve been very lucky to have worked directly with dozens, if not hundreds, of developers by this point in my career. I’ve been on some unhealthy teams: teams where people were fearful, and held...

  • What I've learned while ramping up on a large software project

    In mid-March, I started my new role as a Senior Software Engineer at GitHub. Yes, I started a job in the middle of a pandemic. The company brings on new joiners every two weeks for a structured onboarding process, and my cohort was the first to not be flown to San Francisco for it. I was disappointed to not have an in-person experience, but especially looking back now, it was very much the responsible decision for everyone’s safety. Fortunately, the next two months and a bit have exceeded my expectations with flying colors. I love my team, I’m excited about...

  • How to Talk About Software at Scale

    I’ve recently noticed that, of all the interview preparation materials out there, there’s not much guidance on how to excel in open-ended, “no code” technical interviews. Usually, when interviewing candidates for senior-level roles, a common theme is software architecture at scale. There are not many companies that actually run software at the scale of, say, Netflix, Amazon, Shopify, GitHub, and so on. How do you prepare to answer questions like this, if you’ve never worked on a similar-scale project?

    This blog post is my attempt to break down how I’ve passed these types of interviews, despite not much personal experience...

  • The "Leafing" Method of Structuring Unit Tests

    I’ve been practicing Test-Driven Development for the last five years, and in conversation this past week, realized that I’ve internalized a bunch of habits that are really helpful for me, yet they’re generally not written down anywhere on the internet.

    The main thing I’m going to discuss in this post is the “leafing” method. I have never heard it used in mainstream TDD communities; I think my brain just globbed onto the term because it may have been casually used when this method was taught to me. By the way, it was taught to me by Anand Gaitonde of...

  • Running interactive drawing workshops... online!


  • Remote Collaboration Advice from Former Pivots

    Pivotal is famous (or notorious?) for its pairing culture. It was one of the reasons I joined back in 2016, and the interpersonal skills I picked up through continuous collaboration will always stick with me. As companies all over the world prepare for new health risks created by COVID-19, I asked some former colleagues in the Pivotal Alumni Slack for their best tips around how to effectively and sustainably collaborate when you’re working remotely.

    Of course the caveat here is that these are tools and processes that have generally worked for us, because they complement the way that Pivotal approaches...

  • Do you have any questions for me?

    Recently, I’ve been chatting with some folks who are starting out with technical interviewing. A common question that comes up is that folks aren’t sure what to say at the end of the interview, when the interviewer says, “Do you have any questions for me?”

    In this post I’ll document some questions I’ve asked in the past, and that I’ve been asked when helping out with interviews for companies I’ve worked for. These are questions that I’ve found to be helpful as an interviewee, and insightful to hear as an interviewer.

    It’s also worth noting that the questions you should...

  • I drew all 84 people I work with as Golang gophers. Here's what I learned.

    Recently, I embarked on a fun, but ambitious and masochistic endeavor of trying to draw each of the 84* people I work with at Pivotal R&D in the Toronto office as a Golang gopher. Was it a super fun way to get to know my coworkers? Absolutely! Would I do it again? Probably not.

    (I started this project in February, and completed it this past week. In that time, people have left and joined. I included some folks who have since left, and did not include folks who just joined. I might do a follow-up batch later on, when I’m...

  • Designing Self-Regulating Processes

    I am currently reading The Manager’s Path, an excellent book by Camille Fournier that I highly recommend to anyone who’s not only considering becoming an engineering manager or tech lead, but also for anyone who wants to understand how to be more effective as an individual contributor. One thing that jumped out at me was this paragraph:

    As a new tech lead, be careful of relying on process to solve problems that are a result of communication or leadership gaps on your team. Sometimes a change in process is helpful, but it’s rarely a silver bullet, and...

  • Learning to deal with grief as an adult

    Update On January 15, my grandmother passed away peacefully in our family home in Xiamen, China. She was surrounded by her husband, her younger sister, her son and daughter, and grandson. While she was still lucid, in early December I was able to fly out to China and see her for a final time. Thank you to everyone who reached out to me after I published this post. The outpouring of support meant so much to me and my family – thank you.

    I’m in a remarkably fortunate minority of people who have never had to deal with the loss...

  • Creating, writing & delivering awesome technical talks

    After DevOpsDays London, a bunch of people approached me, IRL and on Twitter, to ask for tips for delivering technical talks. I made a Twitter thread after my keynote at Write/Speak/Code:

    I’m not an expert at giving technical talks by any means – but I do know a thing or two about public speaking,...

  • How do I draw sketchnotes and doodles?

    Lately I’ve been churning out a lot of sketchnotes:

  • How to level up your TDD skills?

    I get asked pretty often by people who are interested in applying for a role at Pivotal, or a number of other companies known to value test-first development, “I know about this TDD thing, but how do I know that I’m doing it right?”

    Of course my first piece of advice is to try to work at a company that values TDD, but that’s a chicken-and-egg problem if those companies are testing for TDD in the interview process!

    This article is an attempt to summarise and categorise the advice that I generally offer to junior developers. All code examples in...

  • The Ulysses Paradox

    I wrote this piece last year when I randomly learnt about the landmark case, United States v. One Book Called Ulysses. It was such a bizarre story that I was inspired enough to blog about it with my pseudo-art-historian hat on.

    In 1922, in the temporal heart of Prohibition-era America, a man named James Joyce wrote what would be later considered the most controversial novel of the twentieth century. Ulysses chronicled the stream of consciousness of a character named Leopold Bloom, who lived in Joyce’s contemporary Dublin. The text was simultaneously esoteric and coarse, and whatever semblance of a plot...

  • An Experiment to Improve Team-wide Feedback

    I’ve been working at Pivotal Cloud Foundry for the last 16 months. During that time, I’ve mostly been an engineer, but am currently putting on a Product Management hat for a little while! More on that in a future blog post.

    Pivotal is a company that spends a lot of time thinking about what good feedback looks like. Not as in feedback from customers or end users, although that is also extremely important; I’m talking specifically about peer-to-peer feedback that is intended to help individual contributors grow as engineers, designers, product managers, technical writers, and so on.

    We have lots...

  • Learning COBOL in 2018

    This past weekend, I finally ventured out of my burnout-induced cave to attend a tech event on a weekend: PLIBMTTBHGATY, one of my favorite formats for events where you learn stuff. The Programming Language I’ve Been Meaning To Try that I chose was COBOL. Surprisingly, no one else (except Spike) wanted to learn COBOL with me?!?

    My main takeaway from the day is that COBOL was a lot easier to get started with than I anticipated. The syntax was obviously unlike any modern programming language I’ve used, but it was easy to read, because it was so imperative and...

  • Craftmanship, Inclusivity, and Community-Building

    A lot of things have been on my mind lately. Among them, Sarah Mei’s latest thoughts on Twitter about “No True Developer” tribalism. She and a few others call out this troubling pattern that has been happening in tech for a really long time, where people who are part of an “in” group publicly make assertions like “You’re not a true developer if you don’t do/know/follow X”. As someone who is relatively new to the industry (I started learning to code in September 2014, and have been working professionally since February 2015), I can relate to so much of...

  • The Sophomore Slump

    When I was in college, I spent most of my weekends traveling to other universities in order to take part in parliamentary debate tournaments. Students across all years participated in the same rounds, which made debate the single most exhilarating and intellectually-challenging activity of my college career – and also, the most emotionally difficult one.

    Since freshmen are debating against seasoned seniors, the league had a special category of recognition for first-year debaters that fared well. Debaters in their first year are referred to as “novices”, and there was a corresponding set of novice speaker awards as well as team...

  • You've got passion -- how do you convince others?

    If you’ve ever had a conversation about tech, software, hiring, retention, diversity, being a junior, supporting juniors, etc. etc. there’s a 95% chance that I’ve told you to go on Twitter and follow Sarah Mei immediately. Hey, you! Reader! Go follow Sarah Mei on Twitter immediately!

    The reason is because she has some of the most accurate and concrete ideas for how to make life better for junior developers, particularly women and people who aren’t traditionally encouraged to enter tech. Through Sarah, I recently came across Lydia Guarino’s latest series of tweets about where junior devs fit.

  • A Very Simple Thing You Can Start Doing

    My last blog post and the reception to it got me thinking that it’s one thing to describe a problem in the abstract, but it’s much harder to come up with “actionable” solutions (good god I hate that phrase). But I think I have one idea that you can start doing today that will support the women that you work with.

    I first noticed my friend Franzi doing this at a conference a few months back. It was so simple that it was mind-boggling to realise that I had never heard anybody else do this before.

    Every time a...

  • I don't want to be That Girl

    This is a difficult post for me to write. When I started coding a year and a half ago, I have to admit that I didn’t really know what I was getting myself into. I knew that software development was a cognitively intensive field, which is what initially drew me to it, but I didn’t know that it would be the community that would make me grow to have a truly vested, emotional interest in increasing diversity in this field.

    I’ve been involved with organising codebar for the last year or so. At first, I think I became involved...

  • Full Text Searching in MongoDB

    I’ve always had an interest in language. Specifically, I really like the sweet spot where natural language intersects with mathematical logic. I studied Ancient Greek in university for two years, but had to eventually stop because I realized that maaaaaybe I needed to actually take some Economics requirements and graduate… but during the two blissful years that I was studiously parsing and translating Homer, my fondest recollection is the (relative) regularity of Ancient Greek syntax. I liked that you could pretty much identify the role of every single word in a sentence based on its declension, which allowed the author...

  • Developer Recruitment Trade-Offs


  • The Great TSL Bug-Hunting Competition

    A few months ago, my company upgraded our core application from Rails 3 to Rails

    1. Despite the best efforts of the Rails maintainers in making the transition as smooth as possible, we still anticipated many subtle bugs and breakages.

    Our application has a lot of moving parts, as is the case with most companies that have a core application. Moreover, every developer was familiar with a few key parts of the code, but nobody knew 100%. As a result, we were wary of the abilities of the dev team alone to think of every edge case that could...

  • My work visa experience

    I’m often approached by fellow Americans or folks who live in non-EU/EEA, non-Commonwealth countries wondering how to go about getting a work visa in the UK. Here’s an account about the lessons I learned during my journey towards gaining a Tier 2 work visa to live and work in the UK.

    In case it isn’t apparent, I work as a software developer. Specifically, I make web applications, primarily with Ruby on Rails. In my limited anecdotal experience, it is far easier to earn private sponsorship if you are looking for work in a STEM field, because specialized skills are in...

  • Custom Rails Form Errors Without Gems

    Everyone who’s used Rails knows that a lot of magic is baked into the framework. One part of Rails that I’ve always been a little mystified with is how form validations work under the hood. Lately, I’ve had to do a lot of hacking around with forms – sometimes to change error messages across the entire application, other times only for one particular use-case or one model. There are a couple of gems that make form customization a little bit more user-friendly – simple_form is perhaps the most well-known.

    However, under certain circumstances (like legacy projects), it may not...

  • Ready, Set, Ruby!

    A few weekends ago, Spike went to SoCraTes, where he learned a game called Set. The premise of the game is fairly simple:

    There are a certain number of cards laid out on the table from a deck of 81 total cards. Each card has four characteristics, and three possible options for each characteristic:

    • Color - red, green, purple
    • Shape - diamond, pill, squiggle
    • Fill - solid, stripe, empty
    • Number - one, two, three

    A complete ‘set’ consists of three cards that all have nothing in common, or all have exactly one trait in common....

  • Being Wrong, Loudly

    The journey of learning to code, for me, has borne a lot of similarities to learning the mechanics of university-level competitive debating. I’ve been wanting to write about these similarities for a while now, but struggled to find a unified, thematic way to present this intersection.

    A bit of background: I debated competitively for about four years throughout university and graduate school. I never got very good at it. I never won speaker awards (recognition for the highest-scoring individuals at a competition), never won national titles, and produced a handful of good cases (topics briefs that establish the subject and...

  • On Code Citizenship

    Before I knew I wanted to become a coder, I thought I wanted to become a lawyer, or at the very least, a policy researcher. And before that, I spent far too many waking hours living a double life as a competitive debater. As a result, I spent a lot of time reading political science and sociology texts in university and grad school. I’ve been thinking a lot lately about the idea of what it means to be a good citizen, and how that applies to software development.

    Katrina Owen spoke at Bath Ruby a few weeks ago about...

  • The lolcat gem

    This has changed my life.



  • Test-Driven Development - What and why?

    In the process of describing my career change to non-developer friends, I found myself explaining time and again what exactly I learned at Makers Academy, and how it was possible to make a complete career transition in only twelve weeks. In truth, it’s impossible for a 12-week course to replace a 4-year university degree. However, at the same time it is also true that in most CS programs, much of the content is theoretical, and relatively little time is dedicated to learning how to write code – and even less is spent on learning how to implement industry best practices....

  • Test-Driving Rock, Paper, Scissors with PHPUnit

    Test-driven development is a method of writing as little code as possible in order to achieve functionality. In order to ensure that tests are purposeful (i.e. not false positives), it is standard practice at Makers Academy to write a failing test, then write just enough code to make the test pass, followed by refactoring. The aim of this tutorial is to provide a glimpse into the “Makers Way” of software development using PHP and PHPUnit. This walkthrough assumes basic familiarity with PHP syntax.

    There are many ways to write Rock, Paper, Scissors. In this version, we will err on the...

  • New Job!

    I always experience an unreasonably high level of vicarious anxiety when I watch movies that involve the main characters in any type of vehicle that’s rapidly accelerating out of control, usually towards a collapsed bridge/tunnel/overpass, even though you KNOW it’s going to be okay and they’re not actually going to kill off Keanu Reeves and Sandra Bullock’s characters with a full 20 minutes left of the movie, because if Americans wanted our movies to make us feel bad, we would just watch foreign films.

    In an imperfect analogy, the last week of my life kind of felt like that. There...

  • Christmas Morning Reflections

    When I was in the sixth grade, I had a gym teacher who was really, and I mean, REALLY enthusiastic about exercising. He claimed to shower three times a day, because that’s just how much he exercised. I thought he was absolutely nuts, because it’s one thing to enjoy exercise for the endorphins, but what sane person exercises that much? In the week before we went on holiday break, I remember that he said to us that Christmas should not be a time to sit around and stop taking care of your physical health. A lot of people view it...

  • Week Two at Makers Academy

    Week 2 at Makers Academy presented a host of new challenges. During Week 1, it would not be accurate to say that there was hand-holding, but the Boris Bikes project that we built in pairs came with a much more in-depth tutorial than our project for Week 2, which was to build a working skeleton for a simple Battleships game. Where Week 1’s difficult gradually crept upward as the week went on (with a slightly steeper climb when London TDD was introduced!), in Week 2, at some points it truly felt like we came up against a huge wall that...

  • Week One at Makers Academy

    For twelve weeks, I will be taking an intensive web developing and coding course at Makers Academy. For those who are unfamiliar, Makers Academy is one of many popular “tech boot camps” springing up all over the world. In large part this is a response to the fact that technology is one of the fastest-growing and most dynamic industries in the world right now, while in many major cities, the supply of talented people with technical skills outstrips demand.

    My intention for this series is to chronicle the content progression in the course, but only as a secondary goal. Many...

  • Ten Days in London

    Recently, my friend Chrystal visited me in London for ten days. Being awesome (and probably WAY too trusting!), she let me plan pretty much every detail of her visit. And being very, very Type A, I probably got more joy out of planning the minutia than any reasonable person should, ever. It later occurred to me that it could be helpful to other London visitors to see the itinerary that I put together for her visit. Without further ado, here it is!

    Many of the plays and one-off events were booked about a month in advance. However, there are many...

  • The Great Birdhouses of Westeros

    Last year, I went home for about a month after quitting my job in NYC, and found myself feeling bored and creative at the same time. I paid a visit to the place where I sank all of my childhood pocket money: the arts and crafts store.

    I wandered around the aisles, not really sure what my upcoming project was going to be. I was about to settle for a pad of heavy-duty paper and some watercolor paints and brushes, when these cheap, cute little decorative birdhouses caught my eye. They were $1 each, and they were definitely too small...

  • Monopoly Pub Crawl

    I haven’t died. I did, however, move to a new country since the last update and utterly forget that I had this blog. In the UK so far, I have met David Cross, sat three feet away from Kevin Spacey, ordered my dinner off an iPad at a restaurant, and hopped a fence in a city farm to frolic with sheep. Those adventures will be documented in further detail at a later date.

    The pub is a curious institution in England. It’s an extension of the living room — a communal space that is multipurposeful in a way that bars...