Photo: New Orleans, LA, October 2000

Apple WWDC 2009

April 7, 2009 | People & Society | Software | Technology

If you read my post last year and want to make plans, here's the link.

Permalink | Comments (0)

Facilitating Online Identity Management

January 26, 2009 | Business & Commerce | Products & Opportunites | Software

Companies should make identity management easy within their online services. Specifically, it's becoming more and more desirable to have a "split my identity" feature.

For example, I have a Twitter account. Turns out I like Twitter. (It wasn't always the case.) Eventually I want to split my twitter stream into a personal stream and a business stream. The business stream would be open to followers. The personal stream I'd probably restrict to people I've met in person. When I'm posting about selecting music for vacuuming, that's personal-stream material. When I'm wishing out loud for a feature improvement in Adobe InDesign that can be public.

But what if I decide to split my streams after I have 100 followers, not all of whom belong on the personal list?

The current practice is to start announcing on the existing account that you have a new account – "if you haven't met me in person I'm planning to block you, so go follow me over at this new account." You might announce this every day for a week, perhaps a few times on the last couple of days, then go block everyone you haven't met in person.

Some followers will make the move, some won't. Unless you care a lot you probably won't track who fell off the list, especially if you have far more than 100 followers.

It would be better if I could choose which followers to "move" to the new account. That is, I would choose which followers will follow my new business account instead of my existing personal account – without any action on their part. I move their "following" subscription to another identity. Maybe they get an email letting them know.

That's it: no business rules, no criteria, no searching. Just a list of followers (rows) and maybe two columns of checkboxes – people could be on either or both lists.

This wonderful solution assumes that the service can associate my two accounts with each another. In other words, one person can have more than one account. For many services you are allowed to have more than one account, but many times the service uses your email address to create the unique account.

It's very convenient for developers to use an email address as a login – I've done it myself. It's convenient because it's guaranteed to be unique without any development effort. No downcasing, no uniqueness checking, the user doesn't have to remember lots of different login names, etc. But if every account requires a unique email, then this "split my identity" feature is very, very difficult – potentially impossible – to implement.

To allow each email address to have more than one identity is a very big architectural change if the initial design didn't account for this idea. Changing the one-to-one relationship of a login account to a one-to-many relationship will likely have a lot of "ripple effects" throughout the codebase, so the development cost will be very high. Thus the probability of developing the feature is low. Well-financed services can do whatever they need to do to service their users. Bootstraps and startups usually cannot.

Had the service started out with this idea it would be much easier to design and build, even if they didn't implement it at the start. This is a good example of the importance of key architectural decisions made early in the design process. Sometimes you know what you'll want to do in the future, and sometimes you don't. But it's worth spending enough time in the very earliest design stages to think through the implications of the trade-offs you're making.

In theory this problem is an aspect of what OpenID is supposed to solve, going further by abstracting across websites and services, not just within one service. It's designed by Brad Fitzpatrick, so it's probably the right idea. Reviewing the history you can see why, in general, adoption by developers is slow (but growing and accelerating). But even using OpenID, the service will have to build their data model around a one-to-many login/account relationship. Twitter's growth provides a good example of why the effort might be worth it.

Permalink | Comments (0)

Downloading .asx video streams

October 21, 2008 | Business & Commerce | Software

Say there's an online video that is only available for real-time streaming, and you want to watch it offline at your non-'net convenience, like on a plane or on your iPhone. A lot of these streams have urls that end in .asx. If so, here are some (techie, Mac-centric) references that will let you download them and watch them later.

The Major MMS page is a good starting point. You'll quickly realize that the .asx file is just a redirector that has an mms:// url inside of it. In most cases you'll need to figure out what the mms:// url is.

Chris James Martin also had some good pointers, though his curl-based approach didn't work for me. I forget why, but I moved on.

You'll probably also end up at jwz's saving video streams page, no surprise. Short version:

mplayer -dumpstream -playlist url -dumpfile filename.wmv

Unfortunately, even after downloading the mplayer source, configuring, making, and installing it, this didn't work for me due to a "stream not seekable" error, which I could not debug, even with Google. Oh well, got some geeking in. Although it failed, and I didn't have the time to hone my ninja chops to master the source, this is probably the most promising long-term and flexible approach.

In the end, I used an application with a graphical interface to mmsclient, AFSRecorderX. You still have to figure out the mms:// url, and then you paste that into the url field, and choose "mmsclient" from the Tool pop-up menu. There is a "Select" button to choose a destination folder, but it doesn't do anything – everything is saved to the root (/) of your hard drive no matter what you point it to. Sometimes AFSRecorderX will spew a lot of information into the log section of the window, which you can ignore. It will not tell you when it's done; you'll have to occasionally check the file size of the download and eventually when it stops you can open the file and see if you got it all. Sometimes the log stops, and you think it's failed – you might reboot your computer, or even your network, and re-try several times. Only when you leave it alone long enough will you notice that the file size is indeed increasing, and it's working correctly. It's not apparent why the log is sometimes flying by like a 9600 baud modem, and why it sometimes stops dead, regardless of the success of the download. Despite the hackish nature of ASFRecorderX, it worked, and if you want the video badly enough it's currently the most straightforward approach.

Net-net, so to speak: The academic and corporate overlords that want you to watch video only in real-time streams are going to a lot of effort to make them hard to download. But, like all things code, if you're willing to go through your own personal video stream download hellfire, you can do it, because in the end, the data manipulates pixel-bits on the screen, and if you have access to the stream, you can do something with it.

The complete and total fall-back hack, the gawd-am-I-really-going-to-have-to-do-THIS? solution would be to use SnapzProX and make a real-time recording of the video window on your screen. I wasn't willing to stoop that low.

Permalink | Comments (0)

Hot Dating Tip [SF, CA, USA]

June 9, 2008 | People & Society | Software | Technology

It's sweeping generalizations day at Notio!

I guess it's kind of a semi-secret, but once you crack the code, dating geeks is a really good move. Granted, the male/female ratio is unbalanced – but generally, if you're a woman and you're looking for a guy, you could do a heck of a lot worse than finding a cool geek to hang out with. The girl geeks tend to be really cool too, there are just fewer of them.

Here's a post that gives you the downlow howto. The comments there flesh it out. Here's another one a little more cliched. But their summary is good:

Why Geek Dudes Rule

  • They are generally available.
  • Other women will tend not to steal them.
  • They can fix things.
  • Your parents will love them.
  • They're smart.

This post is decent too. The classic essay on dating geeks is called Dating an Apple Developer by Emily Hambidge, but the link is currently broken; maybe it will come back.

The reason I bring it all up is, this week in San Francisco CA, there are 5,200 Macintosh and iPhone developers – programmers, engineers, ubergeeks – mostly age ~16 to ~50, congregating downtown at The Moscone Center for Apple's World Wide Developer Conference (WWDC). These are the people who designed and built things like the iMac and the iPod and the iPhone. There are over 1,000 Apple engineers (SF local) on-site. As Kathryn said this weekend, "Hot dating pool."

Even better, Apple has provided a two-hour keynote stream live on the Internet. Why would you want to spend two hours watching Steve Jobs and Scott Forstall and Phil Schiller (and a dozen other geeky guys) do technology demos? Well, when you go crawling the hotels and pubs around Moscone, this is what everyone will be talking about. It's rocking their world. They're hanging with their peeps, and life is good. The video is two hours of ultimate inside conversation starters, background info, and geek dude archetypes. It's like a briefing book for engaging with the hot geeks this week.

If you're single in SF, go down to the Moscone at the end of the day and follow the packs of geeks to the pizza and beer joints, and ask them what's cool at the conference, or what cool iPhone apps they've seen.

And if you miss this year, it's an annual event, usually in June, so just come another time.

Permalink | Comments (0)

FYI

March 28, 2008 | Life | Software | Technology

WinXP (hello, ActiveX) & IE7 (welcome, Acrobat Reader 8.1.2) running Online Quickbooks, via Parallels and Mac OS X running on a MacBook Pro, prints checks no problem on the HP color laser connected via JetDirect and Ethernet. Astounding.

Permalink | Comments (0)

Programmatic Color Palettes From Images

February 18, 2008 | Software

You may recall that I wrote a Ruby program about nine months ago to programmatically generate a color palette. In that version, I manually measured the colors from an image on screen, and typed them into a text file, and the program generated color squares from the text file.

When I finished I wanted to automatically generate a color palette from the image, but I didn't have any more time to experiment, and my chops weren't really good enough to know how to approach it.

About a month ago, I happened to be cruising Shelly Powers' site, and she had this great idea to use the rule of thirds to automatically get color values in images. She's using it to dynamically generate CSS color stripes and circles on the fly, which is cool in-and-of itself, but her code gave me the clue on how to take another run at this. (Thank you!) And, in the last nine months, my chops got better, having written all the CSS and a lot of Rails view code for Gift Ecology.

I now have a new program, palettegen.rb, taking photos in and putting palette images out, more or less how I want it to work. You can see the code here. Now, don't laugh – my chops have improved but they're not pwning you yet!

If you have a Unix machine with a decent Ruby, RMagick, and ImageMagick installation, you type:

ruby palettegen.rb InputImage OutputImage SwatchSize AperatureSize

IOW, you point it to an image, and tell it what to call the output image. You set a size for the color swatches it will generate. And you tell it what aperture to use when selecting pixels. The aperture is on the end of the line because you might want to experiment.

The program finds the center of the image, and also divides the image into thirds, horizontally and vertically, then finds the intersection points of those four lines. At each of the five points (intersections plus the center), it selects a small "window" of pixels based on the aperture setting, and then quantizes those pixels down to a single color. This aperture size turns out to be important – you can imagine the color variation between, say, 5 pixel and 500 pixel apertures. Then it makes eight color variations for each of the five sampled colors.

Examples

Vienna Candy Shoppe Window

Here's the original photo:

ViennaCandyShop_web.JPG

And a palette (swatch=35, aperture=10)

ViennaCandyShop_palette.jpg

The first thing that jumps out at me is, Wow, that's a beautiful palette. The next thought is, They're not the colors I would have guessed from looking at the photo. But beautiful nonetheless.

Here's how to read the palette image:

  • Each row represents a palette based on one of the five points sampled in the image.
  • The actual color selected from the image is the center swatch of each row (#5).
  • To the right in each row we're adding white. 20%, 40%, 60%, 80%.
  • To the left in each row we're adding black, 20%, 40%, 60%, 80%.

Let's look at the same image, with aperture=100

ViennaCandyShop_palette_50.jpg

Another really interesting set of colors. What about a very small aperture, like 2?

ViennaCandyShop_2_palette.jpg

You get the idea. Here are two more examples.

Flowers

Flowers_web.jpg

Palettes, aperture 200, then 7

Flowers_palette_200.jpg

Flowers_palette_7.jpg

Acrylic painting by John Joline

joline_acrylic_web.jpg

Palette, aperture 100, then 50 (very subtle differences)

joline_acrylic_palette_100.jpg

joline_acrylic_palette_50.jpg

It's a simple and crude program, but it's generating pleasing results. It took about 18 hours to write. The Ruby was relatively strightforward, though I haven't made it very elegant yet. What was hard was figuring out how ImageMagick wanted me to do things. I had a good idea of what I wanted to do, but it took time to try to figure out how, for example, to "average the swatch and blend colors." It turned out to be a "crop" and a "quantize" – that was a few hours right there, finding those two words, and how to use them. I also spent several hours learning how to do the actual image math. I pursued one strategy, simply multiplying the rgb values, for a long time. Which not only didn't work, but was completely the wrong idea to begin with. I needed to learn how to do a "blend," which I finally arrived at via a detour through "composit." And if you're blending, and want to "extrapolate" (using values greater than one) don't forget to note the teeny tiny text that says, "Extrapolation ability was added to the "-blend" operator in IM v6.3.5-10." If your install is less than that (6.3.4 in my case), don't bother with the extrapolation research.

Permalink | Comments (0)

Leopard Might Be Ready

February 12, 2008 | Software

When Betalogue says Mac OS X 10.5.2 is a very good release, it may be ready to use.

So, it’s not all rosy and there is of course still plenty of room for improvement. Still, I must say that the combination of the improvements that Mac OS X 10.5 brought (particularly in Spotlight and Safari) and the fixes provided by this latest update make for a very satisfactory experience, and I am particularly pleased that we already have, so soon after the initial release of Mac OS X 10.5.0, a system that is indeed already very usable and reliable and quite well designed.

Pierre Igot writes some amazing in-depth public bug reports. Examples: 1, 2, 3, 4.

Permalink | Comments (0)

The Point and Pixish

February 12, 2008 | Arts & Culture | People & Society | Software

The Point looks really interesting.

The Point is a social platform for people to solve problems they can’t solve alone. Start an ultimatum, fundraiser, or social contract. Whatever the cause, use a campaign to bring it to the tipping point.

Also, beautiful minimalist design.

Bonus link: Pixish, Visual Assignments For Creative People. Less beautiful design, but still very nicely done. It was this week's favorite new website design, until I saw The Point. Not a bad week for web design, when you've got two solid choices in the first two days.

Permalink | Comments (0)

On Twitter

January 23, 2008 | Arts & Culture | People & Society | Software | Technology

rentzsch: yay morphed a client meeting into client work-time. "Nothing new to talk about, how about I just keep working?" "Sure." I love sane clients

I never understood Twitter. I checked it out way back when, probably around when it first started, readin' the blogs and all, and I just didn't get it. "Okay, you're supposed to answer the question, 'What are you doing?' – I guess you post from mobile phones or something – SMS, I think that's a phone thing – because posts are limited to 140 characters! What can be said in 140 chars? Well, maybe someone will probably use it."

I signed up for an account though, mostly to landgrab the esteemed and coveted notio member name. I'm not sure I ever went back, even after I read about Twitter taking off and getting popular. I just figured, "I don't really have a modern phone, pretty sure it doesn't do SMS, and gosh ain't the kids just crazy these days with their Internets??"

Then in early January a friend was flying out to Iowa, and he said, "I'm on Twitter BTW. I usually post when I travel." And I said, "What is the deal with Twitter? I just don't get it." He said, "You have to get a desktop client, like Twitterific. Then subscribe to a few people, look at my friends and then look at their friends and subscribe to the interesting ones. You can't use the website this way, you need the integrated view. They're calling my flight, gotta go."

So I downloaded Twitterific, and did what he said, and it only took about half a day, before, suddenly – bing! – the bell rang inside my head. It turns out that keeping Twitterific on the the background is like sitting in a cafe where everyone there is a friend. The 140 char "restriction" drove behavior toward a new style of online banter, sort of a synthetic conversation made up of everyone announcing presence to each other. It's not really better or worse, it's just really different.

I "followed" my friend over two days, as he made his way through his business trip. Here are some examples to give you a sense of the flow:

It's Jan 2nd, can we stop the Christmas music playing at the airport yet?

Delayed twice already. Looks like I'm missing my connection.

Can someone at Gate 36 in Cincinatti please tell the woman cutting her nails in public that it is disgusting.

Next to Mike Wallace while checking in at the Marriott.

Shorter than I expected.

DSL line just went down... to the backup we go.

Up and running on the backup DSL. That was a little stressful... but better now than 8:00

Romney has conceded Iowa

They are calling it for Obama here.

Adam Nagourney is an intense typist.

The live band at the Ron Paul party next door is playing "When will I be loved"

Teardown time.

Done. I'm outta here.

Happy to see and hard to beleive but the airport is totally mellow.

It's got its own vibe, doesn't it? Poetic, in a way. I had a real sense of what was going on in his life. A tight connection, over two days. And each of those "tweets" was read in-line with several other folks on-going comments and announcements. When people subscribe to each other's tweets you often see people reply to each other, in public, using the "@" to cue the recipient, as in, "@notio are you making a point?"

All this just goes to say that Twitter is an interesting place to play, and I missed it the first time because I tried to box it into existing mental models. On its own terms it's radical and super-interesting. For instance, back to that quote from the beginning:

rentzsch: yay morphed a client meeting into client work-time. "Nothing new to talk about, how about I just keep working?" "Sure." I love sane clients

Anyone who has ever worked in a professional services capacity will recognize several nuggets of humorized truth in rentzsch's tweet. It conveyed to me a complete emotional state. I laughed out loud, smiled, and when I happened to see Twitterific ask, "What are you doing?" I wrote, "Writing about twitterific"

@notio

Permalink | Comments (0)

Running Out of Ideas?

January 17, 2008 | Arts & Culture | Business & Commerce | Life | Software

Amusing one-line review of Handmeon, pointing to the Boston Globe article:

Handmeon.com is a cool idea, perhaps showing that Web 2.0 entrepreneurs may be running out of ideas.

Well, I laughed out loud. He goes on to say, "Actually, I do think it's a pretty interesting social experiment." Thanks Pito, for taking a look.

Permalink | Comments (0)

Letter from Steve

October 30, 2007 | Products & Opportunites | Software

As usual, John Siracusa wrote the definitive review of the new Mac OS (Leopard). Upon reading about the continued slide into foolishness that is today's Finder, I sent the following email to Steve Jobs' public email address:

Hi,

Please hire John Siracusa to lead the conceptual design of the next Finder revision.

http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/12

It's worth reading the section "An application divided against itself" in detail, with an open mind.

Thanks,
Michael J.


I received this response from The Man himself:

This person feels strongly about one way of doing things. Others feel strongly about doing them another way. You can't please all the people all the time, but we try our best.

Steve

I replied:

Realizing you don't have time to dialogue on this, I'd just point out that he presents an approach that would allow the current Finder evolution to continue, and still allow a more spatial approach as well. His views have evolved as has OSX. In any case, thanks for the response; Apple rocks, mostly.

And Steve said:

We think we have a much better approach.

Steve

So there you have it. Maybe the Leopard Finder is awesome.

Permalink | Comments (0)

This Explains Everything

August 1, 2007 | Software

Well, all those IE problems are a lot clearer now. via cboone.

Permalink | Comments (0)

Programatic Palettes

May 12, 2007 | Software

It all started when I saw Running the Numbers. I really enjoyed the colors of the very last photo, Shipping Containers. I thought, "I wonder if that would make a good color palette?"

I fired up the Digital Color Meter, which ships in the Applications/Utilities directory of all Mac OS X systems, and set the aperture wide to average the color variations within each container color. For the first 30 container images (two rows), I manually copied the RGB color value and pasted it into a text file.

Then I wanted to sort the colors by color value, and make a montage. Four hours later, starting from scratch, I have wrestled my first Ruby/Rmagick/ImageMagick program to the mat. I haven't been able to sort the colors just yet, and it's far past bedtime, but here is a program that reads the text file of color values, makes a color square for each, and generates a montage of the squares.

require 'rubygems'
require 'RMagick'
include Magick

# Create an imagelist to hold the individual color blocks
  colorSquare = Magick::ImageList.new

# Read the text file and get RGB hex color values into an array
   colors = IO.readlines("colors.txt")

# Create scratch images, one per array value
   colors.each { |c| 
     colorSquare.new_image(55, 55) { self.background_color = c }
  }  
  
# Simple sort does not group by colors. Maybe try getting the
# separate chromaticity or rgb values instead? Or changing the 
# colorspace to HSL first?
   colorSquare.sort! 

# Positon scratch images on canvas
   montage = colorSquare.montage {
     self.geometry = "+2+2"
     self.tile = "6x5"
     self.background_color = "white"
  }

# Write file to disk
   montage.write("out.jpg")

Here's what it makes:

out.jpg

Update: "colorSquare.sort!" does a sort, but I can't seem to get the reds, greens, and blues, to group together. I think I'd have to separate out the RGB color values and sort by individual array elements.

Permalink | Comments (0)

On The Matter of Constructing RSS Feeds

March 6, 2007 | Software

I believe this is working now, for real.

The situation is that RSS readers vary significantly in how they mark what is new and what isn't. It turns out that the GUID, supposedly a "globally unique identifier", when constructed as a url, can confuse newsreaders - even good ones like NNW. It is globally unique, and it is valid, but it's not enough info to go on, so the reader errs on the side of not annoying a user with a "new item" mark when it might just be an edit to an existing story.

So, to fix this, I added a random number as an anchor to the guid url, like this:

http://department.college.edu/news-events/news/index.html#466

Because it's random, it will update on every publish, and NNW likes this. It still validates. When you click the link it takes you to the top of the page since the anchor doesn't exist.

Nice brain puzzle. Involved NNW forums, the RSS spec, much Googling on RSS in practice, figuring out random numbers in Perl, and making sure this worked for both single-page and normal publishes.

Please test! ;)

Signed,
Your Consultant

Permalink | Comments (0)

The Joy of Developing

February 26, 2007 | Software

The great Mac RSS newsreader, NetNewsWire, has a new beta out, version 3.0. It's really good, with a ton of performance improvements and nicer layouts. But, they say it crashes some, and they want bug reports.

In fact, it did crash on me once in the past couple of weeks ago, so I sent a note to the developer with the crash log. If you're unfamiliar, a crash log is generated by the operating system, and looks something like this:

Thread 2 Crashed: 0 com.apple.Foundation 0x9297c120 _NSRaiseError + 264 1 com.apple.Foundation 0x9297be5c +[NSException raise:format:] + 40 2 com.apple.Foundation 0x92a44324 mutateError + 172 3 com.apple.Foundation 0x92948200 -[NSCFString appendString:] + 100 4 <<00000000>> 0x000272bc 0 + 160444 5 <<00000000>> 0x00027338 0 + 160568 6 <<00000000>> 0x000b8cac 0 + 756908 7 com.apple.Foundation 0x9298a888 -[NSURLConnection(NSURLConnectionInternal) _performOriginLoad] + 328 8 com.apple.Foundation 0x9298893c _resourceLoaderPerform + 224 9 com.apple.CoreFoundation 0x907dd4cc __CFRunLoopDoSources0 + 384 10 com.apple.CoreFoundation 0x907dc9fc __CFRunLoopRun + 452 11 com.apple.CoreFoundation 0x907dc47c CFRunLoopRunSpecific + 268 12 com.apple.Foundation 0x9298869c +[NSURLConnection(NSURLConnectionInternal) _resourceLoadLoop:] + 264 13 com.apple.Foundation 0x92961194 forkThreadForFunction + 108 14 libSystem.B.dylib 0x9002b508 _pthread_body + 96

Cool, huh?

Well, yesterday I got a note from Brent Simmons, the developer, that read:

Awesome crash log! I've never seen mutateError before, but I love it. Thanks, Michael. (This should get fixed in the next public release.)

And that, friends, is a good developer/customer relationship.

Permalink | Comments (0)

Rapid Serial Visual Presentation

February 11, 2007 | Arts & Culture | Software | Technology

Reading this interview with Cory Doctorow (by RU Sirius, nonetheless), I discovered Rapid Serial Visual Presentation (of text).

The speed-read shows you one word at a time, and it shows them at a speed that’s determined by a little slider. And it pauses a little after a comma, and longer after a period, and longer after a paragraph break. And you can crank it way up and it just rockets past. And you’re getting every word. It’s kind of meant for very small screens, and it really feels like you’re doing something weird to your brain. It really feels like you’re tweaking your cognition in ways that it was not intended to be tweaked. It’s very transhuman.

Worth researching, methought. If you want to see a simple example without loading your own text, here is Cory's book Eastern Standard Tribe pre-loaded into SpeedReader online. Just go to that link and move the slider to the right and set the speed you want. Following are brief instructions to experience RSVP with any text you want.

Download this simple Java-based app that runs on Mac, Windows, and Linux. Then grab some text. I used the text file of Yochai Benkler's The Wealth of Networks, but you can use any plain text file you want. Dump the text into the "speederText.txt" file, add "START_SPEEDER" at the top of the file, save it, and open "textExample.html" in your web browser.

The first thing I notice, reading the Acknowledgments, is that, hehehe, the word "I" is all but invisible. I imagine people hear that invisibility too, when you write with a lot of "I's" in your sentences. So I think I should probably stop using "I" when I express myself.

After ten minutes of play, is there is a difference in perception between fiction and non-fiction? Cory's book seems easier to "read" than Yochai's, but the in addition to being non-fiction, Wealth is written from a legal perspective. It could simply be more dense, no matter slow or fast.

Permalink | Comments (0)

Social Web Hits The Election Cycle

January 26, 2007 | Governance | People & Society | Software

Great post over at Bokardo Social Web Design, altering us that Hillary Clinton is using Yahoo answers to gather the prol's thoughts on health-care reform.

One, Clinton is actually asking the American people what they think, rather than assuming or generalizing from the party she’s a part of. (this doesn’t mean she’ll listen, but it’s a start)
Two, Clinton is using Yahoo Answers, a publicly-accessible social software app to ask the question. In the past year Yahoo Answers has been a runaway success for Yahoo, racking up millions of users.
Three, in just two days there are over 35,000 answers!.

Sure, it could be a publicity stunt, but that will be self-limiting in the long-run.

Then again, here's Kos' take on Hillary and her netroots support in general:

Here's what I think -- Hillary has no interest in truly making up ground in the netroots. Rather, she sees it as a place to make a good show, and then sell that to the traditional media. It's her campaign's version of "Shock and Awe". Lots of noise. Lots of flashing lights. Lots of smoke. But it's all for show.

In a straw poll taken after Hillary's announcement, she got 4% of the vote, with Obama at 28% and Edwards at 35%. For my money, it's an Edwards/Obama ticket, and they will kick some serious butt.

Okay, enough with the trivial politics.

Permalink | Comments (0)

Wesabe

December 12, 2006 | Products & Opportunites | Software

Been meaning to post this for a while: Wesabe. There's a good tour describing the app.

Wesabe is a community of people who share our experiences with our money so we can help each other make better financial decisions. We do this by aggregating and analyzing our community members' personal financial data, and showing tips — recommendations to get the most from our money. These tips and recommendations come from the collective wisdom of our entire community. When one of us figures out how to make a great decision, we all learn.

Really interesting approach, requiring great trust, with potentially strong benefits to the participants.

Permalink | Comments (0)

PawSense

December 12, 2006 | Software

PawSense: Catproof your computer.

When cats walk or climb on your keyboard, they can enter random commands and data, damage your files, and even crash your computer. This can happen whether you are near the computer or have suddenly been called away from it. PawSense is a software utility that helps protect your computer from cats. It quickly detects and blocks cat typing, and also helps train your cat to stay off the computer keyboard.

Of course, Windows-only. Everyone knows Mac cats are much better trained and there's no market for remedial catproofing software.


Permalink | Comments (0)

PHP inside CSS

October 12, 2006 | Software

Did you know you can put php calls inside css? For instance, rotating images:

background: url(images/letterboxSpin.php) 0px 0px no-repeat; }

