Stream: Standards

June 27th, 2010

I’ve been thinking about inboxes and obligation a lot lately. Email has a certain set of social conventions associated with it. Unread email is a burden. Email waiting for a response is a burden. That’s just the way the expectations have evolved for the medium.

But it ain’t necessarily so. What if everybody had two inboxes – email for essential communications, the must-reads; and something else, the inbox for non-essential information, for dipping into and serendipitously discovering something useful or entertaining.

I can think of multiple ways to implement this. I think, ultimately it will have to be built in a backwards compatible manner, on top of email (maybe Raindrop can lead here?). But since everybody’s on Twitter these days I thought I should poke them in the right direction.

From my Twitter bug report:

What I want to be able to do is to send a tweet that will only be seen by one user but which doesn’t cause them to receive an invasive notification. For example, imagine if my bank tweeted me every day about any credit card transactions on my account. That would give me the chance to spot fraudulent transactions but it wouldn’t overload my email inbox.

February 11th, 2010

Sanjay Kairam:

To me, it seems like one of the biggest hurdles for most people in terms of social search or networking tools is the cost of building up their networks, so this would provide a quick and easy way around that.

from The Rise of GoogVark

Hmm. Really? Aardvark already had Facebook Connect and Gmail contact importing. Is clicking one button and maybe typing your password too much for most people?

If so then XFN and things like the Google Social Graph API are the way to go.

I think a bigger hurdle for companies trying to get into the search game is the extra cognitive effort it takes people to decide if they want to do a Google search or an Aardvark Search (or hey, a MrTaggy search). One assumes the acquisition will at least address that issue for Aardvark. We still don’t have a good answer for companies that don’t get acquired by Google though.

PS: look at that, I’m blogging again!

March 21st, 2007

From Niall Kennedy’s (always excellent) analysis:

Adobe’s first big Apollo app is an Internet video application codenamed Philo. The pervasiveness of Flash Player created multi-billion dollar Internet video startups powered by the Flash video format. The Philo team hopes to expand the display size and quality of distributed videos and get publishers encoding using the latest Flash video encoders. Publishers can brand the entire video player, delivering MTV content in what looks like a MTV video player, or a Rocketboom-themed player…

Great!! thats just what I want – an MTV branded video player to play MTV videos and a Rocketboom branded video player to play Rocketboom videos. Awesome!

This is not the future of the web people, and it certainly isn’t the future of the desktop. Please try to resist.

January 31st, 2007

But will it have a breakthough event API?

If, as it seems, the iPhone’s software will all come from Apple then all the development fun will happen in the browser, in particular in whatever version of Safari the shiny little device ships with. And it will be fun if Apple give us, as developers, access the right information. I’m talking here about that information coming from the user’s fingers. After all, who wouldn’t want to create the kind of effortlessly intuitive interfaces the Jeff Han showed off in his TED talk?

Will they let us though? There are a few directions Apple could go here.

  1. Be scrooges and filter out multiple touches before they get to us, only letting the user interact with web pages one finger at a time, the others controlling scrolling probably. Web Dev Chorus: Booooo!
  2. Give us the raw events from all touches but leave it up to us to do the hard lifting of working out which mousedown/mousemove/mouseup events came from the same finger. Web Dev Chorus: Grumble, Grumble, even huger javascript libraries, Grumble
  3. Generously preprocess the input data for us and label mouse* Events with unique “device” identifier. Web Dev Chorus: Yaaay!! Go Apple!

The iPhone definitely has javascript (and may have flash), but that’s not enough. Javascript’s current way of getting information from pointing devices like a mouse, what’s called the DOM API, has no way of distinguishing between clicks from multiple sources (nor does Flash for that matter). Neither DOM 3 nor Web Apps 1.0 has added any properties to the event object to deal with multiple pointing devices. At a minimum it would be nice to standardize on a new field of the event object that uniquely identifies the input device for the duration of a mousedown/mousemove/mouseup cycle.

I would imagine Apple will not be that pushed to let javascript know about multi-touch. It will only detract from their own installed apps and introduce potentially low standard interfaces that would nonetheless be associated with their brand. However the problem will certainly come to the fore as other companies follow Apple into the multi-touch field. We might as well think about what we’d like now.

Update: Dave Hyatt from the Safari team replies…

I’ll have much more to say about this in the coming months.

…which makes me cautiously optimistic. It must be pretty exciting to be him right now.


Stream: Search

October 27th, 2007

This is a tip for search engine optimizers of the future, a future in which Powerset, or a similar system, grabs a major piece of the search market. Powerset has language understanding capabilities well below those of a human. In particular it deals much better with sentences constructed in what might be referred to as some form of “Standard English”. This is not a peculiarity of Powerset. If you ever find a NL system that understands humans as well as they understand each other then you’ve found genuine AGI and you’ll be doing more interesting things with it than making search engines. I’m sure the guys at Powerset are thinking about ways to parse sentences that don’t quite match their grammar. Nevertheless, it will always remain true that natural language search engines do not read the web as well as humans do.

