Thursday, October 27, 2011

Perspectives on parenting

One of my most admired tech bloggers Jeff Atwood wrote a great post this week "On Parenthood". It's moving and astute and insightful, and includes this:

My feelings on this matter are complex. I made a graph. You know, for the children.
Parentingpie
That one percent makes all the difference
I also liked
I compare the process [of becoming a parent] to becoming a vampire, your old self dies in a sad and painful way, but then you come out the other side with immortality, super strength and a taste for human blood
The whole thing is worth a read.

Then a few days later I came across "Laws Concerning Food and Drink; Household Principles; Lamentations of the Father" [PDF]. This passage tickled me in particular

When you chew your food, keep your mouth closed until you have swallowed, and do not open it to show your brother or your sister what is within; I say to you, do not so, even if your brother or your sister has done the same to you. Eat your food only; do not eat that which is not food; neither seize the table between your jaws, nor use the raiment of the table to wipe your lips. I say again to you, do not touch it, but leave it as it is. And though your stick of carrot does indeed resemble a marker, draw not with it upon the table, even in pretend, for we do not do that, that is why. And though the pieces of broccoli are very like small trees, do not stand them upright to make a forest, because we do not do that, that is why. Sit just as I have told you, and do not lean to one side or the other, nor slide down until you are nearly slid away. Heed me; for if you sit like that, your hair will go into the syrup. And now behold, even as I have said, it has come to pass.
and also
On Screaming
Do not scream; for it is as if you scream all the time. If you are given a plate on which two foods you do not wish to touch each other are touching each other, your voice rises up even to the ceiling, while you point to the offense with the finger of your right hand; but I say to you, scream not, only remonstrate gently with the server, that the server may correct the fault. Likewise if you receive a portion of fish from which every piece of herbal seasoning has not been scraped off, and the herbal seasoning is loathsome to you, and steeped in vileness, again I say, refrain from screaming. Though the vileness overwhelm you, and cause you a faint unto death, make not that sound from within your throat, neither cover your face, nor press your fingers to your nose. For even now I have made the fish as it should be; behold, I eat of it myself, yet do not die.

Again, read the whole thing. It's worth it.

As if I know something (@thebeean is but 15 months old) I've compared the arrival of kids to taking a sudden 90° turn in life. Nothing slows down but everything's different: the terrain, the climate, and the look of the horizon. It's a whole thing.

day 449

Wednesday, October 26, 2011

Long and short clicks, and short patience

I worked at Google 2006–2010 and I remember it as being unique in many ways. While I was there, though, one particular thing which distinguished the core product—Google Search—from other similarly popular web properties was that it had a stated aim of reducing "time on site per visit".

For Google a top-level measure of its success as a search engine is how quickly it can provide you with great results for your query and send you on your merry way. A measure of how well Google's doing its job is how quickly it can get you the result you're looking for. The better it does, the happier you are as a user, the more likely you are to use the product, and the more opportunity to show you relevant ads.

In order to make sure that you're not just being sent away for the sake of it, though, Google decided to measure both "short clicks" and "long clicks". Let's say I click on a Google Search result, find it useless, and immediately click the Back button. Google measures that as a "short click", ie. I wasn't away for very long. The implicit signal is that the search result didn't answer my query well. Google takes note of this.

In contrast, a "long click" is one where I navigate to a search result and don't come back straightaway. The implication is that I found what I was looking for.

Knowing this context it was interesting for me to see for the first time this feature on google.com. Search for [hunter walk twitter] to find Hunter's Twitter account. Click on the #1 result, then click your back button. You'll be offered this screen:

Hunter
The feature's at least six months old but is the first time that I've seen such a direct manifestation of short click feedback in the user interface.

I'm impressed at the option to customize my search results this way. Never forget, in fact, just how darned impressive Google Search is. It's surprising, though, that this is such a coarse setting. Offering to remove all twitter.com results for all queries henceforth seems a little severe as a proposed reaction to a single short click for a single query.

Sunday, October 23, 2011

What I Have Learned: Attorney-Client Privileged and Confidential

Disclaimer: I am not a lawyer.

If you work in the technology sector in the States then at some point in your career you've probably received an email that started with the words in the title of this post.

Sometimes for effect the sender of the email may have bolded them:

Attorney-Client Privileged and Confidential

Others are known to go with a bold & italic strategy:

Attorney-Client Privileged and Confidential

And of course there is the ever-popular ALL-CAPS approach:

ATTORNEY-CLIENT PRIVILEGED AND CONFIDENTIAL

So what does this phrase mean? Is it really necessary? From what types of situation is it meant to protect you and your company? Here's what I've found out.

