Category Archives: Personal

What I Want From “Social”

Facebook. Google+. Tumblr. Pinterest. Any of the other myriad social content services now thoroughly entrenched in the web – they’re all going after the same kind of interaction, if in subtly (or even obviously) different ways. Even with so many options, however, I have yet to find one that really embodies what I’m looking to get out of a social content experience.

(Disclosure and disclaimer: I work for Google, though not for any of the Social product teams. The opinions in this post are completely my own, do not reflect those of my employer, and should not be taken as indicative of current or future development efforts.)

Ease and versatility of content creation

Text composition and formatting

Blogging platforms (e.g. WordPress, Tumblr, etc.) probably do this best… in that they do it at all. Social content sites can generally be broken down into two fairly distinct categories: blogging platforms, and platforms with little-to-no formatting options. At best, non-blogging platforms tend to support bold, italic, auto-linked URLs, and maybe a handful of other styles (e.g. Google+’s strike through).

My ideal social content platform would support a broader set of formatting options, while maintaining a consistent style. A reasonable set of formatting options would be those represented by attribute-less HTML tags – for instance, superscript and subscript, headings, and monospace/preformatted text. This avoids the possibility of too much eyesore (I’m specifically not looking for unrestricted colored text support, for example) while still allowing the usage of well-established formatting standards to present content in a more organized and elegant manner.

An ideal content platform would also make these formatting tools accessible to any level of user. While I as a technical user might prefer writing my posts in Markdown, someone else might be much more comfortable with a WYSIWYG or WYMIWYG creation process.

Multimedia sharing

An ideal platform also needs to support other media beyond text – photo galleries, shared videos, and so on. These should be presentable in a consistent and clean format that doesn’t need extra formatting effort on the part of the content creator. Modern social networks tend to handle this fairly well for embedded content, while most blogging platforms handle this poorly.

Clear and powerful access control

Google+ circles are pretty much the reference implementation I have in mind here – it’s the first service that I’ve used any significant amount that I actually felt got access control right. From the start it makes it clear what you’re sharing and with whom, with the concept of circles baked into every aspect of the site.

I stopped using Facebook months ago, but when I left, my perception was that while they were trying to get some of the same concept implemented via friend lists, it was very much an uphill battle due to how much of the site was implemented around the symmetric friending model.

Many other content sharing platforms have very little access control at all – Twitter basically only has 2 options for sharing (all tweets are followers-only, or all tweets are public), and others have none (e.g. Tumblr).

Interest-based curation tools

This is an area in which Pinterest shines. By giving users the ability to create separate personal boards for each topic, and then subscribe to other users’ topic-specific boards, Pinterest allows a very fine-grained control over not only whose posts you see, but also what they’re about. As it turns out, just because you like someone’s posts about one topic doesn’t necessarily mean you’ll want to see everything they’re interested in (case in point: politics).

Note that this is different from, say, Facebook groups (or a classic example, LiveJournal communities). With such groups, access control and interests are conflated – to see any posts from the group, you must see all posts from the group, and to share something with the group, you must share it with everyone in the group. As a result, it’s generally necessary to have a group moderator if any modicum of privacy is desired.

The Pinterest model avoids the need for group moderators by keeping the topic separate from the set of users a post is shared with (though in Pinterest’s case, this is because they have basically no access control). Keeping topics separate from access control allows for the asymmetric access control model of circles without sacrificing the ability to customize topic consumption.

Intuitive discussion and moderation capabilities

Discussion format

Content creation and distribution is only half of the social media platform equation – the other half is dialogue. Forums are devoted entirely to encouraging dialogue with features like the ability to easily refer to past parts of a discussion (via quotes or links to individual posts) and the ability to display both threaded and sequential views of a conversation. Many other social platforms, however, have neglected such functionality, instead adopting the stripped-down “comment stream” model of dialogue. While there is plenty of dialogue that can go in within a flat comment stream, it’s primitive at best compared to the interaction capabilities of more modern forum software. In a complex conversation with multiple lines of discussion, it can be difficult to tell who is referring to what without more explicit indication.


