Fixing a suddenly-unavailable MacBook battery (aka “that was odd”)

So, I’m sitting on the couch this afternoon, surfing the internets on my (unplugged) mid-2007 MacBook, when suddenly, the computer shuts off.

Thinking I’d failed to notice the low battery warning, I plugged in and restarted, only to find that:

  • The battery indicator was suddenly showing “no battery available”
  • The fan was running full-out, despite zero processor load
  • All of the temperature sensors except for the hard drive’s had disappeared from StatPro

I zapped my PRAM, ran the Apple Hardware Diagnostic from my original boot disc, no dice.  Swapped in a known-good battery from my wife’s laptop.  Still nothing.

Then I tried zapping the SMC, by removing AC adapter and battery, holding power button for five seconds, then reinstalling battery, reattaching AC adapter and restarting.

That did the trick.

That was odd.

SideTrack: a less-annoying trackpad driver for Mac OS X

So, yesterday I whined a bit about the MacBook’s trackpad.  Today was problem-solving mode.

Turns out it’s mostly the lame Apple trackpad driver, rather than the hardware itself.  Fortunately, there is an alternative: SideTrack. It adds back the nice scroll-at-edge feature us Synaptics users have grown used to, and adds a bunch more bits of trackpad configurability that Apple didn’t see fit to include. 

It’s $15 shareware; I’m going to try it out for a while to be sure it’s worthwhile.

Hint to Apple: buy this guy’s software and ship a better trackpad driver.  It’s lame to have to pay an extra $15 for something that should work better out of the box.

Powered by ScribeFire.

Mindless Droning Consumerism

A little known fact is that I haven’t actually bought a personal computer for myself since 1993, when I purchased a PowerBook 145B before leaving for a semester in Denmark.  (Actually, I think my parents may well have paid for it!)   Since then, I’ve always used various work computers, or computers belonging to my now-wife, Molly.

It was a good 14-year run.  But now it’s over.

I just bought a MacBook.

(For the curious/geeky: White, 2GHz, 1GB RAM (soon to be upgraded), 80GB HD.  The bottom-of-the-line model.)

I’ve never been a huge Apple fan, and I’m unlikely to become one.  But the fact is that the MacBook is a nicely designed laptop, with good perfomance, at a very reasonable price ($1099, plus tax).

I’m looking forward to using it.

Things I already like:

  • The keyboard looks a bit scary, but feels surprisingly good.  Not as good as my work ThinkPad, though.
  • The screen is sharp and bright.
  • It’s a nice size.  Not too small, not too big.
  • The MagSafe power connector, which connects magnetically and pops out when tripped on, is so elegant and simple that I can’t believe nobody thought of it until now.  Every laptop manufacturer should copy it ASAP.

Things that already annoy me:

  • Apple’s touchpad.  It’s just not very sensitive.  It’s still way behind the trackpad on my ThinkPad at work.
  • Only one mouse button has been a bad idea for a long time, and still is.  Two-fingered right-clicking on the trackpad is a partial solution, but I’d really like two buttons.  Steve Jobs’ “one button” dictum be damned.

Why Facebook/Twitter/IM/Blogging etc. Might Actually Be Significant for Relationship Building

Marty shows yet again why he is one of the keenest observers in the nonprofit technology space:

Direct online interaction robs the very important inattentive trust building components to relationships. Twitter, facebook, etc. provide a unique window into watching someone without paying direct attention to them. How many of you log on to do work late at night and “see” in AIM list and Skype list folks that are still online working. Does that over time build your relationship with that person in any way? Does a facebook update on someone going hiking at a place you have hiked before influence your interaction with that person next time you meet even thought you never discuss the hike? Yes.

What if they were taking jazz lessons? What if they twittered they picked up a new Hummer? or bagged a black bear on the first day of the season? You might never bring it up in a work context or direct interaction but you know it is there and your brain files it in the mix. It is inattentive. They were not telling you. They were not looking for a reaction. They were just letting you see if you cared.

One of the key components of network health is social ties. There may be passive network building strategies that should be tested and deployed within a campaign context that help foster building inattentive trust. Such activities might include micro blogging activities and work, shared calendars, regular questions asked about non-campaign related activities and republishing the information back across the network.