That's something of a mind bomb.

Permalink | Comments (0)

My Life at Work

October 12, 2006 | Life | Software

Excerpt:

  • Would it be possible to have the h3 pick up the correct "subhead" style from the div id="centerwrap" directly? That is, it would be nice if the user didn't have to enter the class in the edit block. We use the Markdown processor, so typically the user would start an h3 line with "###" and it would generate the h3 tags for them. But we can't specify css classes that way. If the h3's inside the centerwrap div got the class styling automatically (via a css selector) it would be mondo cool.
  • Likewise with the h2 class=movedot. Can this get picked up from the expTeaseWrap div? Generally speaking, we try to minimize class specs so editors don't have to worry about them. However, the "followme" class and the "last" class and the ones in the nav and such are fine because editors don't edit those ones.

From Open Space and World Café to Perl and CSS. No wonder I have a headache.

Permalink | Comments (0)

Stunt Software's Overflow

October 10, 2006 | Software

This has got to be the most elegant and straightforward software utility ever designed. Watch the short screencast movie to check it out. Without question, Apple should buy these guys and integrate this into the operating system.

Permalink | Comments (0)

Users GOOD, Groupware BAD

September 12, 2006 | Products & Opportunites | Software

I read this Jamie Zawinski essay last year, but it's worth another look.

