Work is a Queue of Queues

Do you ever get that feeling like no matter how hard you work, you just can’t keep up?

This isn’t a problem uniquely faced by modern knowledge workers. It’s also a characteristic of certain software systems. This state — of being perpetually behind on intended work-in-progress — can fall naturally out of the data structures used to design a software system. Perhaps by learning something about these data structures, we can learn something about the nature of work itself.

Let’s start with the basics. In computer science, one of the most essential data structures is the stack. Here’s the definition from Wikipedia:

… a stack is a data type that serves as a collection of elements, with two principal operations: (1) “push”, which adds an element to the collection; and (2) “pop”, which removes the most recently added element that was not yet removed. The order in which elements come off [is known as] LIFO, [or last in, first out]. Additionally, a “peek” operation may give access to the top without modifying the stack.

From here on out, we’ll use the computer science (mathematical) function call notation, f(), whenever we reference one of the operations supported by a given data structure. So, for example, to refer to the “push” operation described above, we’ll notate it as push().

I remember learning the definition of a stack in college and being a little surprised at “LIFO” behavior. That is, if you push() three items onto a stack — 1, 2, and 3 — when you pop() the stack, you’ll get the last item you added — in this case, 3. This means the last item, 3, is the first one pop()‘ed off the stack. Put another way, the first item you put on the stack, 1, only gets processed once you pop() all the other items — 3, 2 — off the stack, and then pop() once more to (finally) remove item 1.

Practically speaking, this seems like a “frenetic” or “unfair” way to do work — you’re basically saying that the last item always gets first service, and so, if items are push()’ed onto the stack faster than they are pop()’ed, some items will never be serviced (like poor item 1, above).

Continue reading Work is a Queue of Queues

Charlottesville tech: a community that won’t be stopped by tragedy

Note: This post was written on August 17, 2017. I was living in Charlottesville, Virginia at the time; I had been based there since 2011 and would end up living there until 2019. Unfortunately, 5 days before this post was written, a tragedy happened in my town. This was my attempt to provide an alternative perspective on Charlottesville, the town, when this specific (terrible) tragedy on a specific (terrible) day became all anyone knew about it in the national headlines for months and years on end.

tl;dr — This New York techie moved to Charlottesville six years ago and witnessed a vibrant tech ecosystem develop. Though Charlottesville has some deep social problems, it’s also a place of creativity and optimism. Its best communities will prevail.

After spending my childhood, teenage years, college years, and early working years in and around New York City, in 2011, I was ready for a change. My wife was applying to medical schools across the country, and I was in the early stages of running my tech startup as a fully remote/distributed team.

Charlottesville’s pedestrian Downtown Mall on a calm fall day in 2013.

Charlottesville’s pedestrian “Downtown Mall” on a calm fall day in 2013. (source)

I think prior to the tragic events of Saturday, August 12, most life-long New Yorkers I know rarely gave much thought to Charlottesville, Virginia. Maybe they would hear the occasional news story about it, or had a friend, or friend of a friend, who attended the University of Virginia. But, for the most part, the locale occupied very little room in their brain — perhaps none — as was the case for me in 2011.
Continue reading Charlottesville tech: a community that won’t be stopped by tragedy

Office extinction for knowledge workers and the rise of fully distributed teams

Esko Kilpi wrote:

For most of the developed world, firms, as much as markets, make up the dominant economic pattern. The Internet is nothing less than an extinction-level event for the traditional firm. The Internet, together with technological intelligence, makes it possible to create totally new forms of economic entities… Also very small firms can do things that in the past required very large organizations.

This is true. But for certain small firms that are run as fully distributed teams (as mine, Parse.ly, is) the Internet is an extinction-level event for the physical manifestation of the firm — the office.

Already, companies such as GitHub and Automattic have minimized the importance of co-location in work collaboration. Successful massive creative projects are delivered not just by distributed teams, but also by volunteer teams. For example: the Linux kernel and Wikipedia. I wrote about this in my essay, “Fully Distributed Teams: Are They Viable?”

Continue reading Office extinction for knowledge workers and the rise of fully distributed teams

Going mobile in 1998

My first mobile device was a Palm V. I understood the power of mobile really early. I was 15 in 1999, when the Palm V was released. I first came across the Palm devices in 1998, when the Palm III came onto the scene. I never owned one, but played with the one my Dad owned, but barely used.

This device was comically under-powered in retrospect. It had 2 megabytes of RAM, which had to be used as not only the working memory of the device, but also the storage. It had a 16 Hz processor, a 4-greyscale screen, and a stylus-driven interface.

The Palm V was an amazing device. In lieu of the plastic of the Palm III, it had a finished anodized aluminum finish, very similar to the kinds of sleek devices we would only begin to regularly see in the last couple of years. It was nearly half the weight of its predecessor, and as thin as the stylus you used to control it. It had a surprisingly well-designed docking station (imagine this: since USB hadn’t yet been developed, it had to sync over the low-bandwidth Serial Port available on PCs at the time).

Continue reading Going mobile in 1998

Questioning the Canon

