Showing posts with label technology. Show all posts
Showing posts with label technology. Show all posts

September 24, 2007

Feedhub.com goes live!

It’s been a lot of hard work by the very dedicated and talented folks with whom I work, and we’re all very excited to get it out there for everyone to try. So, if you use or know about RSS, go check out feedhub.com. We hope you like it!

June 12, 2007

Why people hate computers

The other night we stopped at Lowe’s on our way home to return the one unused box of tile from our bathroom remodel. That’s one box containing twelve tiles. One box, twelve tiles. The new employee working the returns counter started entering information into the returns software on the computer (Having new employees work the return counter because no one else wants to is a bad idea, imho, but that’s another post altogether).

She asked us the standard questions, “Why are you returning the tiles?”, “Phone number?”, etc. She scanned the barcode on the box, and then looked thoroughly confused as the software asked her a question she didn’t understand. “How many units??”, she mumbled. She asked several other employees about it, and after several who didn’t know whether she should enter one or twelve (one box, twelve tiles), they settled on twelve.

Unfortunately, that turned out to be the wrong answer. I learned later that because their inventory system stores the tiles as units by box, the correct answer was one.

Thinking she had entered the right answer, the employee continued through the software to a point where it informed her that she was about to accept a return of twelve boxes of tile.

Oops, but no big deal. She would just need to change the return quantity, or in the worst case, cancel the return and start over, right? Wrong. When she tried changing the quantity to one, the software created a new return item of one box of tile while also keeping the existing twelve boxes. Now the system thought we were returning thirteen boxes of tile.

After several employees came by and stared at the screen, and several calls to managers, who also tried changing the quantity to one (after a while, the system thought we were returning more boxes that we originally bought!), the conclusion was that someone needed to MIS. M … I … S, cue ”Theme from Mission Impossible” (with apologies to Lalo Schifrin).

At this point I thought, ok, she’ll make a quick call on the store phone, and an MIS geek (I can say “geek” because I am one), will swoop in, hit the magic keystroke, and all will be well again.

“What’s the number for MIS?”

“1-800-…”

Uh oh.

It turned out that “calling MIS” meant calling some central Lowes MIS division, probably located inside a concrete bunker, deep inside a mountain somewhere (there’s that theme song again).

She picked up the phone and called. After explaining the problem several times, and being transferred to the “right” person each time, she reached someone who was able to help. Apparently the tech support person on the other end had to use some administrative interface to the massive returns system to delete the return record.

About an hour, and several tons of frustration (ours, and the employees’) later, we had successfully returned our box of tile.

In my experience, the biggest reason people hate computers is because of poor alignment of the computer and software with the natural flow of their jobs and lives. Instead of being designed to function in a way that flows with and augments their lives, most software forces people to change the way they already do things. Worse yet, when the software doesn’t behave intuitively and the user makes a “mistake”, there is no easy or obvious way to correct the mistake or get help, either from the system itself or from a human deep inside a mountain somewhere..

February 8, 2007

Design and Engineering

A few weeks ago, a colleague pointed me to this article, which led to several other sites, including this one. This colleague and I have discussed the issue of the role of graphic and interaction design in software before, and we tend to agree that there’s a lot of embarassingly unusable software out there. However, I feel very strongly that putting the blame solely on programmers misses many of the more important aspects of the problem. It’s an easy cop out to point at the people who wrote the code and say it’s their fault.

To understand where I’m coming from, consider this question: Who created the specification for the visual and interaction aspects of the software to which those developers wrote the code?

One possible answer is that there was no specification for visuals or interactions—not even a napkin drawing. If there was no specification, then it's extremely likely that no one has really thought about it, and by no one I am including the domain experts, customer liaisons and reps, managers (both technical and non-technical), and developers. If no one has thought about it, it seems a bit ridiculous to expect a beautiful, elegant, and highly usable interface to emerge out of sheer hacking or luck. Unfortunately, in my experience, that seems to be an acceptable expectation in industry.

Yet another possible (and typical, in my experience) answer is that the developers themselves created a specification, either in some document or set of drawings (paper or electronic), or in an ad-hoc way, possibly even on the fly as code was being written. One big problem with this is that developers are not trained in design. They are trained in algorithms, data structures, network protocols, etc. In advanced programs, that training can extend to object modeling, software architectures, and even software project management and the business skills necessary for running a software company. Their training may even include the dreaded GUI programming course(s). In my experience, however, it is extremely rare for any areas of the typical computer science or software engineering curriculum to include interaction design concepts such as mental models, metaphors, and affordances, or visual design concepts such as layout, typography, color theory, etc.

