Unintelligent Upgrade

Ever since Quicken dumbed down its Mac version, I’ve been using iBank. You can read about that saga in these posts if your are interested:

Cut to the Quicken - 1/19//10
QuickEnd - 7/11/11
The Quickening - 12/22/11

This weekend, I discovered that they had released a major new version (5), and I decided to upgrade. I had purchased iBank through the Mac App Store, which is quite handy, but still doesn’t allow upgrade pricing. So, I could either buy iBank 5 at full price from the store, or I could download it from their website and purchase an upgrade license for about half price. I like to save money, so I did the latter.

This modal dialog was displayed, asking for my credit card information. Yes, the software I use to download transactions for all of my credit cards asked me to enter my credit card information. It could have asked me to select one of the credit cards it already had information for. Of course, since it was modal, I couldn’t even look up the information in the application. I had to resort to getting it out of 1Password.

Correction: I was contacted by someone at IGG Software who pointed out that the application doesn’t actually have my credit card information, just the account information. It’s been a long time since I entered my accounts into the application, and I just assumed. You can’t offer to use what you don’t have.

In the Details: 1Password 2-for-1

I started moving my software registration records from Yojimbo over to 1Password, because Yojimbo requires a paid subscription for synching, while 1Password synching is included in the price of the app (as it should be). I noticed two nice little microinteractions as i was doing this.

First, I noticed that as I added each application, 1Password was finding that app on my drive and pulling in its icon. Notice that the Battle.net Mobile Authenticator has a generic icon. That’s because it’s on my phone, not my desktop.

The second “aha” moment happened when I added the eleventh item. The list gained alphabetical dividers. The application’s designer decided that for ten or less records, dividers weren’t necessary. Nice touch.

Crop Accuracy

Prior to Adobe CS6, I was able to accurately crop an image with pixel precision at 100% zoom. With the change to the way the crop tool works, I find that I now have to zoom in quite a bit to get my crop boundaries where I want them. I no longer have the previous version installed, so I can’t do a side-by-side comparison. I can only conjecture as to the reason.

As I recall, the outline created by the previous crop tool would be either black or white depending on the background behind it. At any rate, I certainly remember that it changed to contrast with the background, and this made it really easy to detect edges. The current tool uses a nearly black line, regardless, which is only slightly transparent, and it darkens everything outside the boundaries. This may work well for photographs, but it actually obscures edges when trying to crop screenshots of UI elements, which is what I’m typically doing. It now takes me over twice as long to crop an image.

Back to Basics: Database Keys

I don’t know a whole lot about relational databases, but there is one thing I know about them all too well. Each entity within the database has a primary key that acts as a unique ID by which the entity may be referenced. It is also typically used as a foreign key, linking it to other entities. An example of this is the User ID, which is required separately from your actual name because, unlike your name, its uniqueness can be enforced by the system and thus depended upon to distinguish you from every other user in the database.

Left to their own devices, developers will invariably use a value from a user-entered field as the primary key. Because it is the unique ID and used to link to other tables, the value cannot be changed. So you are now left with a UI that allows the user to enter a piece of information, but once entered, won’t let them change it. This is a design sin. As a rule, if the user is responsible for entering information, they should be allowed to change it, if for no other reason than to correct typos. There are certainly edge cases in which this rule should be broken, but they are few.

When specifying your UI, make sure you include editing capabilities for any data the user enters. If editing functionality is specified, the developer will know that they can’t make it the primary key. They will generate a key behind the scenes that the user will never see, and that’s the way it should be done.

RSS in Limbo

I’m in limbo. Ever since Google Reader shut down, my workflow for keeping up on design blogs and other news has been dysfunctional. I had been using NetNewsWire on all of my Macs and my iPhone. It used Google Reader, as did most RSS readers, it seems, for synching. That way, whether I read something on my phone, my work laptop, or the iMac at my house, every platform was up-to-date on what I had read. If I subscribed to a new feed, they would all be updated.

Synching stopped working when Google Reader shut down. The NetNewsWire iPhone app stopped updating feeds. They released a Beta version of their new desktop app, and while it was able to retain all of my subscriptions, it doesn’t synch them between machines. I did most of my reading on my iPhone, and they don’t have a new iOS app available.

So, I decided to check out another feed reader I had heard a lot about. I installed Reeder on my iPhone and added a few of my favorite feeds to it. I really like the design of the app. It works well. Unfortunately, their desktop version is no longer available. They pulled it from the Mac App Store when Google Reader shut down. So, they don’t currently have a cross-platform solution that fits my needs either.

As things stand now, I have a few feeds in Reeder that I’m reading regularly and a lot of feeds on my iMac in NetNewsWire that I’m not. I’m having to add feeds to my students’ blogs on my iMac and my MacBook Air individually. In short, it’s a mess.

I expect whoever releases both a desktop and iPhone app with synching first will get my money.

Designer’s Toolbelt: Macaw

When I first began learning to design websites, I used the brand-spanking-new Adobe Pagemill. Who needs to learn code? I was a designer, not a programmer, and I wanted the freedom of the WYSIWYG tools I was used to using for print. The computer should do the boring work of figuring out how to actually specify it. When GoLive Cyberstudio released, I jumped on it. I continued using that tool after Adobe purchased it, and I eventually switched to Dreamweaver after Adobe acquired Macromedia.

By that time, I had graduated with my Masters and was working for a software development firm. It didn’t take long for me to realize why the developers turned up their noses when they saw the HTML I was handing them. Fortunately, I had been working with it long enough that I had developed enough understanding of HTML to be able to start coding by hand. Once I got my hands on CSS, you couldn’t pay me to go back to a WYSIWYG editor. These days, I’m a huge proponent of Object Oriented CSS (OOCSS), speaking at conferences and leading workshops about working with developers and contributing directly to the production code base.

