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:
And a palette (swatch=35, aperture=10)

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

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

You get the idea. Here are two more examples.
Flowers

Palettes, aperture 200, then 7


Acrylic painting by John Joline

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


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"
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:

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:
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.
- CalDAV on Wikipedia.
- CalDAV resources from the OSA Foundation.
- Calconnect consortium.
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).]

(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
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!
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

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.
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:

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

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