The fact is that, most developers simply are not trained in these areas. However, in my opinion, that is the not the problem. The problem, I believe, is that the general expectation of most executives, managers, and developers themselves, is that all developers can do these design activities effectively. To put it simply, developers are expected to do something they were never trained to do.

Developers are very good at solving problems that involve logic and complex algorithms to process and transform data, but they are typically not good at creating, for example, a color palette that evokes a certain emotional response, or a text and widget layout that leads the user effortlessly through filling out an online form, yet we consistently expect that developers take on the role of design experts. Would it be reasonable to expect a graphic designer to write a program that solves the Towers of Hanoi? Or to create an XML parser? Or better yet, to create efficient and elegant implementations of those things? Or how about a well-defined system architecture for an inventory system to track millions of items across multiple geographically distributed warehouses and distribution centers in near real time? These are not reasonable expectations because designers are not trained to do these things, and typically do not have industry experience doing them.

I think the revival of design in Web 2.0, along with several higher profile companies who have focused on design has started to change the expectations a bit and to educate people on the benefits of good design. Unfortunately, I think it will be a while before the benefits of good design percolate up to the point that expectations really start to change on a large scale.

February 7, 2007

IMified and that Twitter idea

A short while back, I posted about the possibility of Twitter becoming an input modality and a information delivery service. I just found IMified (via LifeHacker), and it sounds like it does a lot of the things I was envisioning, but uses IM directly as the transport, rather that Twitter. They seem to have several interesting points of integration (look at the icons in the main graphic) already.

One thing that will be interesting to see is whether they strive to provide an additional integration across the multiple services that they talk to.

I still think Twitter would provide a more useful layer of integration since it allows various input (including IM) and output methods. I’ll probably sign up for a free IMified account to evaluate it and post some thoughts later.

February 2, 2007

Job interview observations, part 2

I realized after my last post on job interviews that I gave some examples of technical questions that I think are useless, but didn’t really say why I think they are useless, and didn’t give any examples of questions I think are useful.

One of the questions I mentioned was “What is the difference between public, private, protected, and default access permissions in Java?”. If the purpose of this question is to immediately disqualify someone who doesn’t know anything about Java, then maybe this question has value. However, if a candidate answers it correctly, what have you learned? Not much at all, in my opinion. Maybe the candidate read it in a book the night before. Maybe you’re doing a phone interview and he/she did a quick google search. Maybe he/she knows the difference, but always makes all member variables public because it’s just less typing than writing getter and setter methods. Maybe he/she is the greatest software engineering wizard the world has ever known. How would a correct answer help you discern? I contend that it won’t help you.

Ok, so maybe that question is just one among a whole series of similar questions that test reference book type knowledge. Again, what will you learn if the candidate answers them all correctly? If your minimum requirement for a developer is someone who can write code that compiles, then you’re probably (but not certainly) safe. Programming languages are simply tools, like hammers and saws. I know how to swing a hammer, I know how to operate a circular saw, and I know what nails and screws are, but you do not want me to build a deck on your house (trust me, you don’t).

A better approach, for example, might be to ask the candidate to design a few classes to model a problem domain (like a poker game, or address book, or whatever you want) and see how he/she uses those access permissions, possibly asking questions about the class relationships and permissions. Another approach might be to ask him/her about certain design patterns that can make use of those permissions, such as the Template pattern. I think youll learn a lot more about the person on many levels from this type of question, especially at the technical level, since it’s highly likely that this is closer to the kinds of things you are actually hiring him/her to do on a daily basis.

Obviously, language syntax is important, just as knowing how to swing a hammer is important. However, truly effective interviews go beyond that. What is really important on the technical side, in my experience, is how logically and/or creatively the person thinks, and how quickly he/she can understand the important aspects of a problem, begin to formulate solutions, and how they weigh those potential solutions to pick the best one for the situation.

January 31, 2007

Job interview observations

I’ve had quite a few phone and face-to-face interviews this past month in my job search. A few of them have been refreshingly interesting, and also effective. A few have been truly dreadful. Most fall somewhere in between, of course. However good or bad, though, I think I’ve learned at least something from each one—either something about myself or something about the job interview process.

A few things stand out in my mind from what I consider to be the most effective interviews:

  1. They were balanced. I felt that I learned as much about them as individuals and as a company as they learned about me on a personal, professional and technical level. How do you know you will be happy working somewhere if they don’t let you learn about them, too?

  2. They were comfortable. I didn’t feel pressure to dress or act a certain way, or like I was a suspect being interrogated. The interviewers and I had real, two-way conversations, not just question and answer exchanges. I always came away from these feeling like I had just met some very nice, and very talented professionals.

  3. Their evaluation of my technical skills went beyond the common (and in my opinion, useless) reference book questions. An example of the worst is the classic “What is the difference between public, private, protected, and default access permissions in Java?”. “Why are manhole covers round?” is just as useless, imho. The best ones required that I devise a solution to a small, but interesting computer science-y or real-world problem. Some involved writing code, others involved drawing architecture diagrams or object models. All of them involved explaining my thought process and my solution.

