Wednesday, October 24, 2007

I need a vacation

I was checking some HR information tonight on the corporate intranet, and I checked my accrued vacation time: 20 days 2 hours.

That's a month of vacation time.

I'm burnt out, and I have a month of vacation time. It's like starving in front of a pantry.

I have an intern working with me until the end of November, so I can't reasonably take a vacation until then. My wife has to work in December, so we can't do something extended until January, plus, we just can't really leave our dog for a whole month. At least, not yet.

Some quick math: let's say I wait the two months to take a vacation on January 1 and take a month of paid leave. By February 1, I'll have another five vacation days.

At this rate, I can retire on vacation time in 2110.

Friday, October 19, 2007

Pipes: damn that was easy.

As you might have suspected, I played with Yahoo Pipes today for the first time. I was really looking forward to working with it, because I've always enjoyed working with
Visio and Rational Rose. Of course I didn't expect to draw a UML diagram, but I really like the idea of entities flying around the screen, well connected to each other.

You might note that I didn't mention how much I liked working with dia, because I didn't like it. Sorry Dia. Anyway, where was I going? Pipes. Yes. As the title says: Damn. That was easy.

I built two pipes. Both read my FriendFeed feed. One only lets twitter messages through and one lets through everything else. Once I include those two feeds in Google Reader, I can separate reading Twitter messages from reading everything else.

Logically, I can continue by filtering something else into its own feed, such as people's Amazon Wish Lists, or I can filter them out altogether (I hate wishes!)

After filtering, I tried to perform some mild content mutation, but after 20 minutes, I decided to live without it, but I'm sure it's just a matter of time. Neat, neat, neat.

Thursday, October 18, 2007

Nacent FriendFeed thoughts

I received my FriendFeed invitation tonight. I'm excited!

After registering for my account, I was asked to set up my profile: registering a blog, my public linkedin profile, twitter account id, et cetera.

Then I was asked to connect to friends whose feeds I want to view. There are very few FriendFeed accounts at this time, which is reasonable, they need to manage growth. If you're my friend, go sign up for the Beta at Do it now. This post will be here when you get back.

Some thoughts:
  • The UI is very responsive and easy to use. There's a little bit of flakiness around the UI while setting up services, but I won't go into it here. This is not a bug report. (Update: About two minutes ago I noticed FriendFeed go practically completely limp, only to return with that very UI feature addressed! They're hard workers.)
  • There's a limit to the services you can set up. It only seems to allow me to register one blog. I have two (granted I almost never post to the other one). This specific case isn't a big deal, but a publish/subscribe API for custom services has got to be in their plans.
  • They presume a certain subset of available data from service providers. For instance, their LinkedIn service only informs you when someone changes jobs. How about when someone is endorsed?
  • It looks as if all their services get their data from unsecured public or hidden profiles, and nothing that requires passwords. This makes sense given the generally insecure nature of the web, but it limits FriendFeed's usefulness.
    • Would it be possible for FriendFeed to inform me when someone invites me to view their hidden Picasa Web album? This winds up as a subset of the authentication problem.
    • I want Facebook status updates!
  • FriendFeed lists several Google services. It's irritating that I have to register for each of them. This isn't FriendFeed's fault: each service requires a special URL. What would be nice though, is if FriendFeed grouped services in some logical way, either by organization (Google, Yahoo, etc.) or by service type (e.g. Photos, Videos, RSS, Social). This, I'm sure, will be addressed as the number of services grow. In the meantime the filter is very nice.
  • This can easily turn in to alot of data. I'd like to split my friends feed into multiple feeds. This looks like a perfect case for Yahoo Pipes.
    • Here's a thought about wanting to connect FriendFeed, Yahoo Pipes and authenticated services: let's say FriendFeed allows me to subscribe to a service that informs me when a first-degree LinkedIn contact creates another first-degree relationship. LinkedIn has a security model whereby you don't get to see someone's contacts unless you are a) logged in and b) have a first-degree relationship with that person. How can I safely pass that information into Yahoo Pipes to split apart for my RSS amusement? Looks like the internet Security Model of 1994 lives on.
  • Before I forget, FriendFeed allows you to create profiles for people you know that have not yet set up a FriendFeed account by saying, "I know Harvey. Here is his blog. Here is Harvey's Flickr Account." You know what they called this feature? "Imaginary Friends!" I love the name. Note to FriendFeed folks: I'd like to see my Imaginary Friends in the same place as my real ones. When someone for whom I have an Imaginary Friend subscription creates an account, how difficult will it be for me to reconcile them? What happens if the services I listed for my friend in their imaginary profile is not a proper subset of the services my friend lists for himself?
OK, I'm done pontificating. Sorry if I got any facts wrong, FriendFeed. Good luck!

Friday, October 12, 2007

Time moves on.

Today is Luciano Pavarotti's birthday. My father really loved listening to Pavarotti sing. He even went to meet Pavarotti on several occasions. There are photos in the "family vault" to prove it.

My father died in 1992. Since then, if I found an interesting reference to Luciano Pavarotti, I would tell my mother.