The last question is the easiest to answer. The law of civil procedure includes provisions for the process of "discovery" whereby each party involved in a civil action can request documents and other evidence, or can compel the production of evidence by using subpoenas or other means. Much of what goes into a company's day-to-day business is "subject to discovery", ie. may be required to be turned over to the legal counterparty (ie. the “other side”) in the suit. That includes product source code, documentation, reports, letters, faxes, files, and phone records.

Most crucially, though, for tech companies: all emails are by default subject to discovery.

This is where our famous phrase comes in: excluded from the discovery process are materials which fall under "attorney-client privilege". Attorney-client privilege is a legal structure which protects from discovery all communications where a client seeks or obtains legal advice from an attorney. Such "privileged" conversations are excluded from the discovery process and may be withheld from the opposing party.

Legally, one needs to consider a number of factors when looking at whether a particular email communication falls under attorney-client privilege; EITHER

  • the email is from a lawyer representing the company, and dispenses legal advice or opinion. Such communications are almost always privileged

or ALL OF THE FOLLOWING must apply:

  • the communication has to be with a lawyer who represents the company, since attorney-client privilege, as the name may suggest, only covers communication between a client (you) and an attorney (an edge case might be an email to someone with the explicit request asking for a lawyer to be added on the thread);
  • the communication must be clearly and directly asking for legal advice or guidance; and
  • the communication must not be broadly distributed (eg. if you email a smaller mailing list it is fine, but if you choose to cc a large group then the communication is likely no longer covered)

Note that "the communication includes a banner identifying the email as attorney-client privileged" is not one of the criteria! In fact the text "Attorney-client privileged" is itself not significant in any way, ie. the communication would be privileged—or not—with or without the banner. The only reasons to keep the text in place are

  • to make explicit, to teams performing legal discovery, that in the opinion of the sender this message is protected under attorney-client privilege; and
  • to remind recipients of the email that the material is sensitive and subject to privilege. Forwarding such an email usually removes it from the umbrella of privilege.

The final piece of legal advice is never to take legal advice from someone who's not a lawyer. The above is a guideline only; when in doubt, always consult an actual attorney.

 


UPDATE 12 July 2013 Interesting additional notes from an actual corporate attorney:

  1. Attorney-client privilege exists under both state and federal law in the United States. There are a few state-specific differences that can affect when/whether the privilege attaches to a communication.
  2. Attorney-client privilege works differently, if at all, outside the United States. For example: at a global company with employees in, say, the UK—when a UK-based employee seeks legal advice from US-based attorneys, attorney-client privilege does not exist for that communication in the UK.

Thursday, October 20, 2011

Thoughts on Platforms

I'm a big fan of Steve Yegge. I think that his recent platforms rant is, once you look past the haha-Google-doesn't-get-it and haha-Google-employee-bashes-Google+-on-Google+, a contemporary classic essay on platforms and technology strategy. Articulate, entertaining, irreverent and really insightful—like Steve himself, I'm told.

A friend of mine sent round an email recently asking for thoughts on it. What was Yegge trying to say? Here's what I think: he was trying to say a number of things.

  1. A key business/product truism: "a platform-less product will always be replaced by an equivalent platformized product". If your product isn't a platform then prepare to be disrupted by someone who builds a platform and a competing product on top. Platforms enable unimagined/uncontemplated user needs to be met. Ultimately, platforms win.
  2. You can't just build a product, slap an API on top and call it done. That's not a platform and it's probably not even a good API. You need to design this stuff in from the very beginning.
  3. Once you've decided that you're going to build platforms (rather than adding an API as an afterthought), the way to get good at exposing platforms externally is to live them internally.
  4. To live platforms internally they need to pervade your organization, all your thinking and your internal architecture. It can't be just "hey we have an RPC interface". How is that service registered and discovered programmatically? How are quota and rate limits managed? Pluggable authentication? Front-to-back end-to-end tracing? How is it regression-tested as it evolves? Can anyone in the company just pick up the docs for the service and start calling it? Is there an SLA? How is capacity planned and provisioned? Talking of docs, do you have reference manuals and tutorials, code samples, lists of error messages and so on? Who gets paged if it goes down as a result of a supporting service going down? You don't have a platform unless you have a consistent, uniform approach to all these horizontals supporting a vertical API.
  5. If you design your internal systems with a platform mindset then every day you're dogfooding your own platform efforts. It'll be easier to expose a rich and thorough platform to your customers and users, and the quality of the platform you expose will be higher.

The part of Yegge's story about Bezos reminded me of my own similar experience. In 1997 I started work at an investment bank in London. The CIO there had just decided that from now on every app developed internally should be delivered in a browser. If you don't build web-enabled apps then you're out. He had mugs and t-shirts made with slogans such as "web or dead" and "wired or fired". He gave them out to employees. I think I still have my web or dead one.

