Piled Higher and Deeper

Paul Brown @ 2006-04-28T19:17:00Z

Last year in the US, credit card issuers sent on the order of one “pre-approved” offer for every man, woman, and child on the planet. I know that they sent at least one to a child, as the kid got an invitation after she signed up as a frequent flier on United. It might be scarier that 0.3% of the offers (6x108 · 3x10-3 = 1.8x106) were accepted.

Surely there are better reasons to kill trees than just to fill landfills and recycling bins...

(comment bubbles) 2 comments

Some Homebrew Sauce for Google Calendar

Paul Brown @ 2006-04-15T03:50:00Z

As I looked at some cool ideas from Elias Torrez (via James Snell), it occurred to me that I could make some homebrew sauce for Google Calendar to address one of my wants, namely a meeting time chooser for one or more participants. Here's how it could work.

In the Atom feed for the calendar, there are elements in a Google namespace like so:

<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
      xmlns:gd="http://schemas.google.com/g/2005">
  [...]
  <entry>
    [...]
    <gd:when startTime="2006-04-03T16:00:00.000Z"
             endTime="2006-04-03T17:00:00.000Z"/>
  </entry>
</feed>

We'd want a query that accepted a tuple of URLs for Atom calendar feeds and performed an iterative merge:

  1. Copy the <gd:when> elements from the first feed on the list into working storage of some kind. We'll write a @startTime and @endTime pair as (s,e) in what follows.
  2. Iterate through the elements of the next feed in the list; suppose that the current one is (x,y). If there is an element (w,z) in the scratch list such that z<x and w<y, replace (x,y) by (min(x,w),max(y,z)). Otherwise, add (x,y) to the scratch list.
  3. Repeat #2 with each feed.

As additional sugar, one additional feed could be used to represent desired days or time ranges by exclusion. The combined feed would contain the collective busy times for the group, and the publicly visible Atom feeds for each calendar would be all that would be needed.

This could be done in a browser with a script written in E4X, with the caveat of having to perform date arithmetic. (The XML Schema variant of ISO 8601 date-times compare cleanly as strings, but the JavaScript Date object is based on a different syntax.) XQuery supports operations and comparisons on dateTime and duration values, so it would be another good candidate. As would Ruby, thanks to Atom support and date support in a compatible format.

(comment bubbles) 0 comments

Less Vanilla and More Sauce, Please

Paul Brown @ 2006-04-15T00:04:00Z

For the record, I like Google Calendar, and it's probably going to replace iCal as my primary calendaring tool. I've already set up iCal as a client by subscribing to my Google calendar, and this will solve the problem of synchronizing calendars on multiple machines and being able to update the calendar from a remote location.