I was in the best of settings when I realized that Shakespeare was indeed great. My freshman year in high school, I had English class with an esteemed teacher, Mr. Broza—hailed as the Paul D. Schreiber High School Shakespeare aficionado, founder of Schreiber’s Annual Shakespeare Day, and, perhaps most heart-warming of all, a self-proclaimed Shakespeare lover whose posters of The Bard could be found as wallpaper in his small office. How lucky I thought I was. Indeed, if I wanted to appreciate Hamlet, I was in the right hands.

But how misled I actually was—at least, in Walker Percy’s eyes. In his essay, “The Loss of the Creature,” Percy recalls a scene from The Heart Is a Lonely Hunter:

…the girl hides in the bushes to hear the Capehart in the big house play Beethoven. Perhaps she was the lucky one after all. Think of the unhappy souls inside, who see the record, worry about the scratches, and most of all worry about whether they are getting it, whether they are bona fide music lovers. What is the best way to hear Beethoven: sitting in a proper silence around the Capehart or eavesdropping from an azalea bush?

Percy here contrasts two different approaches to viewing art—the girl who informally and spontaneously encounters the work of art, out of context, as opposed to the “unhappy souls inside” who formally prepare themselves for a kind of pre-packaged listening experience. Percy wonders which is better—a question meant for the reader’s pondering. But his essay offers his answer: we can only truly see or hear a piece of art by “the decay of those facilities which were designed to help the sightseer”. Perhaps Percy is right—it might have been better if my experience with Hamlet had been an accidental discovery rather than a guided tour, an “eavesdropping from an azalea bush” rather than “proper silence around the Capehart.” Perhaps I should have encountered the text unaware of its origin but intrigued by its mystery. After sitting by a tree and reading the text front-to-back, perhaps then I would be able to “see” Shakespeare in Percy’s sense of the word.

Continue reading Questioning the Canon

The New Novel

Salon.com has an interesting article about the craft of writing. It’s from 2010, but still interesting.

… far more money can be made out of people who want to write novels than out of people who want to read them. And an astonishing number of individuals who want to do the former will confess to never doing the latter. “People would come up to me at parties,” author Ann Bauer recently told me, “and say, ‘I’ve been thinking of writing a book. Tell me what you think of this …’ And I’d (eventually) divert the conversation by asking what they read … Now, the ‘What do you read?’ question is inevitably answered, ‘Oh, I don’t have time to read. I’m just concentrating on my writing.’”

When I was younger, I thought there was no greater ambition than becoming the writer of the next great novel. However, this article made me reflect on my own media consumption habits, and what a small audience I would affect even if I did write such a work.

I think similarly about painting and sculpture and classical music. These expressive forms are certainly demanding of skill, but who is the audience?

It would be unfair to consider television programming or film the new novel. Certainly, these media have the capacity to change people’s ideas and have a wide impact. But, even with the technology and cost barriers breaking down on film production, it lacks the visceral nature of writing. Anyone with an idea and a pen (or laptop) can pursue writing, but you have to be a technician of sorts to make a film.

By this disqualification, software — though increasingly recognized as an art form — is definitely not it, either. So, what is?

Turning 27

Today, I turn 27. Even though I was deep in the middle of a project late last night, I peeled myself away from my monitors, went to sleep, and woke up late to enjoy a day of reading outside.

Parse.ly has an official “take your birthday off” policy, so I made sure to set a good example.

I remember when I was younger, I used to look forward to birthdays very eagerly. Birthdays were when I got a new videogame or programming book. Birthdays were about stuff, and taking the day to play with new toys.

Now, over a decade later, my birthday is much less about stuff. I don’t play videogames anymore, and I already know how to program. I am fortunate to live comfortably and don’t long for stuff any longer. My Nintendo Wii gathers dust (like everyone else’s, it seems). My computer is no longer used to amuse me, but to allow me to work on my passions — building software, building a company, staying informed, informing others. I have a seemingly endless queue of books I’d like to read, movies I’d like to watch, things I’d like to write, software I’d like to build. I’ve come to realize that birthdays, at my age, are more about time.

In my ruthlessly efficient worldview — where I regularly talk of cost-benefit analysis, backlog prioritization, and productivity — my birthday has become about taking a moment to flip my prioritized world on its head. Let’s not pick an item from the top of the prioritized backlog. Instead, let me take something from the backburner, for once. Let me behave — if only for a day — as if I had all the time in the world.

I don’t need stuff. I just need time. Of course, that’s the bittersweet part of one’s birthday. That even as you come to realize the importance of time, the day acts as a reminder of how our time on this earth is limited. 1 day passes, and only n-1 left to make a difference.

What’s the best part about being a software engineer?

I wrote this in response to the question, “What’s the best part about being a software engineer?” It was originally posted to Quora, but I figured Quora might disappear from the web someday. So here is my response, for posterity:

Being a software engineer gives you access to the only career choice where you can simultaneously rid the world of a problem, create a scalable business, satisfy a personal creative hunger, and have an effect on millions of people’s lives. That is the career choice of founding a software product company.

And today, you can do this with comparatively little personal capital investment than times in the past.

There’s nothing like it. I wrote about my path to this realization in my essay, “What One Does”.

I also believe software engineering, per se, (that is, coding) is an extremely fun activity. Software design is complex, multi-disciplinary, and demanding. The web and open source have created an incredible sense of community and shared wisdom around this activity. In my view, we’re lucky to be able to be compensated in any way for doing it. I’d do it for free.

Update from the future in 2025: I still feel the same way.