The trick you want to accomplish is that when one person is using your software, it suddenly provides value to that person and their entire circle of friends, without the friends having had to do anything at all. Then, later, you pull the friends into the fold: if one of them starts using the software, they become their own hub, and get the benefit they have already witnessed from a distance.

The reason I landed there was because yoga classes are starting all over the Upper Valley, and I thought, It would be monster cool if there were a website where yoga studios could enter their class schedules, and publish them to a centralized (and, natch, localized) calendar where I could view them all together. And it would be even cooler, if that web app could generate iCal-format downloads that I could import into my desktop calendar. Ten seconds later I realized that yoga classes were a specific example of a much more general use-case with very realistic and widespread needs (school sports come immediately to mind, in addition to live music).

What I want: A consumer-grade website where I can "login," and "create," "edit," "delete," "search" or "browse" for one or more "topics" "within X miles" of "zip code," view that in a "list, week, or month-view calendar," "select items of interest," and "generate iCal" (and other standard) format downloads of that selection.

If you know of such a service please tell me so I stop designing it when I have client work to do. Related and useful: hCalendar and other assorted microformats.

Update: Doug asked about standards. Here are the links that probably matter most. I'm sure there are other standards, I'm just taking an open-format Mac-centrc approach.

Permalink | Comments (1)

Facebook Mini-Review

September 7, 2006 | Business & Commerce | People & Society | Products & Opportunites | Software

Well, I had a demo of Facebook, and it's a very nice web application. [Previously: Attention Metastream. Today: Fred Wilson on the changes (good comments thread).]

Facebook-public.jpg

(I have removed names from this screenshot.)

It's hard to get a sense of it from the picture, but I can tell that if I were a college student it would be easy to live here and check in frequently and see what my friends are up to and post about my life. There are nine million Facebook users, so they're doing something right.

I also note there is zero "flashy design" on this site. Note the one-color plus black palette, the simple obvious layout, the single ad in the left column, the simple unobtrusive logo in the upper left. It's a beautiful minimalist approach. This has the beneficial side-effect of lowering the server load and bandwidth costs for high-traffic sites.

It seems like the most popular websites either have bad design, or minimal design. You might want to think about that the next time you spend two hours getting the rounded corners just so in your incremental design update. Better to hire a good writer, or to think about your use-cases and user-centric design. As always, design has to support the message and function, not overtake the purpose of the effort. Facebook is a good example of What People Want.

Permalink | Comments (3)

WoW Update

September 5, 2006 | Business & Commerce | People & Society | Products & Opportunites | Software

In June 2005, I wrote about World of Warcraft (WoW):

Conservatively, there was a one-time revenue stream of just under $100 million dollars, and an on-going monthly revenue of just under $26 million (just under $312 million annually). They are opening the game up in China soon, where there are 500,000 players in the open beta period. It's not hard to imagine cumulative revenues of over a billion dollars, or perhaps two.