January 25, 2007

CallWave Dashboard widget

I’m liking CallWave more and more, and now they have a Dashboard Widget. It’s a little clunky, especially when you first activate the widget if you already have a CallWave account (check the bottom red bar of the widget for an “Already Registered?” link), but once you log in it works very well. I’d say it’s easier to use than getting the messages in Gmail. I don’t know if it has Growl support yet, but here’s hoping!

Keep up the great work.

Twitter as a message router?

Twitter is fun, no doubt about it, but I think the novelty of it is starting to give way to some interest in finding ways to make it more useful. I had been thinking about it for a while (almost ever since I started using Twitter), but this post on their blog, pointing to Eric Meyer’s post got my wheels turning again. If Twitter had the notion of public and private posts (as Eric points out), it would be fairly trivial to do some interesting stuff with it.

It could be used as an input layer abstraction for various other web services I already use. For example, I could post something like “cal: lunch with Bob tomorrow 9am” from my mobile, and use a service like rssfwd to have posts routed to Gmail, where I could set up a filter that would forward it to 30boxes. If I happen to want to start using Backpack calendar instead of 30boxes, I probably rig up something similar. The key is that I would still create events using Twitter—only they would go to Backpack instead of 30boxes.

I could do something similar with notes that I want to send to my Backpack page or to Stikkit from my mobile. In essence, it could be used to add an SMS interface to apps that don’t already have one.

Similarly, it could be used as an delivery system for more useful things. For example, it might be interesting to setup a Twitter stream for team meeting reminders, that way the meeting could be scheduled on a single calendar, but a reminder could be broadcast via Twitter to all the team members who have added that private team meeting Twitter feed as a “friend”. Granted, that could be done by setting up an email group or alias, and using SMS gateways, but I think Twitter could present a much more elegant solution by abstracting away the particular calendar service being used. I think that’s just scratching the surface, too.

At it’s core, RSS is a message delivery mechanism, and Twitter puts a useful, near real time face on it. Who knows what the Twitter developers have in mind, but for an app that is about nothing, it sure seems like it has big possibilities.

January 23, 2007

Two useful cameraphone things

Over the past few months, I’ve been using my cameraphone to capture our weekly grocery lists. We have a small whiteboard on the side of the fridge, and as we think of things over the course of the week, we just write them on the whiteboard. Then, when it’s time to go to the store, I just snap a pic of the whiteboard and head to the store, where I can view it with one of the builting image viewer apps (more recently Nokia Album, which is much nicer). That basically lets us write down stuff whenever we think of it, without my having to recopy the list into Backpack, or heaven forbid, paper.

Since we’ve started a few new projects, we’ve been making quite a few runs to Lowes, Home Depot, and various other specialty stores to look at everything from fixtures to tile. Sometimes it’s convenient for me to do that during the day, so I’ve been snapping pics of various styles of tile and borders, shelving systems, etc. Then I either bluetooth them to the laptop or send them to flickr directly with ZoneTag and we look at them full size to pick out things or to narrow the field so that we can make fewer trips or make decisions more quickly when we are able to return to the store together. For example, I took pics of all the shelving system components so we could start designing some shelves for our soon-to-be-remodeled closets.

January 19, 2007

How to make Twitterrific work

A couple days ago I discovered IconFactory’s lovely new Twitter app Twitterrific. I had been using the Twitter site, or the twu command at yubnub via Quicksilver, so I was pretty excited to try Twitterrific.

When I first launched it, it magically logged into Twitter and grabbed all my latest updates! Cool. I briefly wondered how it knew my login and password, but quickly came to the conclusion that it must rely on WebKit or Keychain, since I had been logged in to Twitter via Safari at some point during the day.

After that little mental detour, I quickly typed in a new tweet and hit return. The progress spinner did its thing for a second and then disappeared, along with my tweet in the text entry box. My computer science instincts kicked in and I waited for Twitterrific to check in with Twitter and refresh with my new tweet, which never happened. To make a long story short, I tried for about a day with the same results each time, having to resort to my previous methods for posting tweets.

Then, I noticed this little tidbit on the Twitterrific page:

Before installing Twitterrific, it’s best if you first log out of Twitter’s website - you can log back in after Twitterrific is up and running.

I quit Twitter and used uApp to delete it’s preferences and cache, Safaried to my Twitter account and logged out. Then, I launched Twitterrific again, and after a few seconds, it popped up a sheet allowing me to enter my Twitter login info. After entering the info and a few seconds of network activity, it again pulled my latest tweets. This time, when I fired off a new tweet, it worked.