A solid online calendar is good, but I was hoping for something a little saucier. My wishlist:

  • A web service interface for managing events and checking free/busy status. For instance, I'd like to be able to provide a generic method for people to request a meeting with me or figure out when I'm free for lunch. (Yahoo!'s calendar has a feature like this, IIRC.)
  • I got addicted to labels (i.e., tags) in GMail, and I miss having them in the calendar. For example, I would like my “home” and “work” calendars to contribute to a single, aggregate availability indicator, but I wouldn't want the details of “home” events to be visible to “work”. (One program that fulfills this requirement, if a bit obliquely, is Microsoft Entourage through what it calls “projects”.)
  • I'd like the labels and addresses that I've built up in GMail to be shared with the calendar and vice versa, e.g., so that I can look up everything related to a given topic via a label.

And I'd love to have something more or less like MailTags for GMail with the ability to spawn time-bound tasks from an email. MailTags uses the “URL” field in the task within iCal to store a file://... link back to the mail item, and that bidirectional association is convenient for providing context. Of course, this would require that there be support for tasks on the Google platform, but I can only assume that it's in the works. (Maybe it will be called “Google-To-Doogle”? Feel free to use the name...)

Maybe a Google GTD implemented via Greasemonkey is only a little while away?

(comment bubbles) 0 comments

Damn Ergonomics

Paul Brown @ 2006-04-10T00:36:00Z

After having my hard drive renamed “iywemsndfgouy” a few times, I got a recommendation for AlphaBaby from Sam (thanks!), and the kid likes it. A lot. AlphaBaby displays shapes and letters and plays sounds in response to keypresses but otherwise locks the machine down. (Nonetheless, Emme has managed to hit the magic key combination ctrl-alt-cmd-q a few times with her palm and middle finger and get back to renaming desktop items.) My old 17“ G4 Powerbook is a downstairs email terminal about 50% of the time and running AlphaBaby for Emme the other 50%. (Fortunately, she's not talking yet to ask for a MacBook Pro...) She has a grand time massaging the keyboard and watching the shapes. She has actually started to peck at the keys with a finger as her manual dexterity improves, but it's never very long before she notices the power button on the upper right — round, shiny, textured, and inviting. It just looks like it should be pushed, so it gets pushed. Repeatedly. Half the time, she suspends the machine; half the time, she shuts it down. We'll see how long it takes for her to get over the urge to push it.

(comment bubbles) 2 comments

How would you boil the ocean?

Paul Brown @ 2006-04-07T17:19:00Z

Via Mike Champion, I've come to find out that there's a whole book full of think-outside-the-box interview questions called How Would You Move Mount Fuji?.

Here's one of my favorite such:

An infinite number of identical ball bearings are at rest and spaced out on an infinite, perfectly level frictionless surface. A single ball bearing, identical to the others, is rolled down a ramp onto the surface, and the ramp is removed. After some amount of time has elapsed, and without watching in the interim, how can you identify the ball bearing that was added?

After a little while, I'll put an answer in the comments.

(comment bubbles) 8 comments

Devil's Definition of Off-Site

Paul Brown @ 2006-04-07T00:17:30Z

In the spirit of the Devil's Dictionary, here's a definition of off-site:

off-site, n. A meeting or sequence of meetings held outside of the office and intended to bore or frustrate leaders into making choices.
(comment bubbles) 0 comments

Sitting on the Other Side of the Table

Paul Brown @ 2006-04-06T23:55:00Z

Earlier this week, I had the opportunity to sit down with the co-founders of a local startup (non-software) and go through their funding deck, and it was almost as much fun sitting on the (mock) investor's side as on the entrepreneur's side. Some of the take-aways that came out of the process:

  • I'm betting on you. Tell me how you are going to make the business successful. If I'm sitting across the table from an entrepreneur who's built a small going concern, the last thing I want is for them to use my money to change horses. I want to know how my money is going to enable the entrepreneur to scale up first and then how they'll know when they're ready to scale out.
  • You only need a salesforce once you've got a proven, repeatable business model. Or, to put it another way, “Show me the collateral!” Salespeople drive the sales process, not sales; sales happen as a result of a well-designed sales process. I want to hear the whole story that starts with the market, how you're going to reach prospects, how you're going to qualify prospects, how you're going to drive the succession of contacts between discovery and closure, and how you're going to ensure that the customer is happy. I also want to believe that you've got a passion for the data coming out of the process — when and how do you know if it's working?
  • Be prepared to hit interim milestones if you call them out. It's great to dangle pending deals from your pipeline in front of your prospective investors, but trying to create urgency this way can backfire on you. An investor may (quite legitimately) ask you to knock off your next few milestones as proof of your ability to execute on your plan. If the price goes up appropriately, that's OK, because it's the same investment either way in terms of the price versus probability of success.
  • Why aren't you doing that now? As you describe your plan, your potential investor is going to stay right with you and potentially get a step ahead. For example, if you call out a list of potential acquirers and an exit by acquisition, you should expect the question of what you're doing to connect with those companies now and build a relationship.
  • What do you want for yourself and your business? Are those compatible? This is a version of the “comfortable, rich or wealthy?” question but with a twist. It's one thing to put a $100M valuation up on a slide, another thing to lay out a plan, and something altogether different to execute on it. Be very clear and honest with yourself about whether you're the guy with the $100M idea or the guy with the $100M handshake.

I claim ownership of none of the ideas above; I learned nearly all of it from my Board, my investors, friendly VCs I've pitched, or from the School of Hard Knocks.

(comment bubbles) 1 comment

All Posts contains 399 items in 57 pages of 7 items each:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57