Today's NY Times brings news that indeed, they are on track for a billion dollars this year:

Less than two years after its introduction, World of Warcraft, made by Blizzard Entertainment, based in Irvine, Calif., is on pace to generate more than $1 billion in revenue this year with almost seven million paying subscribers, who can log into the game and interact with other players. That makes it one of the most lucrative entertainment media properties of any kind. Almost every other subscription online game, including EverQuest II and Star Wars: Galaxies, measures its customers in hundreds of thousands or even just tens of thousands.

The Times also addresses the employee head-count, which I had guessed at 350 a year ago:

Since the game’s introduction in November 2004 the company has expanded to more than 1,800 employees from around 400. Almost all of the additions have been customer-service representatives to handle World of Warcraft players, helping them with both technical advice and billing concerns.

That's $555,555 of recurring annual revenue per employee, for the business modelers out there.

And why do people play this game? First, it's easy for beginners to get started, but it also has a lot to engage long-term players. But the most important aspect can be gleaned from an interview with this 3,000-hour player:

“Think about it: I’m a 33-year-old guy with a 9-to-5 job, a wife and a baby on the way,” Mr. Pinsky said. “I can’t be going out all the time. So what opportunities do I have to not only meet people and make new friends but actually spend time with them on a nightly basis? In WOW I’ve made, like, 50 new friends, some of whom I’ve hung out with in person, and they are of all ages and from all over the place. You don’t get that sitting on the couch watching TV every night like most people.”

People want to be engaged—some might say entertained—and they want to extend their networks. Yochai Benkler might call it social production.

Please make a note of it.

Permalink | Comments (0)

DIY Website Heatmaps

August 24, 2006 | Software

Fantastic. Fully documented source code for making your own heat maps of user clicks on websites.

Permalink | Comments (0)

What Is Lingr?

August 13, 2006 | Business & Commerce | Products & Opportunites | Software

Coming soon...

Now live: "Lingr is the place for chat on the web. That's it, seriously- nothing could be simpler."

Permalink | Comments (1)

The Difference a ".." Makes

August 1, 2006 | Life | Software | Technology

Unbelievably crazy-busy day. At one point in the morning, Adrian was working on a website redesign, Marty was starting the v4.1 SFTP programming, Anne was catching me up on her sales work and the plan for August, and I'm thinking, "It used to be that I came to this office and it was mine alone and it was quiet and I could work for hours without interruption." Then Chris walked in to pick up his CDs and we talked about Radial for a few minutes. I looked around and there were five of us, three working on my projects and me wanting to escape and go talk music for a few hours. Insane.

So let's skip over the middle of the day, including the improvisational client meeting, the friendly walk back afterwards, the guilty pleasure of a massage mid-day, the haircut, and the work-dodging visit to Strings. I went to the post office and back to work. Oh, wow, now it's 5:30—is that still "mid-day??"

So I walk in and Marty is coding Perl, Adrian is coding CSS, and Anne is rearranging the office, having taken all the boxes to the basement, set up another desk in the corner, swapped locations of the round table and the printer, consolidated the office supplies, reset my filing space, measured for window shades, and generally cleaned up virtually everything. She's a little aggressive that way—I mean, I had done a thorough cleaning when I moved into the place in 1999, does it really need it again already?? Anyway, now four people can work there, maybe five, and while it might not be exactly private or spacious it certainly looks like a startup scene.

So by 6 PM all the slackers cleared out of there and we could get some work done. After just barely finishing the brain-meltingly complicated testing for version 4.0 (and, truth be told, it's not quite exactly totally done until I finish some UI changes and write the release notes and perform one last round of basic testing on the staging site) we launched into version 4.1, which has the SFTP support.

SFTP stands for secure FTP, and basically it tunnels insecure FTP over a secure encrypted SSH connection. Crypto is like the hardest thing in computing, and luckily Scott could get all the special pre-built binaries installed on Sunday so we could get right at it this week.

The first thing we needed was a server account where we could publish files via SFTP. We got that going, but it stopped working. We tried from another machine but couldn't get connected to the net. I wondered about the firewall, and messed around with some settings there. Didn't help. (Red herring: if it worked once, it wasn't the firewall.) Marty took the laptop outdoors to get some free Ivy League wi-fi, and it worked out on the porch even at 100 degrees and high humidity. So we messed around with the Ethernet routing and got the laptop connected and verified that it could SFTP in, but our development box couldn't. I had a flash that they were filtering our IP address because of our bad login attempts, and convinced Marty that it was worth emailing them to check. Ten minutes later, yes indeed. Notio shoots; scores. Okay, so now we can log in from both machines.

You probably can't believe you're still reading this.

So then I configured our software to publish to this now-working server. The target working directory path was "../www/workspace/pivot" We verified that when we logged in manually this path worked. We tested a publish run, and it failed. Well, off to look at logs, etc. Iterate on verifying where the code is failing. Etc.

Long story short, after, who knows? an hour? half an hour? we realized that logging in via SFTP put you in a different location than logging in via FTP. Really? Test. Yes, it's true. Logging in via SFTP you need to use "../www/workspace/pivot" but logging in via FTP you need "www/workspace/pivot" And that's the difference a ".." makes. It's sensible, one you realize that FTP typically sandboxes you into a location amenable to a webserver, whereas SFTP is actually using SSH, which is typically dropping you into your home directory, only a subdirectory of which is wired to the webserver. Oy vey.

So we need to have two config variables, one for FTP and one for SFTP. Now we know. Then we spent half an hour talking local search dev models, engineering talent availability, funding options, various complications, etc.

At 8 PM I went to the Coop to get dinner, technically supper, and came home to have a beer and eat and write this and try to chill enough to go to sleep. So much got done today, but exactly zero on my list. The next two days have to be super-productive, or the clients will have my head. Wish me luck.

Permalink | Comments (0)

Cogitating Is Doing

July 25, 2006 | Life | Software

In software engineering it's common to spend much more time understanding and characterizing something than actually implementing a feature or fix. For example, we just spent almost two hours pair programming to figure out 1) if the observed behavior is correct by design (yes); 2) why the error message is wrong (null set); 3) finding where in the code the message is being reported (line 1769); 4) typing "if !=NULL" in exactly the correct place, without disturbing any surrounding code; 5) testing the change to verify operation; 6) undoing the change to verify failure; 7) making the change again; 8) verifying the final change.

In other words, 120 minutes to type nine characters. Not quite as bad as fiction writers, I suppose.... But the real idea here is that doing requires thinking, and really, there's very little difference between the two in knowledge work. Sure, if you're hunting a grizzly bear, or plowing a field with your Fjord horses, or bolting the body to the frame on the assembly line, well in these examples there's a big difference between thinking about it and doing it. But for symbolic analysis work, thinking is far harder and more time-consuming than doing and the two are so intertwined as to be one and the same.

Permalink | Comments (2)

Things Programmers Say

July 24, 2006 | Software

Notio: There are a lot of CGI.pm flags for controlling the HTTP headers. Does our code send any of those?

P: Hang on, let me look. ... No.

Notio: For instance, it says "The -nph parameter, if set to a non-zero value, will generate a valid header for use in no-parsed-header scripts. You will need to use this if you need to create unbuffered output, for example for use in a 'server push' script."

P: [sigh] I'm going to go get a muffin.

Permalink | Comments (0)

cmd-tab

July 20, 2006 | Life | Software

Trivial Mac tip: I just figured out cmd-tab for application switching. It's great. The default selection is the last app you used, so it's easy to switch back and forth between two apps. You can arrow between any open apps, but the UI design to order them based on recency is brilliant.

Permalink | Comments (2)

AI@50

July 13, 2006 | Arts & Culture | People & Society | Software | Technology

Meg Houston Maker is doing some fantastic live blogging of the Dartmouth AI@50 conference.

This gathering celebrates, explores, and, to an extent, reprises the original Dartmouth Summer Research Project in artificial intelligence of 1956, which proceeded "on the basis of the conjecture that every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it." John McCarthy, then a Dartmouth mathematics professor, and his colleagues Marvin Minsky (Harvard), Nathaniel Rochester (IBM), and Claude Shannon (Bell Labs) coined the term "artificial intelligence" in their funding proposal to highlight the role computers may play in simulating (or bettering) human intelligence.

It's some of the best live blogging I've ever seen — she could do this for a living.

Permalink | Comments (0)

Examples of Categories

July 11, 2006 | Arts & Culture | Business & Commerce | Life | Nature & Environment | People & Society | Products & Opportunites | Science | Software | Technology

Art: Leonard Cohen and Sonny Rollins on live TV. (Thanks Jon.)

Commerce: Do Patents Encourage or Stifle Innovation?

Culture: On media elitism and the "derivative" myth

Technology: On playing with my Holux GPS unit...

Cool: Velcro Being Pulled Apart

Permalink | Comments (0)

Make Something People Want

July 9, 2006 | Business & Commerce | Products & Opportunites | Software | Technology

I hesitate to point to every Paul Graham essay that comes along, but these links are useful for future research. Excerpts:

The idea of building something popular then figuring out how to make money from it was born in the Bubble. It sounds irresponsible, but it works. Requiring founders to have a carefully worked out plan for making money is not hard-headed business sense. It's what hackers call "premature optimization." The really important thing is to make something people want.
Startups will be ever more common because they're now so cheap to start. In most of the startups we fund, the biggest expense in the first year is simply food and rent. It costs little more to start a startup than to hang around doing nothing. And instead of having to go work in a cubicle in some office park, you get to work with your friends on your own project. If you succeed, you get rich.
We look for two things in startup founders: brains and commitment. One thing we've learned in this past year is that commitment matters more than we thought, and brains less. The founders can't be stupid, but as long as they're over a certain threshold, the most important thing is commitment.
A sense of design is also a big advantage. Big companies treat design almost as if you could paint it on after the fact. A hacker with design sense is really dangerous, especially as a startup founder. We don't care too much about the initial idea, except as evidence of brains and commitment. The idea will change. What matters most is that the founders really want to do a startup.
A lot of the most characteristically lame startups of the Bubble were that way because they were started by business guys, who then went looking for hackers to implement their ideas. That model may have worked in 1960, but it didn't work so well in 1998, and it gets more obsolete every year. I think the future belongs to the hackers. Technology is an ever larger component of business, so of course power is shifting to the people who are experts in that, rather than management or finance.

As always, there's more via the link.

Permalink | Comments (2)

Backup Brain

July 6, 2006 | Software | Technology

So I don't have to spend twenty minutes with Google-fu the next time I'm looking for this, here are two in-depth articles on Mac OSX backup.

1) The State of Backup and Cloning Tools under Mac OS X

2) Mac Backup Software Harmful