If you’re having trouble getting Twitterrific to post, this might work for you.

Kudos to IconFactory for the very simple and useful app!

January 18, 2007

Ohhhh, now I get it!

A few days ago, I started using Callwave to manage my mobile voicemail, mainly due to the flood of voicemail from my job search, but also because I think Cingular’s voicemail system could do with a serious usability overhaul (why do I have to listen to the entire message before deleting it??).

It turns out that Callwave’s system is very similar to Cingular’s. Most of the voice prompts are exactly the same. It does, however, fix some of the things that annoy me the most about Cingular’s voicemail, so the familiarity with some incremental improvement is nice. It also does other cool things like send you text messages with useful info about new voicemail messages like the caller’s number (and caller ID info, if available!), and the message duration.

I discovered the real usefulness of it yesterday when I was sitting at my computer checking Gmail, with my phone turned off, and I got a new voicemail email from Callwave. My phone was off, and I still knew who called, and was able to listen to the voicemail without turning the phone on. Ohhhh, now I get it.

January 14, 2007

I want a new Desktop

I think the Desktop as we know it needs to be done away with. It needs to be transformed into or replaced by something more useful. I can’t make any claims about knowing what that new and more useful Desktop might be, but honestly, I can’t find a single, truly useful function of the current Desktop in OS X, or Windows, or X, or insert favorite windowing environment here.

(I’m a primarily OS X user, so I will write from it’s perspective, but I’ll bet that most everything in this post applies to nearly every other modern desktop computing environment)

I typically have used the Desktop for only a few things:

  1. To Display a nice background that suits my mood.
  2. To hold temporary URLs that a drag from my browser for later reading.
  3. To hold a few files on which I am currently working that don’t yet have another suitable home.

The first is not something I would call truly useful. Don’t get me wrong, I like nice desktop pictures, but I don’t feel that a landscape, still life, or anime character provides any more utility than a plain black backdrop. Some folks have indeed come up with some clever and more useful types of desktop pictures, such as calendars, etc. However, rather than this being in support of the usefulness of the current Desktop, I would argue that these actually highlight the problem. It means that the Desktop did not do something useful for these people, so they took it upon themselves, in essence, to hack the Desktop to do something useful for them. They have changed the Desktop metaphor, and by doing so, in my opinion, have provided more support for the argument that far more useful things that could be done in a new Desktop model.

The second item above, storing temporary URLs, is already handled more elegantly by other, more specialized software, including URLWell (site is MIA), Yojimbo, Trapper Keeper, del.icio.us, and a myriad of others—simply pick the one that fits how you work. I have tried all 4 of the ones listed above, and finally settled on using del.icio.us with a toread tag. I’ve been able to make this process even more efficient by customizing this quick posting bookmarklet to my needs. I don’t even think about dragging URLs to my desktop now.

The last item, holding files for easy access, is also already done in a more elegant way by any number of software applications and tools, including Spotlight. Dragging and dropping files onto the desktop changes their physical location in the file and folder hierarchy. No longer does that design document live in the folder with it’s other supporting documents (e.g. a requirements document). Dragging files out to the Desktop breaks up an already logical and useful grouping of documents for the sake of quick access. One better solution, in my opinion, is to use a Spotlight comment, or Finder label to identify files to which you need quick access. Then you can either use Spotlight to find them via a Spotlight or Finder search, or by creating a Finder Smart Folder that contains only items with the particular comment or label. There are any number of other solutions that use third party software, as well.

There are even several applications for OS X that attempt to hide or dim the Desktop, or automatically move files from the Desktop to another, presumably more useful, location. The fact that these applications exist at all means to me that there are other people out there who feel the Desktop is in many cases just a cluttered distraction and needs to change.

In fact, there are already computing environments where the Desktop as we know it has been redesigned or even left out entirely in order to make the environment more useful. A good example is mobile devices, such as phones and PDAs, most of which have a simple status screen, application launcher, or “Today” type screen showing upcoming calendar and todo items. Even Apple’s iPhone, which they tout as running (a scaled down version of) OS X, ditches the typical Desktop metaphor, apparently in favor of a simple launcher. Notice that it doesn’t even have a picture behind the icons.

With all of that said, why do modern desktop environments still have the same old concept of The Desktop? Honestly, I think it all boils down to one major thing: incentive. There doesn’t appear to be much incentive stemming from criticism of the current metaphor, from competition from a new and better metaphor, or from potential financial gains of expending the resources to create a new and better metaphor.

So, while I do feel there is an opportunity to do some exciting things with or in place of the Desktop, it seems at least for now, without any critical, competitive, or financial incentive, the current generation Desktop will be around for a while longer.