Today, Google provided a special logo for Luciano Pavarotti's birthday. My first thought was: I wish I could tell my dad. My next thought was: I can tell my mom. The one after that: I can't tell her either. My next thought: Who can I tell?

As it was said, So it goes.

In other news: Maggie is awesome. Today is my wedding anniversary. One of my very best friends is arriving to see me in five minutes. It's still a good day. Time moves on.

What's better than forgetting your anniversary?

Your wife, also forgetting your anniversary.

Happy Anniversary to you, my lovely wife! Let's forget our anniversary (and much, much more) for the rest of our lives.

Sunday, October 07, 2007

Thoughts on "Gears and the Mashup Problem"

... in which I meander through my mind while the TV is off.

Yesterday I watched a recording of a talk given at Google in the past month called Gears and the Mashup Problem. It's only 45 minutes long and worth the time. The speaker, Doug Crockford, was both interesting and funny. He is listed as "The world's foremost living authority on JavaScript". (Has JavaScript been around long enough to have a prior foremost authority that is no longer living?)

From the abstract:
Mashups are the most interesting innovation in software development in decades. Unfortunately, the browser's security model did not anticipate this development, so mashups are not safe if there is any confidential information in the page. Since virtually every page has at least some confidential information in it, this is a big problem. Google Gears may lead to the solution.
I'm not particularly interested in what leads to the solution because I write few, if any web applications. That's mostly because, as Doug said, writing Ajax applications (and subsequently, mashups) is really hard. But I do use them. Recently there has been a trend to write web applications that let you supply credentials (e.g. supply your AIM login/password, or gmail login/password, et cetera) which the service will use to access your contact list. This is a convenient and quick way to build your social network within that application. Unfortunately, it involves way too much trust. I did this just once, I supplied my login/password for one service, and have regretted it ever since. What if my password was stolen? Does trusting this service mean I am now more likely to trust a shadier, less well-established social networking site next time? The discomfort doesn't come from discovering that someone attempted to access my account illegally, but because it shows how easy it is to succumb to sacrificing trust for convenience. Every time I connect to the application to which I gave my login and password, the remnants of that trust appear. "You seem to know the following people," the application tells me. "Why not ask them to sign up for our service?" It makes me feel like someone knows my secret, like the day in high school when I had a hickey on my neck. (Do kids still do that?

Of course I changed my password immediately after I came to my senses.

Incidentally, this underscores Doug's point about the "Blame the Victim" security model, where the entire security model is the end-user's responsibility, and frankly, most people just don't understand that model.

So let's revisit this contact list vs. social networking problem. Doug suggests a mechanism through which my contact management application and social networking application can trade information through a limited conduit: neither learns each others credentials, and you give a more explicit approval: "Would you like to share your contacts from with" That's definitely better, but not the ideal.

First, I need to trust that the contacts will only be used to identify if my contacts exist in my network. Is there an implicit step where can use my contact list to build what I am sure is their gigantic map of everyone's relationship on the web? This, unfortunately, comes down to website privacy policies. Hopefully when you are asked to share contacts in the context given above, it should be a short step to a very clear usage policy: "These contacts will only be used to find existing matches in The relationships will not be stored. The email addresses will not be harvested." This would be much better than "To see how we use your information, please visit". But the truth is, at some point, you need to decide the level of trust based on criteria like the size and reputation of the data consumer, the risk of sharing such information, and your general comfort level.

Second, I don't want to give access to all my contacts. I surely don't want to have access to the email addresses of my niece and nephew. I don't want to scare the new woman I just asked out. (This is fictional, I am happily married, and hope to keep it that way!) This requires a contact management tool that allows you to accurately and easily categorize your contacts, and it means I get to pick and choose which contacts I allow to share with, either by group or by individual.) One small problem with this is that I really don't want to spend my life categorizing my contacts. If I wasn't going to organize music for my ipod, I'm surely not organizing my contacts for this. If only I could use the relationships stored on social networking site to help categorize my contacts on my contact management site. And there we have the feedback loop that requires bidirectional trust. There's the web, building on the web, building on the web.

There are some very interesting and related things associated with moving toward the next big integrated web:
  • Joel Spolsky is looking for the environment that will lead the next big leap forward for web applications.
  • Friendfeed is written by some Very Smart former Googlers, which serves as an aggregator of the several social networking services (including those where the network is secondary, like Flickr and PicasaWeb.) In this case, a trust issue remains. I haven't looked at Friendfeed yet, but I look forward to it.
  • I remember the launch of Yodlee in 1999. Back then it wasn't just a financial services aggregator (as it seems to be today), but a general purpose aggregator, an aggregator of bank accounts, credit card accounts, airline mileage accounts, car rental memberships, et cetera. Talk about trust. I haven't used Yodlee in many years, so I can't really comment on it, other than recalling a security policy that theoretically prevented Yodlee employees from accessing your trusted data. Granted, 8 years is old. It's as old as JavaScript.