Summary: 1) It's a complicated problem. 2) Use SuperDuper.

Permalink | Comments (0)

Should Exist

June 30, 2006 | Business & Commerce | Products & Opportunites | Software

A craigslist for op-ed. Talk about a flow machine.

Permalink | Comments (1)

Internet Economics 2006

June 28, 2006 | Business & Commerce | Products & Opportunites | Software

Would you like to tune into a wavelength describing state-of-the-art Internet business models? If so, Jason Calacanis has what you want.

You see, Battelle's model is predicated on Rafat and Om deciding to stay in phase two or keep their relationship with Federated in phase three--which they are obviously not willing to do. That's why we canned the Federated Media /BlogAds model when we started Weblogs, Inc. We started out with the reveune share/repping model and Brian and I quickly decided that owning the IP/brands was a much better play. [Background.]

It appears easy to get $1 million to fund a web startup right now.

Permalink | Comments (0)

Pragmatic Technology Strategy

May 23, 2006 | Cooperatives | Life | Software | Technology

Yesterday Mark and I drove down to Andover MA to meet with Walden. We three are running a (pro-bono) session for a Coop consulting group next month on technology strategy. Because Kate wasn't feeling well, we went to Panera for three hours. The place was hoppin' with businesspeople!

WaldenMarkPanera.jpg

Above you see Walden coaching Mark on the use of an important strategic technology tool – the pen and paper. They're really amazing! You can write in any light, without any battery power, on both sides of the device. You're not restricted to "documents" or linear formatting. You can create an unlimited number of pages no matter how little memory you have. There are a whole raft of accessories to collect, sort, organize, and store your notes – and they're all cheap! File folders cost a nickel or something, nothing like the cost of a hard drive upgrade. And you can use pen and paper on any surface, even including a computer tablet!

If you look closely, you can see that Walden is carrying this toolset in his front pocket! Just try doing that with your fancy new MacBook.

Permalink | Comments (0)

What Nerds Do For Fun

May 19, 2006 | Software

This is beautiful: Closures; an Italian Sonnet, by Bruce Williams.

What's a closure, you ask? Here's Martin Fowler's description:

Closures have been around for a long time. I ran into them properly for the first time in Smalltalk where they're called Blocks. Lisp uses them heavily. They're also present in the Ruby scripting language - and are a major reason why many rubyists like using Ruby for scripting. Essentially a closure is a block of code that can be passed as an argument to a function call.

So there you have it. The beauty of code, expressed in the form of an Italian Sonnet.

Permalink | Comments (1)

Gratuitous Name-Dropping

May 16, 2006 | Arts & Culture | Life | Software | Technology

[Attention conservation notice: This post contains little of actual value.]

I spoke with Jeffrey Zeldman today. (I just have to say it again—I spoke with Jeffrey Zeldman today!)

A client is evaluating technical vendors. One of the prospects wrote a strong proposal, really kind of in-your-face for this small northern New England college, but she was from New York New York so I just took it as par for the course. I got to the last page and her first reference was Zeldman.

Well, that got my attention. Zeldman is One Of The Most Famous Web Designers In The World. He wrote a great book that introduced a lot of us to the very real possibility of standards-based web design. He operates Happy Cog Studios, a web design consultancy, and also runs a well-trafficed weekly newsletter for web developers called A List Apart.

Long story short, we're calling references. I emailed Zeldman and asked for ten minutes on the phone Tuesday morning or anytime Thursday. He wrote back and said sure. I called at the appointed time, and we chatted for about 15 minutes. He worked with The Potential Vendor (The Subject Under Discussion) on a project for the New York Public Library. He likes her. Thinks she's a good designer. Delivered the goods on the project. All that stuff she said was probably genuine, not bull.

So that was pretty much that. I thanked him and we hung up. I sent a thank you email and promised not to blog his phone number. Then I went to a six-hour project meeting and came home exhausted.

Mañana. Namaste, y'all.

Permalink | Comments (0)

.NET on OS X?

May 1, 2006 | Business & Commerce | Products & Opportunites | Software | Technology

Can someone confirm this rumor I heard last night: Microsoft is porting the .NET runtime framework to Mac OS X. [Note: Currently just a rumor!]

If this is true it's a pretty big deal. With Apple currently offering dual-boot software to run Windows XP on Mac hardware, and the likelihood that they will offer virtualization software to run Windows side-by-side with the Mac OS next year, we are apparently headed for a cross-platform world where the OS actually acts more like an application.

At least on the Mac, that is. In this scenario Macs will run the cool, well-designed, elegant, and stable Mac apps, on the best-designed hardware available today as well as whatever Windows apps you want to throw at it. And if you buy a Dell? Well, you'll get the same hacker-target OS on the same flakey hardware with the same lame customer service you've come to expect – you won't notice any difference and you can continue feeling superior that you're running with the big dogs on the best-selling platform and you won't have to spend an hour or two learning how to do things in an easier and more obvious way on OS X. Windowz Rulz!

Why would Microsoft support this? Well, because they are so large and mature they are really just a cash-machine, and all the Mac users would have to buy a copy of XP or Vista (cha-ching!), and their developers will be happy to have a larger base of users buying their apps.

Permalink | Comments (0)

Disintermediation Denial

April 30, 2006 | Business & Commerce | Software | Technology

Dumbest move this week™.

Microsoft and The New York Times unveiled software on Friday that would allow readers to download an electronic version of the newspaper and view it on a portable device.
With Microsoft's new Windows Vista software, to be available in January, virtually any newspaper, magazine or book can be formatted into an electronic version and read online or off. The software would allow The Times to replicate its look — fonts, typeface and layout — more closely than its Web site now does.

I agreed with Dave Winer's comment, ("Bill Gates helps the NY Times turn the clock back.") but then I thought about it some more and went further.

This is so lame.

First, there's this thing called the "Web" – maybe you've heard of it? It has a structural markup language called HTML, and a styling layout language called CSS. If you use this, your stuff can work nearly anywhere, Mac, PC, Linux, mobile phone, TV display, etc. The Microsoft/Times approach is so 1996, and probably has more to do with DRM than anything else. This announcement is very disappointing, and indicative that the Times is not thinking clearly about digital disintermediation.

Second, there's this other thing called PDF. It's been around for years, and it's pretty well debugged (unlike the yet-to-ship Vista, nee Longhorn, with it's constantly slipping schedule and on-going feature-kill). Even better, PDF currently allows "virtually any newspaper, magazine or book [to] be formatted into an electronic version and read online or off." [Is there an echo in here?] Only one problem, it's from Adobe, and Microsoft would never think of using that!

Instead, what they should be doing is figuring out how to engage the army of bloggers to use Times stories as a focal point for their efforts. Who freaking cares if the formatting looks good offline? I'm reading most of my news in generic text via NetNewsWire anyway. It's very train-friendly already.

Hint: The advertisers care. Therefore realize that the "customers" of the Times are advertisers, not readers. What the readers are is not clear, though "consumers" might fit. I'm surprised Umair hasn't written about this yet, perhaps because it's such a dumb move that it's not worth commenting.

Face it. The Times is going to be very distracted for the next year. They've moving into a new building late this year or early next (I forget) - the whole staff, moving a new place for the first time since the 1800's or somesuch crazy-long time. They're building the building, so you can imagine the impact on your "core competencies" if you've ever built or renovated a house. The Bush administration is going to sue their ass off for the NSA spy leak; you can see pretty clearly that it's going to get ugly. And they're still hamstrung by the myth of objectivity. They (along with everyone else) still print whatever the Administration says, even when it's a blatant outright lie (c.f. anything Cheney has said for the past several years).

Imagine instead if the Times had a Blogger Research Program. It would work like this: Bloggers would sign up, and there would be a nominal annual fee to separate out the serious from the hasslers. Say, $20 a month. For that you get access to a password-protected RSS feed of story drafts in development. (You might also include a subscription to Times Select.) You submit your thoughts, corrections, research notes, and op-ed comments to a private forum or blog, where there is one topic/post per story. Every time the Times uses one of your quotes or research in a published story you get paid a nominal amount. Say, $5. The goal for bloggers would be to earn some income (eBay style). Maybe some people are occasionally invited to write an op-ed piece for full publication. Maybe some longer pieces are commissioned based on the blog posts. Maybe the super-pros rise to a full-time gig at the Times. The goal for the Times is to get hundreds of people competing for pixels and ink in a national pub. Their quality would go sky-high. The online dynamic would change too – bloggers would write for broad appeal and re-use, not just for venting. The Times would be hungry for their blogger army contributions because they could never pay for such a large and well-distributed research staff.