The tools are catching up very slowly to all the complex needs we have to understand one another. We need to be aware of the opportunity they present to enable us to build more powerful network capacity even in inattentive and passive ways.

This feels really right to me.

Interesting paper on platforms

Managing Proprietary and Shared Platforms: A Life-Cycle View by Thomas R. Eisenmann looks like a really interesting examination of the challenges of both shared and proprietary platforms as they grow and evolve.

The research shows that challenges confronting platform managers vary systematically, depending on whether the platform is proprietary or shared and on the stage of platform development. As in most industries, platform-mediated networks exhibit predictable patterns as they pass through life-cycle stages of birth, maturity, and decline. Exceptions do occur, but the patterns hold often enough that life-cycle patterns provide a useful guide for planning.

How Plone Keywords Should Work

We’re finishing up a big intranet project here at ONE/Northwest, and that led to an interesting conversation between me, Dave Averill and Gideon Rosenblatt about tagging and keywording content in a website. Here are a few notes from it.


1) “Tags” – keywords that are stored per-item and per-user, ala Plone doesn’t provide out of the box support for tagging. That’s probably OK, because tagging doesn’t really work well unless you have a LOT of users.

2) “Keywords” – keywords that are stored per-item, but not per-user. Plone provides this out of the box.

How Things Work Now, And What’s Wrong

Plone’s current Keywords user interface is really clunky. So clunky as to be nearly useless, in fact. (Sorry.)

keyword widget

The main problem is that as the list of keywords in the site grows (which it does, very quickly, because keywords are not per-user, they’re global across the site), it quickly becomes very difficult to find and choose the keywords in the scrolling window.

Worse, you can’t easily see at a glance which keywords have already been selected.

How to fix it

Fortunately, I think this should be fairly easy to fix.

I would do the following things

  1. Move the Keywords widget from the “Properties” tab to the “Edit” tab. (Plone 3.0 fixes this quite a bit, by making the schemata refresh without page reloads, so this may ultimately be a moot point.)
  2. Show the list of keywords assigned to a content object above the keyword widget. (Bonus points for making them clickable to a search!)
  3. Change the widget to an Autocomplete widget. (Note: I need to check whether the Autocomplete widget will let you add new items to the vocabulary.) uses an autocomplete widget like this for tag entry, and it’s really efficient.

    autocomplete widget
  4. Make keywords part of the default content view templates (again, with clickable links to other items with the keyword). It’s easier to remove them (especially in Plone 3.0 with the viewlet manager) than to add them, and having them there by default will signal that we value keywording.  UPDATE: Shane Graber below points out some instructions he wrote for doing just this, in Plone 2.0-2.5.   Zope 3 fans might prefer this as a viewlet, but that’s a pretty trivial implementaton detail.
  5. We should build a screen that allows one to very quickly assign keywords to many objects in a single operation. I think I’d want to execute a search (or build a smart folder), then see a list of all found objects, their descriptions, the keywords they currently have, and an autocomplete widget for each object. Rip through the screen, assign keywords to a bunch of objects, then hit save once. That would be really fast and efficient.
  6. Finally, we should make sure that permission to assign keywords to content is separated from permission to edit the object itself. (I’m not sure if this is already the case, please leave a comment if you know!) This would make it possible to create a “tagger” role which could be used to let site members keyword content items.

OK, that’s it. All of this stuff seems like it would be pretty easy to do without any major changes to the underlying plumbing.

What do you think? Would this be more sensible, more “humane” behavior for Plone? Is there more low-hanging fruit that I’m missing?

Update: It also might be interesting to look at auto-generating keywords by using Yahoo’s Term Extraction API.

“Make Tools Simple and Ubiquitous Or They Won’t Be Used”

More wisdom from Dave Pollard:

studying the use (and non-use, and mis-use) of various tools, I’ve come
to the realization that some pretty simple rules govern whether, and how,
communication tools are used:

  1. A tool has to be both simple (intuitive to learn, comfortable and versatile to use) and ubiquitous (everyone needs to have access to it) before it will be extensively used.
  2. Most people are looking for just enough tools to manage both 1-to-1 and
    group communications, and both synchronous (real-time) and asynchronous
    communications. The fewer the better as long as they cover those bases.
  3. Most people will tolerate more than one tool in a category if and
    only if each offers unique and important functionality that is absent
    in the others.
  4. Comfort with and access to various communication tools varies
    between generations, and with it their propensity to use certain tools.