But this seemed like insanity at the time. Internet Explorer 3 was the default browser. The investment bank I'd just come from didn't even have internet access, or browsers, on their desktops. There were many people at the bank who thought that this web app idea was the most stupid idea ever, particularly those who only knew COBOL. Or had spent years building thick clients in Visual C++ or VBA.

I was impressionable, though, kept my head down and became good at building web apps.

And! Once the bank had developed web-based trading apps and web-based finance apps and web-based legal apps and web-based book-building apps for internal use... waddyaknow we could make these same apps available directly to our customers in their browsers. This was utterly revolutionary—and gave us an enormous market advantage, literally years ahead of our competitors.

It couldn't have happened without everyone internally living, breathing, and being hired and fired around, this internal mandate for browser-based apps. The skills we built and lessons we learned while solving for our internal apps were all directly applicable to the turning inside-out of these same apps.

I think that's similar in spirit to Yegge's point. You'll get good at externalizing platforms by internalizing them.

Sunday, September 11, 2011

DIY @mention constellations, Part V

Last time we got as far as sourcing bulk data from the Twitter Streaming API and producing (over the course of several hours compute-time) a beautiful set of constellations like this:

Full Mention Graph
upon which we wondered:
  • how can we make the rendering faster?
  • how can we get rid of the fairly dull stuff around the edge?
  • how can we get a more detailed view of the center?

It turns out that there's one part of Graphviz which addresses all of these questions: ccomps.

Graphs like this are made up of a finite number of connected components. You can think of these as the distinct separable mention islands which make up the diagram. What if there were a way to plot only the n largest of the connected components? What if there were a way to plot the single largest connected component? Turns out that there is.

Graphviz, as well as having tools like dot and sfdp and neato for plotting graphs, also includes a tool called ccomps which can separate out the connected components of a graph.

Let's start by picking out the blob at the center of our big graph. Zooming in, it looks like this:

Ccomp0 small
so let's take our file mention-graph.gv and pass it through ccomps before rendering it:
ccomps -zX#0 mention-graph.gv | sfdp -Gbgcolor=black -Ncolor=white -Ecolor=white -Nwidth=0.02 -Nheight=0.02 -Nfixedsize=true -Nlabel='' -Earrowsize=0.4 -Gsize=1.5 -Gratio=fill -Tpng > ccomp0.large.png
which (in mere seconds!) gives us
Ccomp0 large

Here we used ccomps -zX#0 to pick out the zeroth connected component of the graph defined in mention-graph.gv, ie. the largest one.

That was easy. The other two birds, making the rendering of the big graph faster and removing the dull stuff around the edge, we kill with one stone. We use ccomps to pick out the largest 1,001 connected components of the graph and plot only those:

ccomps -zX#0-1000 mention-graph.gv | \
grep "-" | cat <(echo "digraph mentions {") - <(echo "}") | \
sfdp -Gbgcolor=black -Ncolor=white -Ecolor=white \
  -Nwidth=0.02 -Nheight=0.02 -Nfixedsize=true \
  -Nlabel='' -Earrowsize=0.4 -Gsize=75 -Gratio=fill \
  -Tpng > ccomp0-1000.large.png
which gives us this graph, comparable to the original but with a render time in seconds instead of hours:
Ccomp0 1000 large

You'll notice that we snuck a little trick in there, which was flattening the output of ccomps using grep|cat<(echo). That little one-liner takes a single graph composed of many wholly connected subgraphs and flattens it to a single graph of many connected components. There's no structural change to the graph but a flat graph renders more quickly.

There are a couple other tricks you'll learn to use too:

  • separate layout (sfdp) from rendering (neato -s -n2)
  • use tee to save the output from stages in a pipeline
and you'll notice that mention-graph.sh does these things as well as the flattening trick (if you're interested you can take my sheel script apart to see how it works in detail). Separating layout from rendering is a powerful technique if you want to first lay a graph out and then colorize it or label it before rasterizing.

Something you'll want to play with as well (particularly for graphs larger than a few million edges) is removing certain nodes, particularly those with either a high degree (eg. remove accounts which are mentioned a lot) or a low degree (eg. remove accounts that are mentioned only once or twice). In the beginning I used SQL to do this min/max pruning but eventually got bored of waiting for SQL and wrote some Python instead.

This is pretty much the end of the @mention constellations series. I've had enormous fun generating these graphics, developing these techniques, learning and teaching along the way. It gives me huge satisfaction to see that @ialexs has picked up on this work and is taking it to the next level with such beautiful creations as this.

Saturday, August 27, 2011

DIY @mention constellations, Part IV

So far there's been

and now we're going to take a look at applying Graphviz to large Twitter mention graphs.

Getting the data is easy enough: see the embedded 39-line Python script in the sample code. So let's say you run that Python code to give you 50,000 random mentions from the Twitter firehose. Let's say that having done that, having sort'd and uniq'd, and added a one-line header and one-line footer you have, like I do, a 47,375-line file which begins with