The details need more thought than the 15 minutes I've put in. But this is what comes off the top of my head, and IMHO it's a hell of a lot more pragmatic and clear-thinking than what Sulzberger and Gates came up with. [How's that for ego inflation?]

To my loyal Times employee reader: I would love to help implement something like this, and guess what? I'm already an experienced consultant working in the field! How convenient is that?

Have your people call my people and we'll do lunch.

Permalink | Comments (1)

More Hell for Web Developers

April 22, 2006 | Software | Technology

Dave Hyatt, chief architect of Safari and WebKit, outlines a proposal to solve the "high-DPI" problem:

Consider a Web page that is designed for an 800×600 resolution. Let’s say we render this Web page such that the pixels specified in CSS (and in img tags and such on the page) map to one pixel on your screen.
On a screen with 1920×1200 resolution the Web site is going to be tiny, taking up < 50% of the screen's width and half the screen's height. In terms of absolute size, the text will be much smaller and harder to read.
Now this may not be a huge problem yet, but as displays cram more and more pixels into the same amount of space, if a Web browser (or any other application for that matter) naively continues to say that one pixel according to the app’s concept of pixels is the same as one pixel on the screen, then eventually you have text and images so small that they’re impossible to view easily.
How do you solve this problem? The natural way to solve this “high DPI” problem is to automatically magnify content so that it remains readable and easily viewable by the user. It’s not enough of course to simply pick a pleasing default, since the preferences of individuals may vary widely. An eagle-eyed developer may enjoy being able to have many open windows crammed into the same amount of space, but many of us would like our apps to remain more or less the same size and don’t want to have to squint to read text.
The full solution to this problem therefore is to allow your user interface to scale, with the scale factor being configurable by the user. This means that Web content has to be zoomable, with the entire page properly scaling based off the magnification chosen by the user.

Much more detail in the post, including elaborations on questions such as, "What the heck is a CSS px anyway? Most Web site authors have traditionally thought of a CSS pixel as a device pixel." Yup, I sure have.

Permalink | Comments (1)

N-Dimensional Web 2.0

April 5, 2006 | Arts & Culture | Business & Commerce | Life | Nature & Environment | People & Society | Products & Opportunites | Science | Site Maintenance | Software | Technology | Travel

Many people are trying to define "Web 2.0" – what it is, what it means, how to build Web 2.0 apps, what makes a company a Web 2.0 company, etc. All of those efforts fall short, because Web 2.0 is n-dimensional. Web 2.0 is "reflecting more complex multivariable situations.1"

Today I learned of a new dimension to Web 2.0. Chris2 invited me to join a beta of CollectiveX, a new Web 2.0-ish social widget. To invite someone you have to set a temporary password, and when they log in they change it to whatever they want. Chris set my password to "ratdoggy." Ha! Now that's a good one. This made me laugh out loud, and when I told Meg3 she lost it too. What's so funny?

Well, it creates a strong but secret connection between the title of a recent post I wrote – wherein "maybe too much information" was offered4 – and an unrelated client task. Chris' password was an acknowledgment that he read the post. Maybe even he liked it. And he certainly knew it would make me think of that post in the middle of the workday. But in any case "ratdoggy" is not in frequent usage (Google: "Did you mean: ratdog?") and his reference expanded its sphere of influence.

Which is like a link, just not a web hyperlink. It was a link from one mind to another, from one blog post to a work moment, from a concert review to a social software login, from my original post written on a couch in the lobby of a cinderblock hotel in Charlestown to my colleague's laughter at the password in an office building in Hanover, from all that to this post which you are reading now. Links, links, links, everywhere you look. Which makes me smile.

And that seems to be the common element of a Web 2.0 app – that it makes you smile, somehow, in some way that maybe you never have before.


1) An Introduction to Chemometrics. A report given as Session F of Educational Symposium No. 17, The Use of Statistical Methods in Formulating and Testing of Rubber at the 130th Meeting of the ACS Rubber Division by Brian A. Rock, Ph.D. in October, 1985.

2) Blog updated according to a complex precision timing schedule involving the highway, the moon, the clouds, and the stars.

3) I did not invoice for this minute of laughter, nor did the client utilize any official company time or resources in reaction to the laughter event.

4) Plausible Story, personal communication.


Now, how many new links can you find in the above footnotes?

Permalink | Comments (5)

Photoshop Compiler Conversion

March 24, 2006 | Business & Commerce | Products & Opportunites | Software

Being a software engineer working on Photoshop doesn't sound like a lot of fun these days. I'd say they have a good long 9- to 12-month slog in front of them. And at the end of it, who knows what they'll have. It's a complete re-write of a very large desktop app. Good luck y'all.

Update: A Microsoft developer in the Mac business unit posts his experiences. The between-the-lines interpretation of these two posts is that Apple's tool set, Xcode, has been focused on small developers to help them get lots of applications out for OS X. Now, they're scrambling on making Xcode suitable for hundred-person development teams and very large applications. This is the heavy lifting of software engineering and makes most Web 2.0 app development seem like child's play.

Permalink | Comments (0)

Expectation Hacks

March 24, 2006 | Business & Commerce | Software

Classic software development conversation at the 37signals Campfire:

File upload limits were discussed and a simple solution was figured out… Ryan: what are we trying to avoid with a limit? won’t a gigantic file just time out anyway? Jason: thats’ the problem. “Why didn’t my file transfer work?” “What happened to the file I uploaded” “Why didn’t the upload finish?” Ryan: less software idea..we could just say there’s a limit. and then if people try something bigger and it works, then good for them Jason: I like that best. done.

We do stuff like this too. I call them expectation hacks because people don't expect something to work (especially when it's simpler than they expect), but it does, so they feel like they got away with something. That cuts you some slack on real support requests.

Permalink | Comments (0)

ActiveSalesforce

March 9, 2006 | Business & Commerce | Products & Opportunites | Software

Wow. Salesforce.com is now offering a connection adapter for Rails.

ActiveSalesforce (ASF) is a Ruby on Rails framework connection adapter that provides direct access to Salesforce.com managed data via AppExchange Web services API and Rail's ActiveRecord model layer. Standard and custom objects, standard and custom fields are all automatically surfaced as active record attributes, simplifying the creation of applications that use data from those entities. ASF also includes a Salesforce.com aware scaffold generator that leverages layout metadata to generate list, show, edit, and new views and a corresponding controller that closely match the look and feel of their native Salesforce.com counterparts.

Salesforce has nearly 400,000 paying customers, and apps developed with their suite of connection adapters (including PHP, Perl, etc as well as the new Rails kit) can be offered to the entire customer base. This is a big validation for Rails, and a huge market opportunity if you're into the business collaboration/workflow space.

Permalink | Comments (0)

Getting Real

March 2, 2006 | Products & Opportunites | Software

37signals has released their new eBook on web application development, Getting Real.

Getting Real details the business, design, programming, and marketing principles of 37signals. The book is packed with keep-it-simple insights, contrarian points of view, and unconventional approaches to software design. This is not a technical book or a design tutorial, it's a book of ideas.

I've bought a copy, and I'm sure I'll agree with a lot of it. $19.

Also, continuing to break out of the box, they have new business cards. Weird-shaped business cards are cool, and they make a great first impression, but having experimented with this, and having received many non-standard business cards over the years, I think the humble standard card is the best long-term approach. Odd-shaped cards are easy to lose, hard to store, and soon end up looking dated.

Permalink | Comments (5)

Happens To The Best Of Them

February 28, 2006 | Software

edgeio.jpg

Permalink | Comments (0)

Three Things About Pivot

February 21, 2006 | Business & Commerce | Software | Technology

Very exciting. Chris Boone wrote a brief review of my website management system, PivotCMS. [Man, do I need to do some marketing work – the product far outshines the marketing, especially the currently-lame website.] He calls out three important design decisions we made early on, and learns how they impact his day-to-day work with clients. Thanks Chris!

Permalink | Comments (1)

37signals Launches Campfire

February 16, 2006 | Business & Commerce | Products & Opportunites | Software

It took me a while to realize it, but the essential business plan of 37signals is taking modern technology tools and specializing them for business. They do this by 1) stripping generalized options and leaving only the core functionality; 2) creating a good UI that's obvious (low training and support) and fun to use (easy flow-state); 3) pitching the user benefits instead of the features; 4) having a free trial for every product so you can see how it works directly; 5) having reasonable pricing plans that provide clear value and are dirt cheap for most businesses; 6) improving on the basic tech idea with business people in mind. So, you get:

  • Basecamp: Blogs for project management.
  • Backpack: Personal or small group wiki.
  • Campfire: Secure and archived instant messaging.

Along the way, they also created two completely free products, Writeboard (shared document editing) and Ta-da List (shareable to-do lists). And coming up soon is Sunrise, a CRM for small business, which I expect to be a mini-Salesforce.com.

They have a blog, full of attitude; they publish their ideas; and they release open-source software at the core of their apps. No VC money - all funded through cash-flow. It's a good model, and they're firing on all cylinders.

Permalink | Comments (1)

Corporate Spin, I Mean, PR, Defined

February 14, 2006 | Business & Commerce | Software

Here are some excerpts from an email Sleepycat Software sent to me this evening.

I'm pleased to announce today that Sleepycat Software has been acquired by Oracle. [They showed me the money!]
By joining the leading database company in the world, I expect that we will be able to serve our customers and the open source community better. [Oracle is well-known for their killer support - NOT!] With the additional expertise, resources and reach of Oracle, we'll be able to accelerate innovation, offer you greater choice, and provide more complete solutions. [Huge autocratic companies are excellent for innovation - that's why they buy companies like mine!]
I assure you that we will continue to deliver the products and services that you are used to receiving from Sleepycat Software. [As long as I'm here - when I get frustrated with the big company hassles I'll buy a nice boat and you can sort it out with your new account executive.] There are no plans to change our dual license model, and we will continue to serve both open source and commercial users. [We can worry about plans later, if need be. For now, all systems go!] Oracle will honor the terms and conditions of existing Sleepycat agreements. [But please see below for important information.]
100% of Sleepycat's employees are expected to transition to Oracle, so we retain all our deep technical expertise and community relationships. [They didn't show the employees any money, so they have to stay.]
Regards,
Mike Olson
Vice President, Oracle
Former President and CEO
Sleepycat Software
The above is for informational purposes only and may not be incorporated into a contract.

Emphasis added. Now, you tell me, do they really believe I will trust all that hyperbolic PR crap in the letter, when it concludes by saying they won't commit to any of it? Gimme a break.

Permalink | Comments (0)

Rails acts_as_taggable: Plugin vs Gem

February 13, 2006 | Software

There's some confusion in the Rails community right now about two pieces of code with the same name: acts_as_taggable. Here are the differences as I understand them. Your corrections and clarifications are welcome!

For quite some time there has been a Ruby Gem called acts_as_taggable. You can learn more here: http://taggable.rubyforge.org. You install this by doing: 'gem install acts_as_taggable'

In December 2005, the creator of Rails, David Heinemeier Hansson wrote a Rails plugin called acts_as_taggable. You install this by doing: 'ruby script/plugin install acts_as_taggable' You can see the genesis of the plugin during David's presentation at the Snakes and Rubies event in Chicago. Audio and video, and pdf of David's slides. Summary of differences:

The Gem

  • The Gem has documentation.
  • The Gem runs in Rails 1.0.
  • The Gem has some community add-ons, such as Tom Fakes' Tag Cloud.

The Plugin
  • The Plugin doesn't have much in the way of docs yet.
  • The Plugin only works with Edge Rails, soon to be Rails 1.1. You can lock your app to Edge Rails by doing: 'rake freeze_edge' in your app directory. This will load a full copy of rails into your vendor directory, and Rails will by default look there and use that code if present.
  • The Plugin was written using the new polymorphic associations, which is a cool approach.
  • The Plugin is the one used in Chad Fowler's new book, Rails Recipes. These are the best docs so far, even though the book is only beta.
  • Generally, plugins are a better way to extend Rails.