Now I see that we are like the Egyptians that built the Great Pyramid of Giza. We're the Egyptians, and the huge interconnected social network is the Pyramid. (This isn't really anything new. Substitute 'World Wide Web' for 'Social Network', and you get the same thing. The underpinnings of this social network and mashup aspect is pretty much what seems to be The Semantic Web.)

Incidentally, it turns out that the Pyramids at Giza were not built by slaves, but by the Egyptian citizens themselves. Thus, "we are like the slaves that built the Great Pyramid at Giza" doesn't really fit, I can't liken us to slaves. This idea merits further study. Meanwhile, see and

What do dogs dream of?

Oh my, my dog is dreaming that she's barking.

I can't tell if it's a bad dream or a good one.

It's so friggin' cute though!

"Woof Woof! Woof!" she dreams, but it just sounds like "weef weef! weef!"

The Slippery Slope of Television

... in which I document the history of my love-hate relationship with Television.

My mother always said that when I was a child, the only time I would actually sit still was when I was watching television. That was always true until I got a computer.

The punishment in our house for misbehaving always included loss of TV privileges. At dinner, we would watch TV, and if you were punished, you were forced to look away from the TV, and you were even called out for watching through the TV reflection in the window.

When I moved out of my parents' house, I took a TV with me. It had rabbit ears, a 13" screen, and dials for UHF and VHF. No remote control. No cable. It was all mechanical knobs and dials. I was actually very happy with seven channels plus VHF, but because I had no remote control, one night when I had the stomach flu I watched the same channel for 12 hours. It was channel 4, NBC. You are less than 35 years old if this shocks you.

I was 25 when I broke down and bought a 26" TV and a VCR, and got a subscription to cable. I still didn't watch tons of TV, but I was happy to have it. I bought my first stereo when I was 27. I didn't get it because I realized my life was missing a stereo, I got it because a friend worked for a stereo manufacturer and offered me a really great discount.

In 2000 I bought a DVD player, and only because my favorite movie was not available in VHS format.

In 2005, when my wife and I moved into our new house, we agreed to live without cable. I really enjoyed it. It was $60 per month we weren't spending, and while reception could occasionally be a problem (we often lived without CBS) we were pretty happy with it. Or at least, I was. My wife was not very happy with this. She missed cable. She kept threatening to get cable. I never said no, and I never got it for her. I figured, if she wanted cable, she could pick up the phone and do it, and that would be fine. But she never did it. I don't know why. Maybe because it just wasn't that bad, or maybe because she wanted to make me happy.

For her last birthday, I broke down and called the cable company. That's right: My wife's birthday present was a cable television subscription. I scored many, many points. This was not a thoughtless present.

Two months after getting cable, I bought a Tivo. Like the stereo, I purchased a refurbished unit for $100, which was a perfectly satisfactory price. Unsurprisingly, Tivo has changed the way I watch TV. For the last 45 days, I have watched approximately six hours of television a night. 9 of the last 14 nights I fell asleep on the couch while watching TV. This has been shocking, and a little scary.

Here's my observation about Tivo: the promise of Tivo is that you'll always have 'your favorite shows'. Truth be told, I don't think that's what Tivo does for us: pausing live TV is really awesome, and recording programs is also great, but the truth is there's still not that much I want to watch. At its essence, all Tivo really is is an insurance policy against commercials and channel surfing, and the monthly fee is the premium you pay to ensure against those two things.

Yesterday, we got a large screen TV: a Sharp Aquos 42" LCD TV. Again, I didn't get it because I felt this overwhelming need for a large screen TV, but rather, because I could get it for a good price. It's very nice, and I like it, but I don't have access to any HD channels. This started to scare me: do I now upgrade my cable box to be HD compatible? My Tivo is also not HD compatible. Do I also have to upgrade that?

Fortunately, no. I called my cable company, and they want $9 a month to upgrade my service to HD, and this would include, and I'm getting this from memory: CBS, NBC, ABC, KTLA (FOX), KCAL (CBS Local), KTTV (CW), TNT, BET, Discovery. 9 HD channels that I don't really watch to begin with. The channels we regularly watch are Bravo, Food Network, Sci Fi, Comedy Central, and a large number of movie channels (Encore, Flix, IFC, Sundance.) I'm sure HD is coming into this house, but not now. For now we seem to have finished adjusting our relationship with television.

Buying the new TV has sort of put me over the edge. I've been spending too much time in front of it. Sleeping through The South Park Movie last night was my sure sign, so for a short while, the TV stays off.

I love my TV. I hate my TV. I love my TV.

I'll proofread this later. Right now I'm taking my dog for a walk.

A final observation: The two times I bought a television occurred just after losing someone in my life. The first TV (and VCR) came about when I broke up with a girlfriend of 2 years. The second TV (and Tivo) were bought less than 3 months after my mother died. This is not a coincidence. I confess to having a sense of superior pride when I am not up-to-date with technology. Granted, both losses were very different, but I think they show that it takes some energy to not give in to consumerism, and when I suffer a loss, I either use consumerism to feel better, or I just don't have the energy to fight it.