digraph mentions {
"0001am_" -> "kaaly_"
"000eca000" -> "000eca000"
"000eca000" -> "kira_moka"
"000parra" -> "amolosflips_"
"00_dag" -> "nishinoakihiro"
"00alliesmeaton" -> "caitlanpratt"
"00kuro" -> "sena1029"
"00nelht" -> "gvwriters"
"00rico00" -> "tsubo0307"
and ends with
"zwackleby" -> "gauravh1"
"zxicee" -> "parnnnparnnn"
"zyhafiyah" -> "amyshaheera"
"zyhnlyh" -> "elsaaps"
"zymecca" -> "wowkonyol"
"zz0_ee" -> "becky_aisha"
"zzangfia" -> "somin_somu"
"zzz_ho" -> "dewwanna"
"zzzoob" -> "ko5712"
}
that is, you have a directed graph in DOT format representing unique mentions amongst a random sample of 50,000 from Twitter.

Having seen how simple Graphviz is, you'll probably render a graph directly from this file, with a command like

sfdp -Gbgcolor=black -Ncolor=white -Ecolor=white -Nwidth=0.02 \
    -Nheight=0.02 -Nfixedsize=true -Nlabel='' -Earrowsize=0.4 \
    -Gsize=75 -Gratio=fill -Tpng mentions.gv > mentions.png
from which you'd get this image, after waiting a long long time (on my machine about four hours):
Full Mention Graph

Most likely you'd be agog, like I was when I ran this process for the first time. And then, like I did, you'd wonder how to make it faster and how to get rid of the fairly dull stuff round the edge. You might also wonder, like I did, what's inside that blob in the center.

That's for next time.

Next: Part V

Sunday, August 21, 2011

DIY @mention constellations, Part III

So you checked out Part I and Part II, no doubt. You probably installed Graphviz, maybe you tried out the shell script I posted on pastebin, and perhaps you have your own one of these now:

Basic Mention Graph

If so, nice going. This post is going to dial it wayyy back and start at the beginning working with some basic Graphviz functionality.

Graphviz is a suite of software tools for working with graph data, where you can think of a graph as a set of nodes, some of which are connected by edges. At its most basic a graph is a bag of dots with a bunch of lines connecting some dots to other dots. As you'll see, there's more than one way of representing this visually

But talking of dots, Graphviz works with data assembled into a format known itself as DOT. Here's an example of a graph defined in the DOT language:

digraph basic {
    x -> y
    y -> x
    y -> z
    z -> a
    z -> a
    a -> x
}
It defines a graph where the nodes are identified by the letters x, y, z and a.

Save the above graph definition as a text file called basic.gv (Graphviz documents have extension .gv by convention); we're going to use the basic Graphviz commands to visualize this graph in different ways.

At the command line, run this:

dot basic.gv -Tpng > basic-dot.png
and here's what you'll get as output:
Basic dot
Simple! This represents our graph perfectly. Try this:
neato basic.gv -Tpng > basic-neato.png
to get
Basic neato
And then there's twopi and circo:
twopi basic.gv -Tpng > basic-twopi.png
gives
Basic twopi
and
circo basic.gv -Tpng > basic-circo.png
results in
Basic circo

Finally, we're going to add some styling options to the graph. Run this command:

circo basic.gv -Gbgcolor=black -Ecolor=yellow -Earrowsize=0.3 -Epenwidth=0.4 -Nlabel='' -Nwidth=0 -Nheight=0 -Nfixedsize=true -Gsize=4 -Gratio=fill -Tpng > basic-circo-options.png
to get the output
Basic circo options
You can see how this works. The -G options apply to the whole Graph. The -N options to the Nodes and the -E options to the Edges. There's online documentation covering all the various options.

Now imagine that rather than basic.gv

digraph basic {
    x -> y
    y -> x
    y -> z
    z -> a
    z -> a
    a -> x
}
we have instead a graph representing Twitter users @mentioning each other. In the next post we'll look at how we could apply Graphviz to that.

In the meantime, here's where you can ultimately take this. A 369 megapixel graph of the largest connected component amongst 30m mentions on Twitter, with the most active 80k users removed. I'm working on identifying the clumps; I suspect that they're geographic or language regions.

Next: Part IV

Thursday, August 18, 2011

DIY @mention constellations, Part II

At work I wrote a document entitled "Pig for Dilettantes and Cargo-Culters". If you're the kind of person who's at least once used Terminal.app on the Mac, but know little about distributed computing or Twitter's big data schemata, then following the steps in that document is probably the fastest way to get to the point of being able to extract meaningful data out of the Twitter Hadoop cluster. From there you can explore, tweak the scripts, and eventually you'll be able to get the data that you're actually interested in.