In the long run, plugins are probably a better way to go, and the code for the plugin is clean. I myself prefer the approach of the plugin, but my skill level makes it hard to use without any docs.

I jumped on the Rails bandwagon a while ago, (see Avoiding Software Fear and ROR Bootcamp at BNR) so I don't mean the following comments to be overly critical. But the situation is generating questions on the Rails list, and it's just another opportunity for newbie confusion and ongoing list pollution. It's easy to fix, too.

My thinking is that it's unfortunate a leader in the Rails community chose to release this plugin without any docs, or without coordinating with the gem coders, or even announcing the differences to clarify the situation. But that's the way it is. Eventually the plugin will have docs, the plugin and the gem may live together in peace, or one may become more popular than the other.

DHH said on the Rails mailing list: "Now here's the truly wonderful part of open source: Creator, maintainer, and documentor needs not all be caps on the same schmoe. Thus, if you find something useful, say a plugin like acts_as_taggable with the creator stamp DHH, you can choose to express your gratitude through one of the other caps.

"That may be a patch to extend or it may be a tutorial about its usage or even READMEs and RDocs for the source. So try not to assume that creator equals sole maintainer or documentor. Only try to understand the truth: There is no vendor."

It's all true, but it's worth considering this thought experiment: If someone else had released a plugin with the same name as a well-known gem, would the community have accepted it, or would they encourage the creator to change the name to avoid confusion? I assert that 1) the creator would have been encouraged to change the name, or take some other clarifying action, and 2) it is because DHH is the creator this didn't happen. The magic of open source community still requires leadership, as well as management. In this example DHH shows his excellent management skills, and his growth opportunity in leadership.

I have been "expressing my gratitude" by clarifying the plugin and gem differences when questions come up on the mailing list, and by encouraging a more meta-solution, like writing docs, and trying to get the plugin working myself. If I do ever get it working, I'll certainly post my code. (Note, it works fine for people who know what they're doing - I'm just a newbie.) In the meantime, the Recipes book is the best introduction to the Plugin. And the gem works fine as well. Let a thousand flowers bloom.

Update - DHH responds on the Rail list:

Namespace clashes are problematic for packages that wants to be used concurrently, not for alternatives. How would the situation have improved if I had called it acts_as_polymorphically_taggable (except for making jokes about such a terrible, terrible name)? Would we not have had the same questions as to what does what and why? Of course we would.
In any case, let me summarize the difference quickly. The main difference is not plugin vs gem, but rather that my version of acts_as_taggable is designed to work with multiple classes. So a single tag can be used in the tagging of multiple classes. This requires polymorphic associations and join models, which is why it only works Edge Rails (and will work in the forthcoming 1.1).
So if you need that feature, tagging of multiple classes with the same tags, then use my version. Otherwise, the old version is probably better. It's certainly more feature-rich and better documented.