There’s also the matter of moderation, an area with which forum administrators are generally quite familiar. As the number of people conversing in a single place grows, so does the chance that one or more users will behave in a way not conducive to the kind of conversation the content creator is interested in promoting. The tools provided by many social networks to moderate ensuing discussion are lackluster at best – typically nothing more than the ability to remove a comment or globally block a user (if that).

There’s also the possibility of allowing other commenters to participate in the moderation process. This includes both a community voting system a la Reddit, or pointing things out to a designated moderator (such as the post owner). If there’s an ability to report a problematic user on a social platform, it usually reports them to the owners of the platform and not the creator of the post, which means that it’s useless for situations that aren’t against the platform’s TOS but are against the wishes of the original poster. Providing more ways for commenters to point out troublemakers to content creators would lessen the burden on content creators to police discussions.

So to sum it all up…

You could roughly say that what I’d really like to see is a social content sharing platform with the circle model from Google+, the topic-subscription functionality from Pinterest, the content creation tools of WordPress and Markdown, the discussion and moderation power of a forum, and the multimedia sharing capabilities of Facebook/Google+.

Put that way, it almost sounds simple… until you realize that each of these is something that an entire site has devoted itself to doing well. Doing all of them in a single site would be at the very least challenging, and doing them well in a single site would be a truly herculean effort. Doing all of it, doing it well, and gaining enough market share to hit the critical mass of users necessary to give a social platform real staying power… well, let’s just say I’m not holding my breath.

That said – if you manage to pull it off, make sure to let me know.

Why I’m a Programmer

I tried googling this question, and was surprised by how infrequently it’s actually addressed. Most of the results are for one-off jokes. The only significant post I found that was actually trying to answer the question in detail was a post by Anne Epstein. That post, however, focused more on the “how I became and thus now am a programmer” interpretation of the question.

The version I want to explore is “why I remain a programmer” – what my motivations are for doing what I do. I think it’s an important version of the question to consider, because it’s the one that others are really going to want to know about when they’re choosing a career path. It’s the one that avoids propagating a sense of technical entitlement. Lastly, it’s probably the one that I, as the author, can actually get the most use out of considering on an ongoing basis.

So why am I (still) a programmer? The trivial answer would be “because I enjoy it,” but that’s a cop-out answer which is useful to no one. So let’s go a bit deeper. Why do I enjoy it? There are a few reasons.

First, I enjoy problem solving – both on a micro and macro scale. Programming involves copious amounts of both. Figuring out the most efficient way to implement a feature or tracking down a bug in existing code are examples of small-scale problems that programmers solve. Figuring out software solutions for problems like hurricane disaster relief coordination, personal bookkeeping, or project funding are examples of the larger scale. Whatever project I wind up working on, it winds up having interesting challenges.

Second, I enjoy creating. Programming is wonderful for this: it’s a medium that, unlike many others, allows me to create something out of nothing. I’m not limited to physical constraints; if I can imagine it, I can create it (with enough thought and effort). Programming lets me create things that tie into the rest of my life and improve it, whether for fun (e.g. addons for a game), productivity (say, automating parts of my daily routine), or profit (work, modeling my personal finances, et cetera).

Third, it’s a career. It’s an area that has a lot of demand and probably will continue to be in demand for the foreseeable future. As such, it’s also an area that pays well. This does contribute to my enjoyment of programming. While I don’t tend to be frivolous with my finances, having a solid income makes staying in the black a lot simpler, and allows me to save and invest for the future, whether that be good times or bad. As someone who eventually plans to raise at least one child, I feel an obligation to help make that child’s financial future reasonably secure.

Despite my gripes about some areas, the tech industry has become one of the better and more progressive industries in many of the areas where it matters. My employer’s healthcare benefits are amazing. Flexible schedules, liberal parental leave policies, and other such benefits are commonplace. Sure, there are some bad apples, but demand is high enough you can usually shop around. Having this kind of work environment and social support structure improves my overall quality of life.


It’s been a while since my last post, and the majority of that can probably be attributed to the job change I’ve gone through over the past few weeks.

More specifically, my last day at Yelp was July 20th. On July 30th, I started at my new job as a Site Reliability Engineer (SRE) for Google. I’m still working out of San Francisco – the team I’m on is based in Google’s SF office – but I’ve been down in Mountain View for the past week as part of the on-boarding process.

More posts with actual content will be coming soon once things settle down. Stay tuned!