Given this tip, you can guess what search engine optimizers will do. If you want to increase your chances of being indexed right by Powerset, you’d better work out what grammar it likes best and conform to it. At last, prescriptive linguistics will find its true purpose. Imagine the written comment of a future English teacher, amid the red marks, “Incorrect grammar. Will not be well indexed”.

April 9th, 2007

There is a hypothesis pertaining to robotics and computer generated, human-like characters called the Uncanny Valley. It states that as robots become more and more human-like, the comfort of humans interacting with them takes a sharp dip before it rises again towards fully human interaction.

Uncanny Valley Graph

In Fernando Pereira’s latest take on Powerset, he eludes to a similar nonmonotonic function for natural language search. Conversing efficiently in natural language requires that you can predict, to some degree of accuracy, what will be understood by your conversation partner. Systems that get uncannily close to human understanding yet fail in cases that are only predictable to the system designers may be frustrating to use. How will the tradeoff between increasing utility and increasing inscrutability pan out? Where is Powerset going to be on this hypothetical graph?

Uncanny Valley

As Fernando says, only testing on the final system will tell.

February 8th, 2007

Anyone………..? Anyway, now has Prolog docs, thanks to me.

October 23rd, 2006

I just realized what’s missing from the Google Reader interface….Search! Why can’t I search inside all my subscriptions just like I can do with emails in Gmail? Come on, I’ve seen all the BigTable magic you Googlers have access to. I know you can do this.


Stream: Bunnies

October 11th, 2007

There now follows, a bunny



Stream: My Tweets

Stream: Quick Links

March 7th, 2007

The Milky Way

I’ve always heard considerations of scale used in favor of there being other intelligent life in our galaxy – There are so-and-so many suns with so-and-so many planets, many of which have the same conditions as our planet when life arose here. Surely there must be lots of other life and surely there must be intelligent life since it would be a coincidence for them to have had less evolution time than us relative to the age of the galaxy (assuming evolution has a tendency to beget intelligence).

It was interesting to hear Creon Levit mention a scale argument for the opposite conclusion on a Neo Files podcast. It goes like this: If there are many such intelligent civilizations, more advanced than us, then they probably have the ability to create self-replicating machines that can be sent out to colonize a suitable planet and prepare it for their more fragile creators. These machines could be programmed to launch identical probes to other planets. And the replicated machines in those probes could do the same. And so on. You get an exponential processs that could spread through the whole galaxy in a relatively short amount of time.

So where are they?

March 7th, 2007

CD Baby

I had never shopped at CD Baby before. I had a fun time. Now they get a blog mention and a link out of it. Site designers take note.

February 13th, 2007

I think I’m in love with Jeff Han.

November 21st, 2006

I like it.  Joel tackles a pet peeve of mine, the myriad of ways to end your Windows session, as an instance of the general principle of less options == better UI.


Stream: Personal

April 6th, 2007

Inspired by Paul, I did my first YouTubing at lunch today. This is a quick 360 of the view from PARC’s 3rd floor patio. If the video wasn’t so shaky and low quality then you might be able to see the bell tower at Stanford.

It doesn’t quite show you how PARC is right on the edge of “civilization” with horses grazing in fields out the back. Here is the view out my window right now:

Green hill outside my window

Come mid-summer, all this will be brown.

December 2nd, 2006


Tonight was PARC’s Christmas holiday party in the Computer History Museum in Mountain View. I highly recommend visiting if you’re in the area. This evening they fired up the PDP-1 for us and I kicked ass in Space War. Steve Russell, the original programmer, was there apparently but I didn’t get to play him.

October 30th, 2006

You walk into one of the hardware labs at PARC. You’re surrounded by scary machines with lasers and pointy bits. There are drawers and drawers of microprocessors, transistors, whatever you desire. Scalpels and screwdrivers in multiple shapes and sizes. There are three guys standing around something in the middle of the lab, pointing and discussing. You walk over and get a peek at what they’re cooking up. It’s a pumpkin. They’re discussing strategy for the inter-lab pumpkin carving contest.

October 27th, 2006

I think spellcheck in every textarea is going to do wonders for my spelling. I’ve almost got over the urge to spell definitely definately already.


Stream: Coding

March 26th, 2007

At Startup School, Paul Graham told us of Y Combinator‘s new policy for funding teams:

Photo by ybboey