More Thoughts on Commenting

Seems like I’m not the only person thinking about website comments these days. Our friends at The Tyee have been doing some heavy duty musing on this lately, too:

The Tyee just
launched its new commenting system yesterday, and it’s been a very interesting
ride so far.  Overwhelmingly positive feedback, but of course some disgruntled
commenters who don’t like the changes.  Lots of good constructive feedback from
readers so far, both on the experiment in general, and on technical details that
we could improve on.
Check out our
editor’s two pieces about the changes:
1) “Can We Still
Talk Online?  Push is on to improve reader forums on the Net.  First in a
Tyee’s New Approach to Comments: A system designed to promote thoughtful
We see the
changes we’re making as part of a wider trend in online forums, not just with
online publications, but with blogs and other open forums as

Are you over-concerned with “shiny”?

Ethan Zuckerman (and I) think you probably are.

Some of my geek friends seem concerned that I’ve lost my sense of
shiny. Talking with friends at South by Southwest, they were concerned
that Global Voices wasn’t very appealing to the social software geek.
You can’t vote, you can’t edit our articles, you can only read or leave
a comment. Not very shiny. “Maybe you should add a digg-like mechanism
to let people rank articles? Or add a spinning globe that shows where
posts appear around the world in real time and deliver those updates
via Twitter?” It felt like an intervention: “Ethan, your lack of
shininess has become a problem for you and your friends. We care about
you, and we want to make sure that you understand that you seem to be
missing the shiny.”

The journalists – the primary audience for Global Voices – doesn’t
seem to be complaining about the lack of shiny. And I’ll happily admit
that the pretty maps are, at least in part, shiny and designed to meet
your shiny needs. But I think there’s something very deep to JC’s
diagnosis – there’s a good chance that underneath the shiny is
something that isn’t very interesting. (Not always, but often.) And
that some of what’s deeply, truly, long-term transformative isn’t shiny
at all.

Free as in “Free Kittens”

What a fantastic meme.  Michelle quotes Deborah quoting some unknown-but-sage librarian, talking about the “free”-ness of open source software:

“…all of these technologies are ‘free’ as in ‘free kittens,’ not free as in ‘free beer.'”

The point being that open-source software takes care and feeding, and the occasional trip to the vet.

More Sprint Wisdom – Getting Your Sprint On

Whit Morriss, who recently led the fantastic Plone commuinty “BBQ Sprint” in North Carolina, published a few great bullet points of sprinting wisdom titled “Get Your Sprint On.”

  • Don’t [work|code|drink] alone
    Sprints are social event above all and you plural are the main resource.
  • Socks, then shoes:
    Start at a starting point, move in a direction.
    1. Start with a plan
      POA.  Maybe you POA is a part of a five year plan for world
      domination.  Maybe you just want to learn how to write better
      doctests.  All that matter is that you have a plan so you have a plan
      you can change.

    2. Focus
      the main things is keeping the main thing the main thing.
    3. Flow like water
      The A
      stands for adaptation as well as action… a project’s POA is
      determined by it’s participant’s needs and desires.   As new
      information becomes available, plans change.

    4. Do First Things First
      don’t expect to code features if your project don’t have tests, packaging, docs, buildscripts etc. 
    5. Do what you need to do
      If things aren’t working, adjust your POA to focus on making them work
  • Test first and [ask questions | talk trash] later
    has questions and opinions.  Make yours better by doing everything you
    can to test them before you disseminate. Sometimes the best question is
    “how do I test this?” rather than “How do I do this?” or “why doesn’t
    this work?”.

    As for opinions, sharing information is the
    greatest part of opensource.  The better the your information, the
    better you can contribute, the better F/OSS is.  Good tests are golden,
    talk is cheap.

NTEN Open API Summary

NTEN recently published a solid little paper by Michelle Murrain and Katrin Verclas that sums up the state of open APIs in the nonprofit CRM sector.  It’s an important read if you believe in the importance of integrating tools.