In a similar vein I present this post. If you've never opened Terminal.app on the Mac then this probably isn't for you. If you know basically what's going on at the command line, and you're a hardy explorer/experimenter, then read on.

First of all, I presume you've read Part I and have installed Graphviz. Both are required, I'm afraid. Not strictly required is a Mac, but if you're running something other than OS X then you're likely going to need to make some small adaptations for your platform.

So, with Graphviz installed, check out the mention-graph shell script I put on pastebin. Copy it, save it to your Mac as mention-graph, chmod +x it, and you're set.

Using this script, I just ran a constellation of 50,000 live mentions from the Twitter Streaming API, 75 inches square (72 dpi), by running "./mention-graph -n 50000 -u isaach -o -v -s 75":

Screen shot 2011 08 18 at 11 26 16 PM
and here's the output it dropped as mention-graph.png:
Basic Mention Graph

You need to supply your Twitter credentials (the above command, which you should edit to use your own username, will ask for your password) and note that this script sends them in the clear to Twitter. If this worries you then feel free to either edit the script to meet your security standards, or create a Twitter account dedicated to this kind of use, separate from your primary account.

Next time: what this all means and how to take it further. In the meantime, let me know on Twitter how you get on.

Next: Part III

DIY @mention constellations, Part I

People really enjoyed the mention constellation thing. I'm chuffed that on Twitter I've received Tweets about it from five continents, and the thing's been written about by friends and strangers alike. People at work liked it too, which means a lot to me.

A couple of questions I got stood out: (a) can I get the data?; and (b) can I get the code?

The answer to both is yes!

I'm going to do two things. First of all I'm going to post a complete, free, end-to-end solution for generating something like this:

Basic Mention Graph
Secondly, I'm going to explain how the code works.

First of all, though, you need to install Graphviz. It's straightforward, especially on a Mac. Go!

Next: Part II

Sunday, August 07, 2011

About the @mention constellations

Update: find out how to make one of these.

So, about this @mention constellations stuff.

The FAQ:

  • What exactly am I looking at? The main visualization is a map of Twitter mentions on June 21st. Each dot is a Twitter account. Each arrow dot-to-dot illustrates one account mentioning another. Despite the scale of the diagram the underlying dataset is relatively tiny: less than 10 minutes of conversation.
  • Why do some accounts seem to mention themselves? Occasionally accounts do actually mention themselves.
  • Can I get the data? Behind this visualization of June 21st in particular? No. In order to make the same thing from another day? Sure, you can get more than enough data to produce these things for free from the Twitter Streaming API.
  • What's the blob in the middle? Technically speaking it's the largest connected component of the mention graph. I just uploaded a detailed look inside it.
  • What software did you use to make this? Mainly Graphviz.
  • Sure, but how exactly did you make it? I took a sample of Tweets from Twitter's internal Hadoop cluster. I used a tiny Python script to extract the mentions. I loaded the data into a local MySQL instance. I queried MySQL for a sample of the mentions. I formatted the sample into dot using Perl and I laid out and rendered a PNG using Graphviz.
  • Is this your job at Twitter? No, this is a hobby project.
  • What's it like to work at Twitter? Very cool indeed. If you're interested I wrote some stuff about my transition from Google to Twitter at http://isaa.ch/workthoughts.

Tuesday, August 02, 2011

More @mention constellations

The previous post showed a glimpse of a work in progress. Today marks the first formal checkpoint of my hobby project and I'm proud to present the first full iteration at http://isaa.ch/mentions.

What you're looking at is a visualization of a sample of Twitter @mentions on one day in late June. Each vertex is a Twitter account. Each directed edge is a mention of one Twitter account by another. You can see some accounts which get mentioned a lot (lots of inbound arrows to a central point) and accounts which do a lot of mentioning (lots of outbound arrows from a central point; these are mainly automata).

I find it absolutely captivating to explore. It's like a safari of conversational molecules.

Coming soon: more details about how I generated this visualization, and how you can produce your own.

Wednesday, July 27, 2011

@mention constellations

I've been lucky enough working at Twitter to entertain a hobby project or two. My current obsession is "@mention constellations". Let me show you them:

@mention constellations

What you're looking at is a small section of a larger graph showing Twitter users mentioning other Twitter users. Each vertex is a Twitter account. Each directed edge is a mention of one account by another. In this image you can see some accounts which get mentioned a lot (lots of inbound arrows to a central point) and accounts which do a lot of mentioning (lots of outbound arrows from a central point). The latter are mainly automata.

To me, in this presentation, the many distinct configurations look like galaxies. Or perhaps viruses. Can you recognize the basic phyla in this ecosystem? Some commonality, a lot of diversity; it's a menagerie of conversational molecules akin to the patterns one finds in Conway's game of life.

I'm working with GraphViz to produce these images, and I have hopes for Gephi although it's not there yet.