So, it was with much interest and a hint of disdain that I took a look at Macaw, “the code-savvy web design tool” under development by Tom Giannattasio and Adam Christ. I must admit, I’m impressed with what they have shown so far.

Stop writing code. Start drawing it.

Macaw provides the same flexibility as your favorite image editor but also writes semantic HTML and remarkably succinct CSS. It’s time to expect more from a web design tool.

This tool is pretty slick, and you can tell that it has been thoroughly designed by a designer who understands typography, grid-based layout, and code. You can tell that it has been built to address all those little annoyances we web designer/developers face daily. From readouts that tell you things like the number of characters per line, to supercharged key combos for quickly aligning objects (pudging is going to make your heart skip a beat), the application looks to be chock full of awesome.

And then there’s the code. I’m awed by how intelligent their aptly named Alchemy engine is.

We wanted Macaw to write code you’d be proud enough to hand to developers. Current applications rely on trendy frameworks, export rigid positioning and generate ridiculous IDs. We think designers and developers deserve better. Macaw’s powerful, patent-pending engine is called Alchemy and it can do some incredible things.

Alchemy analyzes every possible selector to describe your document and determines the most succinct way of using them based on logical criteria: applicability, specificity and semantics.

Macaw offers designers the freedom of absolute positioning within the interface but will convert to a static document flow upon export by calculating the necessary margins, padding, floats and clears. It’s the best of both worlds.

There is an incredibly elegant outline palette, reminiscent of Photoshop’s layers palette, that not only serves as a method of hiding and showing elements within your page, but also creates the semantic linking between elements and the classes that will be generated in the CSS.

I’m just scratching the surface here. You really should check it out for yourself. I’m not saying I’m ready to start generating all the enterprise web applications I work on in this way, but it sure seems like an excellent tool for sketching, prototyping, and then moving your prototype to usable code. It’s leaps and bounds beyond any editor I’ve seen before. They say it’s coming to the Mac App Store soon. I’ll be following their progress with great interest.

In the Details: Order

You probably recognize this. It’s Photoshop’s tool palette.

Adobe’s icons are industry standards, and goodness knows I’m fluent in reading them. Every couple versions, Adobe has done some recategorization of them, but after hours and hours of use, I know where to find them. Except for one. I rarely select the eyedropper tool, as I typically hold down the Option key while using one of the painting tools to temporarily switch to it. I’ve noticed, however, that every time I reach for the eyedropper, I go to the bottom of the bar. I expect it to be collocated with the color swatches, but it’s closer to the top, in the first set of six. I don’t see any logic in its current grouping.

Not What I Wanted

There have been a lot of infrastructure changes since the acquisition of my company over a year ago. The most recent was the move from our mail server to the larger organization’s Exchange server. I made the switch yesterday, and Apple’s Mail app made it easy as pie… aside from one hiccup.

After I got the new account set up, which only took a couple minutes to do, and tested it out, I deleted the old one. Now, I love Mail’s Organize By Conversation feature, which groups all the sent and received messages with the same subject into one thread, regardless of the actual location of the message. This morning, I was trying to find a reply that I had sent somebody a couple days ago, and it wasn’t there. I quickly realized that when I deleted the account, Mail also deleted the “Sent” folder for that account. Years’ worth of messages had been deleted in an instant. I had done the exact same thing at home last night.

My home computer wasn’t a problem. I have Time Machine running, so I was able to go to Mail, open Time Machine, move back a day, select the Sent folder, and press Restore. After a minute or two, all of my sent messages were right there.

I don’t have my work laptop backed up by Time Machine. I purchased Data Rescue 3 from Prosoft Engineering, downloaded it, and ran their deleted files scan. It recovered thousands of email messages from my hard drive. Spotlight allowed me to quickly search the recovered files for “From: Jack Moffett”, which returned some 2,700 odd messages I had sent. All I have left to do is import them back into Mail.

There are two lessons here:

  1. Make sure you are backing up your email.
  2. Don’t delete an account until you have copied all messages out of the default folders attached to that account (e.g. Inbox, Sent, Drafts).

The real issue here, however, is one of poor interaction design. Deleting an account in Mail’s preferences should not delete messages that are saved on the local drive. At the very least, it should provide an explicit warning of what will occur, and preferably, it would move the messages to the trash, rather than immediately deleting them in a non-recoverable fashion.

Scrubby Zoom Under My Skin

It’s been a few months since I first came to know Scrubby Zoom, the zooming behavior found in the latest version of Adobe Photoshop. I’ve gotten to the point now that I am comfortable with it, and I rarely lapse back into trying to use the tool the old way. This is both a blessing and a curse. It’s a blessing while I’m using Photoshop, but I’ve started trying to use scrubby zoom in InDesign, where it doesn’t exist. This can be very frustrating. It points out yet again that Adobe is remiss in truly treating their applications as a suite with an overarching UI design. Of course, it isn’t even consistent within Photoshop. The Save for Web dialog does not utilize scrubby zoom.

In the Details: iChat Notifications

I really like the universality of iChat. If I’m sitting at my desk, it’s a lot easier to reply to a message than using my phone. However, the notifications aren’t smart enough. Three things happen when I receive an iChat message on my desktop. A Mac OS X notification message popups up in the top-right corner of my screen. I have that set to remain until I dismiss it. Second, the iChat dock icon starts bouncing, and third, the icon displays a badge, indicating that I have one unread message. If I acknowledge the message by closing the notification popup, that should be enough to indicate that I got the message. However, the icon continues bouncing in the dock until I at least hover over it, and the badge remains until I actually view the message in the iChat window. Now, I have the option of turning each of those notification types off, but it’s not that I don’t want them—I just want them to talk to each other.