Fair enough. Nice to have the clarification. For reference, the namespace clash I was referring to was the human-readable one, not whether Rails gets confused or not. (Though, acts_as_polytaggable wouldn't have been so bad.) As a separate issue, yes, we would have had the same questions. The difference is they would have been answered up-front, rather than death-through-a-thousand-confused-list-messages approach we ended up with.

David's a busy guy; obviously he shouldn't have to do everything. Now that I have helped drive some clarification of the issue, how about if someone gets on the case of writing a good tutorial, and documenting the damn plugin!

Permalink | Comments (5)

Tear Up Notio!

January 31, 2006 | Life | Software

Grab the chainsaw, express your inner anger, and tear up Notio!

Permalink | Comments (0)

Webloging With MarsEdit

January 30, 2006 | Site Maintenance | Software

I mentioned this briefly back in October 2004, but if you are publishing a weblog and still using the browser for writing and editing, and you're on an OS X Mac, you should really check out MarsEdit. It's more like an email client, and provides lots of features - like a spell-checker, easy tagging, a Save button, etc. For $25, it's the way to go. Free 30-day demo. From the same people that make NetNewsWire.

It's a refreshing joy to use, especially if you spend some time on Windows for comparison.

Permalink | Comments (0)

Microsoft ftpd Madness

January 30, 2006 | Software | Technology

So, to transfer files between computers there's this protocol called FTP - File Transfer Protocol. It's been around forever, and on dozens of different Unix operating systems when you do a directory listing it looks something like this:

-rw-r--r--   1 187         6358 Jul 18  2005 index.html

Then along comes Microsoft. For some reason, this return string format is not good enough for them, so they decide to do it like this, instead:

01-30-06  10:15AM                 7064 index.html

Well, great if you use Internet Explorer as your FTP client! But if you're running automated publishing systems that rely on interoperability, this is broken. Granted, because the specification does not elaborate the directory listing return format, the Microsoft software is not officially out of line. But why the heck couldn't they do it like everyone else? Is this a good place to express your unique vision of how an ftp daemon should describe a directory listing? (With, BTW, far less information presented.) Couldn't they just try to fit in a bit, and go with the existing flow? Accept that perhaps the old way, utilized by hundreds of thousands if not millions of other servers, might just be good enough?

This is why people hate Microsoft. There was an existing de facto standard, and they made gratuitous changes that reduce interoperability with non-Microsoft systems. This is why Microsoft holds a 20% share of the web server market, while the open-source Apache has 67%. People who have to make technology systems work together are tired of this crap.

So here's the solution to several problems of this variety: Go visit the Apple Store, and pick yourself out a nice, new, powerful, Unix-based, easy-to-use Mac – laptop or desktop. When the transaction is complete, stand up, and open your office window. Unplug your existing Microsoft-OS computer, and disconnect it from the network. Pick it up, and carry it to the window. Say a short ritual prayer to the deities with which you resonate, and throw that piece of junk computer out the window. Hopefully it will fall several floors and smash to bits upon landing, or land in a snowbank or pond, so it will be unusable by anyone who finds it. Then take a few days vacation until your new Mac arrives. If everyone did this together many future wasted hours would be recovered and we could all ftp together again with joy, love, and happiness.

Permalink | Comments (3)

Path Finder and Web Inspector

January 17, 2006 | Software | Technology

We interrupt this stream of musical sub-texts to recommend some Mac power-user software.

Path Finder 4 is a fantastic Finder replacement, providing a more intuitive and powerful file management and navigation application. For starters, tabs in the Finder window – how cool is that? If you want the gory details on what's wrong with the present OS X Finder, you can read John Siracusa's series of articles. Most people wish Apple would buy Path Finder and make it the "advanced Finder" mode, if not just ditch the Finder altogether.

If you're a web developer, this post by the Safari team has exciting news about their new "Web Inspector," an advanced DOM inspector. You can use WebKit just like Safari; download the latest build, an application called WebKit, and when launched it shows up as Safari, and acts just like Safari, but with the latest new features. The Web Inspector is pretty cool, and beats the heck out of anything else I've seen, though to be fair I only do this stuff occasionally.

Permalink | Comments (0)

Data Mining 101

January 5, 2006 | Governance | People & Society | Software

Finding Subversives with Amazon Wishlists by Tom Owad. A little geeky, but worth reading to see how authorities might infer intentions. About six years ago, I used similar techniques to scrape auto sites on the web to find inventory on a new VW Golf TDI diesel (indigo blue, standard shift) within 500 miles of my house. In one afternoon I had all the info I needed to negotiate and purchase the exact car I wanted, which I did the next day, at a dealer about 120 miles from my house. My local dealer said that there were no cars of that spec, and wanted to sell me one off the lot. Power to the people, or to the authorities, as the case may be.

I have intentionally used "authorities" to distinguish the Bush administration from what would normally be called the "government." There's not a lot of governance happening right now in the US, but plenty of authority assertion. Politics is a friggin' black hole for blogging; my apologies.

Permalink | Comments (0)

Ruby on Rails Bootcamp at Big Nerd Ranch

December 23, 2005 | Life | Software | Technology

During the first week of December I traveled to rural Atlanta to attend the Ruby on Rails Bootcamp at the Big Nerd Ranch.

The Ranch isn't a place, exactly – more like a concept. In the US, they rent an executive retreat lodge 1-2 weeks per month, where 18 students take single rooms in a relaxed natural setting with full-service meals. They hire top-notch instructors on chunky technical topics, and they geek out in a major way.

The day schedule was thus:

  • Breakfast at 8:30 AM
  • Class from 9:00 to 12:30 PM
  • Lunch from 12:30 to 1:00
  • Class from 1:00 to 2:30
  • Execise/nature/photography walk outside from 2:30 to 3:00
  • Class from 3:00 to 6:30
  • Dinner from 6:30 to 7:00
  • Hacking sessions in the lab from 7:00 PM to midnight or 1:00 AM. The lab is open 24 hours a day, and some people took good advantage of it. Here's the lab/classroom:

RoR-lab.jpg

The attendees were diverse, except that we were all white males. Here's a photo:

group-RoR-1-web.jpg

One person from Germany, and one from the UK. Three US government/military employees – one who couldn't discuss what department he worked for (probably the NSA. At one point he asked, "Is there a way to open a socket to a specific IP and capture the stream to a database?"). Ages ranged from early '20s to early '60s. One person had extensive Lotus Notes programming experience, several had worked on large complex software for industry. Two people worked on Windows machines, the rest on Mac OSX. Several were Linux refugees. We had one O'Reilly author in the room. One person had been to the Ranch once before, another had been twice before. Keith Bingman and I brought up the rear on programming experience, but we didn't drown, and we both got a lot out of the full-immersion approach.

Cost: $3,500 plus a $400 plane ticket and $70 in airport parking. A significant investment, but worth it. I left my house on Sunday at 8:00 AM and returned home the following Friday at midnight.

Our instructor – Marcel Molina, Jr., one of the Rails core developers and a 37 Signals employee – deserves kudos and gratitude for organizing a course with no prerequisites that satisfied such a wide range of experience and understanding. Marcel knew the material completely, and had in-depth knowledge of the Unix shell, databases, Martin Fowler's computer science writings, typical practices and idioms, popular culture, and literary theory. We had a lot of fun banter ("Who is the best Rails programmer ever?"), witty techie asides ("TextMate has preferences?!?"), and deep recursive pedagogy (grokking the functional and unit testing framework while getting sidetracked by a bug in Rails that existed only for 18 hours – during which time we had grabbed our code snapshot – while learning the theory of testing in general).

I had the rare experience of focusing on a single topic for five days, virtually all day every day. A couple of students had solid Ruby or Rails knowledge and came to work on their applications outside of the interrupt-driven work environment. For them, the class segments were less important than the focus time and access to an expert for design and code assistance along the way.

I've written about Rails before, about a year ago ("Avoiding Software Fear"). In that post I wrote, "'New' technology becomes 'mainstream' technology through the momentum of use." Rails today has momentum of use, far more than when I first wrote about it last January. In the next six months I think people in the technical community will be saturated with Rails developments, from whizzy applications, to regular code updates, to new books.

In about six or eight hours of programming, I wrote a simple blog-style application. It has user login, posts, comments, human-readable URLs, time-stamping, and AJAX-based deleting. Remember, the last time I did any programming was in 1976. If you want to build web apps in the next few years, you could do a lot worse than pick a framework that assists programmer productivity. I have a lot to learn, but this was a great way to jump up the learning curve.

Permalink | Comments (1)

Liquid Layouts

August 28, 2005 | Site Maintenance | Software

So the new liquid layout for Notio may have some bugs yet to uncover, but the basics are working pretty well. My brother was visiting this weekend, and he has a Treo 650 smart phone. This thing has a web browser with maybe 240 pixels of width. Amazingly, he had a "three-bar" Cingular signal at our house in the woods (far better than the "one-bar" Verizon signal we get on our dumb phones), and so here you see the new Notio in miniature:

LiquidOnTreo.jpg

Pretty amazing, don't you think? That 1,000px header graphic of the fish just sizes right down, the two columns stay in place (until a content image is too wide) and it basically Just Works. That's pretty cool.

Permalink | Comments (0)

Moveable Type 3.2

August 28, 2005 | Site Maintenance | Software

What the heck, I thought. I updated the weblog publishing software to version 3.2 this morning. The docs are much better than the last version, about which I complained. But the upgrade script hung on the MT::Entries table, and after an hour I ran it again. It skipped all that and seemed to complete okay.

It doesn't find any comments though, even though the summary page shows over 4,400 of them - all but about 200 are junk spam, so it's not like I care, but it doesn't seem correct, and may indicate lurking bugs. I'm hesitant to rebuild the site just yet, because I don't have time today to fix it if it breaks.

So this is something of a test post to see if we're still basically working. Wish me luck!

Permalink

Notio Redesigned, Again

August 27, 2005 | Site Maintenance | Software

That habit of mine struck again. Every time I get overloaded with work I add on an unrelated diversion, such as reading ten books, throwing a family party, buying a new camera, or redesigning my weblog. Sometimes, like this week, all of them all at once.

Notio-redesign.jpg

I had two goals for redesigning Notio. First, to bring my photography into the mix. I've always loved creating pictures, and everything about the process, from the chemicals in my grandfather's basement darkroom to the paradigm shift of my first digital camera.

Second, a more professional look, including a fresh visual design, structural HTML markup, fluid CSS layout, a better color palette, and a new start for the next level of improvement. Short version: It Was Time. I've tested the layout on Mac/Safari; Mac/Firefox; and IE6.x/Win. If you see anything odd, let me know. Wouldn't surprise me.

You can also visit or subscribe to my Flickr photo stream, if you want to skip the words and just watch the pictures.

Your feedback is welcome!

[Update: I just figured out that I've broken commenting. I won't be able to fix it today. Oh well. More fun to have later! Comments appear to be fixed – I had forgotten to put the comment code in the templates.]

Permalink | Comments (0)

Evolution of an idea

August 22, 2005 | Business & Commerce | Life | People & Society | Products & Opportunites | Software | Technology

Back in the day, memepool was one of my very favorite websites. It was more or less anonymous, had a biting wit, posted very unusual links, and updated frequently so it made for a good daily browse. It was just a guy or two, sharing their cool links with whoever found them. The design remains unchanged to this day.

In 2001 I clicked the "comments" link at the bottom of the page and emailed:

I'm wondering what you use to maintain the site. It has a very nice combination of chronological order on the home page and subject categorization. When I look at 'weblog' tools they seem very overblown if all one wants to do is keep track of 'net flotsam and jetsam.

The entirety of the response was:

I wrote it myself. Memepool predates all those tools and even the notion of "blogs"

I remembered memepool today, for the first time in years, and took a visit. At the bottom of the page now there are two names listed. One of them, Joshua Schachter, has a home page here. As it turns out, Joshua wrote del.icio.us, the social bookmark manager, otherwise known as a way to keep track of your 'net flotsam and jetsam, and share it with the world.

Now does that complete the circle or what?

Here's what Paul Graham had to say about Delicious recently:

The New York Times front page is a list of articles written by people who work for the New York Times. Delicious is a list of articles that are interesting. And it's only now that you can see the two side by side that you notice how little overlap there is.

If you follow the timeline, Joshua graduated from Carnegie Mellon in 1996. Memepool has been running since 1998. It's likely that Joshua started memepool around the time he started high-school. Then at college he studied electrical and computer engineering. Then, either over time or in a fit of creative output, Delicious was born. Perhaps it wasn't "based on" memepool, or perhaps it was designed to address a different set of goals, but it's interesting that at its core there is still a good idea: That people find and collect interesting things (in this case, links) and want to share them with others.

What's most personal is most general. That's the collective unconscious in a nutshell. Observing that Memepool morphed into Delicious is a great example of how an idea evolves.

Permalink | Comments (0)

Any Questions?

August 21, 2005 | Business & Commerce | Products & Opportunites | Science | Software

TechBooks.jpg

jumping_in = {
  'bandwagon'            =>  'true'
  'initial_impression'   =>  'good'
  'brain_candy'          =>  'yum'
  'project_ideas'        =>  'too_many'
  'time_for_this'        =>  'false'
}

Permalink | Comments (1)

Messing with fonts

June 30, 2005 | Software

Yesterday I used FontDoctor to clean up my fonts. I think I checked a few too many options, because today I'm getting screens that look like this:

Bad-fonts.jpg

Looks like a blog, doesn't it? I wonder what it says....

I guess I'll be testing the quality and reliability of my backups today.

[Update: Backups are good! All systems normal.]

Permalink | Comments (2)

For Typographers Only

June 27, 2005 | Arts & Culture | Life | Software

If you want to have multiple paragraph bullets with correct left-justify formatting, you have to use a soft return. That means in order to get the correct paragraph spacing the "bullets" style should be set for a "space before" and not a "space after." Someday I should make a decision matrix of what kinds of styles need space before or after. Headlines, for instance, need space after, and sometimes space before too, but not always. And, by the way, check that your tabs line up from style to style or else for instance the bullets tabs will look different than the rest of the text. Robert Bringhurst is at once a blessing and a curse. It's my favorite book, and my biggest time-sink. Now back to work.

[Update: And when you change space-before and space-after settings, make sure you go back through the whole document and make sure that it hasn't re-flowed your text, changing all the page numbers and un-linking your section pages. That can really twist your knickers right up against the deadline.]

Permalink | Comments (0)

Entertainment ruminations

June 15, 2005 | Arts & Culture | Business & Commerce | Products & Opportunites | Software

World of Warcraft, the "subscription-based massively multiplayer online role-playing game," by Blizzard Entertainment, now has 2 million subscribers. Each player has purchased the CD-ROM for $49.99. In addition, there are three monthly payment plans: The month-to-month subscription plan costs $14.99 per month, the three-month plan costs $13.99 per month, and the six-month plan costs $12.99 per month.

Conservatively, there was a one-time revenue stream of just under $100 million dollars, and an on-going monthly revenue of just under $26 million (just under $312 million annually). They are opening the game up in China soon, where there are 500,000 players in the open beta period. It's not hard to imagine cumulative revenues of over a billion dollars, or perhaps two.

Blizzard has 250 game designers and developers, so figure maybe another 100 in marketing and administration. Annual revenue per employee is therefore around $1.1 million. A standard rule of thumb for a normal business is that you need $100,000 per employee to break even. $200,000 is excellent. At one point Microsoft was doing around $500,000 (I don't know what they do today). By this measure, in 2003, the top 10 software companies ranged between $340,000 and $788,000. Point being, online gaming is profitable.

Compare to movies: The top-grossing film of all time was Titanic in 1997. They took in a little over $600 million dollars in eight years. The #100 top-grossing movie was Robin Hood: Prince of Thieves (who knew?). Since 1991 (14 years) The Prince has taken in $165 million - just about the annual revenue of World of Warcraft.

Of course, it's nice to be able to spend (or squander) that level of resources on entertainment. In a few years, as the price of oil goes from $50 a barrel to $60, then $75, then $100, and suburban salarymen are living in their SUVs at the office four nights a week to save gas money on commuting, we'll all fondly remember these glory days of "robust economic activity." I wonder where our food will come from?

Permalink | Comments (2)

Later in life

June 6, 2005 | Life | Software

There's some sort of bit flipped in my computer. Every time a context-sensitive tool-tip is supposed to pop up, I instead get a tool-tip that says "later in life."

LaterInLife.jpg

I mean, okay, it's funny for a while, but then it gets to be weird.

LaterInLife2.jpg

And then, even typing this entry, meta-recursive-like, see above. I mean, below.

LaterInLife3.jpg

It's all too much – "later in life" – what's that supposed to mean, anyway. I think I need to reboot.

Permalink | Comments (1)

Appropriate Automation

June 4, 2005 | Life | Products & Opportunites | Software

Last night MacFLAC 2.1.2 (OS X) was choking on filenames of this form: dmb2005-06-01.akg483.v3.d1t01.flac

I suspected the additional dots in the filename were the problem, and there were 19 files to fix. Should I do it manually? Nah, let's learn something instead. I fired up the new Apple "Automator" application for the very first time, and literally in ten minutes I had created a set of actions to 1) multi-select the files; 2) copy them to a new place; and 3) find the offending string and replace it.

I searched for "dmb2005-06-01.akg483.v3." and replaced it with "dmb2005-06-01-akg483-v3-"

And less than a minute later 19 files were moved and renamed. It was absolutely amazing. What a dream. It Just Worked. And, I was tired (right before bed), had never used it before, etc. I'm sure there are other ways to do this, but Automator made it a breeze.

Permalink | Comments (0)