Thursday, July 21, 2011

July 20th

shrieky baby is shrieky
getting my lion on
this one for @dickc RT @Kurt_Vonnegut: Peculiar travel suggestions are dancing lessons from God.
whoah. @wendyverse and I just witnessed @thebeean's first steps. we're gobsmacked.
wow wow wow RT @astro_aggie: This is best picture I've ever taken. Atlantis and aurora last week. Stunning! #FromSpace twitpic.com/5su12j
by popular request, video of some of @thebeean's first steps this morning. youtube.com/watch?v=sY8SJK…. um, pretend the underpants aren't there.
thanks @AlFranken for this most delightful takedown of a Focus on the Family witness at today's #DOMA hearing: youtube.com/watch?v=ZyAuel…
i for one would like to learn more about "Windows Party Mode" http://t.co/Tqdsp3O
lolwut? private static Nothing nothing = new Nothing();
wow, google shuttering google labs. surprising. googleblog.blogspot.com/2011/07/more-w…
I liked a @YouTube video youtu.be/RTNquPzvbWY?a Rebecca Black - My Moment (NO AUTO-TUNE Version!)
long day is long. headed home.
not the most attractive window title for the default finder window in #lion: cl.ly/1i1J162d402s0s…
how long until the first pc oem reverses scroll direction on a windows laptop?
tonight @wendyverse will be modeling the twitter @townhall feetie from @OriginalFeetie: yfrog.com/kggd7btj
wow, @salgar just sent me a message on Google Buzz. that dude is kicking it old-skool. respect!
the fact that apple's iPad business is bigger than dell's pc business is just mind-blowing.

Tuesday, July 19, 2011

July 19th

haha! "Murdochs Vow to Launch Full Investigation to Find Out Who is Running Company They Are in Charge Of" borowitzreport.com/2011/07/19/mur…
priceless! RT @caroldecker: God will you all knob off! I do not look like RB!!!!! You mother fuckers!!!
wow just wow. "Apple vs. NASDAQ, Microsoft, and Google. From the day of Google’s IPO through today" kungfugrippe.com/post/783325080… /cc @kevinthau
prototyping a new blog format. next up: inline media. isaach.com/2011/07/july-1…

Monday, July 18, 2011

July 18th

this web page is very pleased with itself for intercepting right-clicks: cl.ly/2c0Q331l3r1x30…
>boggle<. NotW phone hacking whistleblower found dead and "the death is currently being treated as unexplained" guardian.co.uk/media/2011/jul…
what a great idea! "Netflix for Baby Clothes" plumgear.com /cc @hmnoise @wendyverse
weirder and weirder. police examine bag with computer, papers and phone found in trashcan near Rebekah Brooks's home: guardian.co.uk/media/2011/jul…
wow. "i understand if u smoke weed, but no touching the children. ALL RACES WELCOME BESIDE ORIENTAL!" sfbay.craigslist.org/sfc/tlg/249345… (via @grauface)
shit's got serious. i'm about to install Eclipse, lord help me.
already frustrated beyond belief with Eclipse. that didn't take long.
this evening's view from the front deck @ Casa Nueva Crapworth instagr.am/p/H_5X8/

Saturday, June 18, 2011

Catching Up

It's been so long since I last posted I figured a catch-up was in order. I think I have the Instagrams to tell the story since last time.

So obviously the bean's doing great:

family
We bought a new house:
empty house is empty
and filled it with boxes:
ECardboardBoxOverflow
My commute goes over Bernal Hill now:
bernal commute #1
which looks lovely in the evening too:
bernal
On June 1st we launched the new Twitter Search:
twitter search+photos launch room
and celebrated with drinks that evening
cheers to the launch of the new twitter #search
and dinner the next week
storefront

After the launch I needed some time off, so took a week's staycation beginning with a walk over Bernal (Friday)

evening in bernal
and then a trip to Ikea (Saturday)
Jag, Robot
a walk in the Mission (Sunday)
http://farm3.static.flickr.com/2656/5825543646_e5f77dabfd.jpg
a trip downtown (Monday)
http://farm4.static.flickr.com/3406/5830206712_307bab3d92.jpg
a picnic in the park (Tuesday)
#staycation picnic with @thebeean
a trip to the wine country (Thursday)
yay!#staycation wine tasting
and then, on Friday 17th June, my 38th birthday, a birthday card made of elephant poo:
.@wendyverse sure picked a special birthday card
dinner at a favorite restaurant
sign
a trip to the animal shelter
feral cat entrance
and adoption of Chaucer the cat:
Chaucer the cat

Today was @thebeean's 322nd day:

day 322
and she met Chaucer:

And now you're caught up.

Sunday, May 01, 2011

Pale Blue Dot