If you don’t have a good idea, no problem, he’ll give you one – as long as you’re awesome. Oh to be Paul Graham. To have teams of shit hot coders fighting to be accepted by you so that they can work on your idea all summer, for minimum wage. He has created the world’s first ultra-high-level compiler. I’m being disingenuous of course. This compiler has (at least two) minds of it’s own, and Paul doesn’t really mind if it doesn’t do what he asks just as long as there’s a fair chance it will make him some money.

Here’s his full pres:

December 9th, 2006

UPDATE: The new TextWrangler 2.2 has Ruby highlighting. Yay!

Coding Ruby in Xcode on a Mac? Like the built-in syntax highlighting but wondering why the apple+/ shortcut makes C comments, not Ruby comments? The following might save you a few minutes digging.

Find and open this file:

  /Application Support
      /Developer Tools
          /10-User Scripts

Replace this…

# determine the type of file we have by looking for the #! line at the top
# careful–it might already be commented out!
my $commentString;
if ($fileString =~ m!^($perlCmt|$cCmt)?#\!\s*.*?/perl|^($perlCmt|$cCmt)?#\!\s*.*?/sh!) {
$commentString = $perlCmt;
} else {
$commentString = $cCmt;

…with this…

my $fileName = “%%%{PBXFilePath}%%%”;

# determine the type of file we have by looking for the #! line at the top
# careful–it might already be commented out!
# Otherwise look at the file extension
my $commentString;
if ($fileString =~ m!^($perlCmt|$cCmt)?#\!\s*.*?/perl|^($perlCmt|$cCmt)?#\!\s*.*?/sh!
|| $fileName =~ m!\.(rb|pl|sh)$!) {
$commentString = $perlCmt;
} else {
$commentString = $cCmt;

Restart Xcode. Now commenting should work properly.

November 26th, 2006

Anybody interested in a programming puzzle? Des? Warning: This post is full of seemingly incomprehensible strings of symbols that programmers call regular expressions, which actually do something very useful. If that doesn’t turn you on, better to quit now. If you’re still here, consider this…

Have you ever wondered why programming languages that have good regular expression support (Perl, Javascript, Ruby, etc.) nevertheless omit syntax for negation or conjunction within regexes? I’m sure there must be a good reason for this. Has it been found that people just don’t intuitively get what negation does to a regex? Are language designers unwilling to complicate their syntax? Are they avoiding the processing it takes to complement or intersect finite state machines? They do compile to finite state machines, right?

Let me give you an example of where negation would be useful. Say I’m scanning through some text for some sub-sections which have been explicitly quoted. If the delimiting characters are angle brackets then I can write /<([^>]*)>/. The bit in the middle [^>] matches any character which is not a ‘>‘. This is a limited form of negation on a single character. Taken as a whole the expression says: Find me the strings of non-‘>‘ characters which are surrounded by a ‘<' on the left and a '>' on the right. So far so good.

But what if the sub-sections I'm interested in are bounded by multi-character strings? '<<<' and '>>>' for argument's sake. In analogy to the example above I want to be able to write /<<<(?^.*>>>.*)>>>/. I've invented some syntax for negation here: (?^R) means match anything that the regex R doesn't match. The R in my example (.*>>>.*) matches any string that contains the sequence '>>>' so the expression as a whole says: Find me the strings that do not contain '>>>' that are bordered by '<<<' on the left and '>>>' on the right. Now, in this example, the same can be accomplished with a "lazy star" (if your programming language supports that) which just makes the regex non-greedy within the bounding strings: /<<<(.*?)>>>/. But I would much rather state the patterns I'm looking for declaratively than change the ambiguity-resolution mechanism of the processor. Why can't I?

Any finite-state toolkit with regex support has syntax for negation and conjunction. Do you know of any programming languages that do? If not, why not?


Stream: America, Life, Questions

January 27th, 2007

I'm a resident alien

I’m not going to go into details but user-friendly it most certainly is not! We all know this could be done so much better. Where are the web 2.0 startups doing 3-click tax returns?

I recommend Wikipedia to explain it in plain English.


Stream: Meta-Ideas, Quick Links

Stream: Firefox, Google, UI, Web Apps

November 4th, 2006

Just experienced: a reason that web sites hacking the right-click is bad. It’s the same as the usual problems with overriding browser behavior. In Writely, Firefox 2.0 is now very kindly underlining spelling mistakes for me. But when I go to right-click and change the spelling, Writely has very unkindly got rid of my standard right-click menu and I have no access to the suggested changes.

In fact Writely’s right-click is hilarious. If I click ‘copy’ or ‘cut’ or ‘paste’ in their menu i get an error popup saying “We don’t have access to your clipboard from javascript so you can’t use these commands from our very pretty right-click menu”. But if you hadn’t messed with my right-click menu in the first place, it would work just fine!
Google, you complete and utter tools!