There’s a lot of good stuff in this short paper, and I particularly appreciate that they make a clear distinction between “same machine” or “internal” APIs, which are only accessible to programs written in the same language running on the same machine, and web services or “externally accessible” APIs that can be used by any program, written in any language, running anywhere. 

Building Bridges

Ryan Ozimek’s piece “Islands and Bridges, the building has begun” is a great hallelujah to the power and importance of integration via open APIs.  It’s clear that PICnet and ONE/Northwest are drinking form the same cup, when Ryan writes:

The power of open source, combined with best of breed proprietary
systems with open APIs give organizations the power they need combined
with a price point they’re more likely to afford.

Which leads us back to the islands and bridges. The winning
solutions at the end of this year won’t be those that try to pack as
much under the hood as possible, but rather those that are most
flexible and connect most effectively with other systems.

In short, the non-profit sector’s needs demand more choice, and that’s just what open source and open APIs can do.


We’re attempting very similar bridge-building work between and Plone, and we’re looking forward to (finally) releasing our SalesforceConnector for Plone in the next few weeks.  (Got to get through some server migration work first!)

I can’t wait to discuss all of this great integration work at Aspiration’s Nonprofit Software Development Summit in a few weeks. 

Software Is Hard

Interesting interview over at Salon, entitled “Software Is Hard“, with author Scott Rosenberg, about his new book “Dreaming in Code” which is about the troubled story of Mitch Kapor’s Chandler software development project.  But really it’s about how hard software development is in general.

You’re doing the project because there is this new feature or
features that you need. The developers will often look at this and say,
well, we know we have to do that, but then there is all this other
stuff that needs to be done…The developer might say, I could take this thing off the
shelf that exists already and plug it in, but it’s going to take almost
as long for me to learn how to do that, or maybe even longer to learn
it, than to write it myself.

And programmers, as I quote Larry Constantine in my book,
programmers are programmers because they like to code — given a choice
between learning someone else’s code and just sitting down and writing
their own, they will always do the latter. And the programmer who says,
it will be faster for me to write it, rather than to learn it, is
usually correct. Except that what he will write, most likely, is
something that will work but will not have its rough edges worked out,
will not have the benefits of a piece of software that has actually
been used for a few years, where the bugs have been found and the users
have given feedback and have helped you figure out where the problems
are. So what they will often be handing you at the end of that
I-can-do-it-faster-myself thing is something that works, but that is
kind of a mess in certain ways. Whereas the thing that you were going
to pull off the shelf, maybe it will take the programmers a while to
learn it, but once they learn it enough to hook it up to this project
you are creating, what they are hooking up will probably have a lot
fewer problems.

Jon Udell Says “Integration Is Hard”

… and he’s just talking about connecting Outlook 2007 and Google Calendar!

Bottom-line: support for standards is necessary but not sufficient. Even when products comply with standards like iCal, people struggle mightily to use those products interoperably. It’s the conceptual barriers that get in their way. It’s really hard to figure out how a concept expressed in one system maps to the same (or a similar) concept in another system. To make that easier, technology providers will have to agree on more than just protocols and file formats. We’ll also have to work together to minimize conceptual clutter and normalize core concepts.

Good to keep this in mind as we move forward with integrating wildly different social change tools.

Reading the tea leaves

Yesterday’s big nonprofit technology news was Convio’s acquisition of GetActive, which combines two of the largest players in the big-client integrated CMS/CRM market.

The players aren’t really talking about the underlying motivations behind the deal, so it’s pretty easy to read whatever you want into the tea leaves. That said…

As I’ve written before, I believe that the tide is running against big, monolithic applications that do everything for everyone, and that in the future we’ll see a larger ecosystem of lighter-weight applications that do a couple of things well, are easy to extend and, most importantly, assume they need to talk to each other.

For this reason, among others, I’ve signed the Integration Proclamation, which calls on our entire sector to engage in the conversations needed to drive that future ahead.

There’s also some good discussion over on Michael Silberman’s blog.
If you’re interested in seeing more tools that play well together, rather than fewer, larger “one size fits most” vendors, then I encourage you to sign it as well.