This thread on Quora is doing the rounds and it's worth skimming through for a quick journey through some of the most iconic photographs of all time (the Blue Marble, for instance, is the most distributed photographic image in the world).

The Pale Blue Dot, though, I'd never seen before. It's a picture of earth taken by Voyager 1 in 1990 from a distance of 3.7 billion miles:

I found it utterly mindblowing, but even moreso these beautiful words from Carl Sagan, who originally requested that NASA instruct the spacecraft to take the photo.

From this distant vantage point, the Earth might not seem of particular interest. But for us, it's different. Look again at that dot. That's here, that's home, that's us. On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives. The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, every hunter and forager, every hero and coward, every creator and destroyer of civilization, every king and peasant, every young couple in love, every mother and father, hopeful child, inventor and explorer, every teacher of morals, every corrupt politician, every "superstar," every "supreme leader," every saint and sinner in the history of our species lived there – on a mote of dust suspended in a sunbeam.

The Earth is a very small stage in a vast cosmic arena. Think of the rivers of blood spilled by all those generals and emperors so that, in glory and triumph, they could become the momentary masters of a fraction of a dot. Think of the endless cruelties visited by the inhabitants of one corner of this pixel on the scarcely distinguishable inhabitants of some other corner, how frequent their misunderstandings, how eager they are to kill one another, how fervent their hatreds.

Our posturings, our imagined self-importance, the delusion that we have some privileged position in the Universe, are challenged by this point of pale light. Our planet is a lonely speck in the great enveloping cosmic dark. In our obscurity, in all this vastness, there is no hint that help will come from elsewhere to save us from ourselves.

The Earth is the only world known so far to harbor life. There is nowhere else, at least in the near future, to which our species could migrate. Visit, yes. Settle, not yet. Like it or not, for the moment the Earth is where we make our stand.

It has been said that astronomy is a humbling and character-building experience. There is perhaps no better demonstration of the folly of human conceits than this distant image of our tiny world. To me, it underscores our responsibility to deal more kindly with one another, and to preserve and cherish the pale blue dot, the only home we've ever known.

Voyager 1 was then, and is still, the most distant man-made object in existence.

Tuesday, April 12, 2011

Mark Twain to Walt Whitman

This transcript was sent round the office today (what great people I work with at Twitter!) and it took my breath away somewhat. Mark Twain wrote this glorious letter to Walt Whitman on Walt's 70th birthday in 1889:

Hartford, May 24/89

To Walt Whitman:

You have lived just the seventy years which are greatest in the world’s history & richest in benefit & advancement to its peoples. These seventy years have done much more to widen the interval between man & the other animals than was accomplished by any five centuries which preceded them.

What great births you have witnessed! The steam press, the steamship, the steel ship, the railroad, the perfected cotton-gin, the telegraph, the phonograph, the photograph, photo-gravure, the electrotype, the gaslight, the electric light, the sewing machine, & the amazing, infinitely varied & innumerable products of coal tar, those latest & strangest marvels of a marvelous age. And you have seen even greater births than these; for you have seen the application of anesthesia to surgery-practice, whereby the ancient dominion of pain, which began with the first created life, came to an end in this earth forever; you have seen the slave set free, you have seen the monarchy banished from France, & reduced in England to a machine which makes an imposing show of diligence & attention to business, but isn’t connected with the works. Yes, you have indeed seen much — but tarry yet a while, for the greatest is yet to come. Wait thirty years, & then look out over the earth! You shall see marvels upon marvels added to these whose nativity you have witnessed; & conspicuous above them you shall see their formidable Result — Man at almost his full stature at last! — & still growing, visibly growing while you look. In that day, who that hath a throne, or a gilded privilege not attainable by his neighbor, let him procure his slippers & get ready to dance, for there is going to be music. Abide, & see these things! Thirty of us who honor & love you, offer the opportunity. We have among us 600 years, good & sound, left in the bank of life. Take 30 of them — the richest birth-day gift ever offered to poet in this world — & sit down & wait. Wait till you see that great figure appear, & catch the far glint of the sun upon his banner; then you may depart satisfied, as knowing you have seen him for whom the earth was made, & that he will proclaim that human wheat is more than human tares, & proceed to organize human values on that basis.

Mark Twain

Thanks @shinypb.

Sunday, April 03, 2011

Day 245

Lux turned thirty-five weeks old yesterday. Here's a photo I took on her 245th day:

Day 245

It's not true that I take a picture of her every day. I aim for at least every Saturday (marking the weeks) plus some opportunistic mid-week shots every now and then. Still, from this accidental project I've now collected quite a few photos at http://isaa.ch/thebeean. I'm trying not to feel pressured.

Bean Compendium

Friday, April 01, 2011

The Rest of Hawaii

one third of the world's pineapples are grown in Hawaii #hawaiifactsless than a minute ago via Twitter for iPhone

After the tsunami was a surreal calm. The next day in the hotel lobby there was this:

ALL CLEAR
and people selling t-shirts saying "I survived the tsunami: 3/11/11" (it's the American way, yo!). We got to keep our fifth-floor ocean-view room for another day (suck it, Priceline) and then left the hotel for our next accommodations. Time to downshift for a couple of days; we headed to a hut in the jungle near Hoolawa Bay.

In the hut: no drinking water, no bath, no shower, no crib, no heating, no AC. One 6" centipede.

Outside the hut: ah-ha! The shower (fed from rainwater):

our hawaiian jungle shack has a shower

And so it goes.

From the hut we explored the Hana Highway. It's a whole thing (it's got its own Wikipedia page) but the most spectacular sights aren't especially baby-friendly. Out guidebook suggested 300ft rocky scrambles, 25ft sheer climbs and 100ft swims to see the most amazing waterfalls. With a seven-month-old it's just not going to happen.

But we did the drive, hung out on the beach at Hana Bay, and came back again. It was a great way to end the vacation.

First waterfall we saw on the Hana Highway:

Waterfall
Thick bamboo:
Bamboo
Hana Bay:
Hana Bay
Wendy and Lux:
Wendy and Lux
The Highway itself:
Hana Highway

The rest of the photos are on Flickr.

Sunday, March 27, 2011

Best App Store Review Ever

I found this originally in image form. It was begging to be transcribed so here it is with many props to Ghostmoth.
Join the adventure!
★★★★★ by Ghostmoth on Mar 26, 2011

Color is a ground-breaking new entry in the new genre of MMPRLMG (Massive Multi-Player Real-Life Marketing Games).

Imagine yourself emerging from the dense forest of the App Store™. In a clearing ahead you see a shiny new icon, a multicolor wheel. Its name is Color. In the distance you hear marketing dogs yelping buzz. "Social!" "Find Someone." "Party!" You press Install, and your adventure begins!

You tap the app and you're presented with your first challenge. The gatekeeper. You must enter your name and have your picture taken before you can continue. "What will my name be used for?" you ask. No response. "Who will see my picture?" Silence. "You must give us your name and image or you cannot proceed" the interface insists. You acquiesce, wondering if you haven't made your first mistake. But there's no going on until you do, and you WANT to go on.

You are whisked through a portal into a chamber. Along the border are strange icons. In the middle a large, jaunty, mural in the seat-pocket-emergency-evacuation-instructions drawing style. It shows intent people in pants all taking pictures with their phones. The caption reads "Take photos together."

You decide to explore the icons. One's sort of an infinity/yin/yang. You wonder what that's supposed to mean. You tap the icon and find yourself on a blank screen. The icon changes to overlapping ovals. What does this new icon mean? You tap that one. You return to the mural room.

You examine the third icon, clearly a clock. You tap it. You see your face, name and the date. Nothing else. The clock icon is now lit up. You wonder what that means. You notice that questions are starting to accumulate. Should you be writing them down? You tap the clock icon again. It turns into a white screen with the words "No messages." The icon has turned into a sound-wave. You wonder what that means.

You continue to poke around the interface. There are no settings. No info button. No hints. You start to sweat a little. No tutorial. No about screen. No credits. No link to a website.

Then you remember the warning. The one written next to the install button: "Do not use Color alone!" You call up a friend. You both look at the interface together. There's no change.

Now things are getting spooky. Is this all there is? Is there no one to explain what these things are or how they work? Is this interface really so simple and obvious that it doesn't need any kind of guide? The thought suddenly crosses your mind that you might not be technically savvy enough to understand an interface that's so simple it doesn't need a manual!

But this is a Real-Life Adventure game, and you have assists! You cast the Google spell. You discover that the developers spent months developing advanced analysis and data-mining technology. It analyzes location, and position, and light, and ambient noise, and Bluetooth signal strength so it can… so it can… "What?" you ask out loud! "What on earth is it going to do with all this informa…" and you shut your mouth. Is it listening now? Is it analyzing your level of frustration, the shaking in your hand, the defeated angle of the device? Is somewhere a database recording your inability to solve this twenty-first century enigma that you hold in your hand?

You find the company website. It has no instructions. No "About us!" link. No tutorial, or feature lists, or forums, or support, or contacts, or FAQs. You can almost hear the developers laughing at you! "Silly user, sniffing around our website looking for information! We gather information, we don't give it out!"

You conquered Myst. You understood the end of Lost. You can do this! You're not going to let this new adventure game genre get the best of you! You will master this if it takes all weekend. You discover a button to create a group! You wonder what a group is. Progress, of sorts.

But at least you know it's just a game, and not actually an app to share photos. And now you also know that you are alone. And you're uncool. And not very clever. Because Color told you so.