Detailed review of YoruFukurou

As I mentioned, I've been trying YoruFukurou as my main Twitter client.

After using it a bit more, I still really like it, for all the reasons I listed in my earlier post:

  • Command-F not only brings up a text field for filtering my timeline, it also dismisses that text field. I like Command-F being a toggle rather than using Escape to dismiss. For one thing, it's easier to reach. For another, it doesn't rely on the text field having keyboard focus.
  • Command-S shortens URLs, and the same shortcut also unshortens, which I like. While editing my tweet I might change my mind and prefer to show the full URL if it will fit. [Update: It looks like I was mistaken about Command-S unshortening. Use Undo to unshorten URLs.]
  • You can set the font size for composing tweets.
  • You can change the font size of the timeline by zooming in and out using the standard keys. For some reason I like this better than using a preference.
  • The app has a cute owl icon.
…[Y]ou can't edit multiple tweets at once like you can in Twitter.app, but Twitterrific has this limitation too and it never bothered me, though it's true I tweet very little.

I have a few more observations and minor suggestions. I'll Direct Message this blog post to the developer, since there doesn't seem to be an email address or forum for feedback.

Keyboard navigation

See their home page for a list of handy shortcuts (plus lots of screen shots of other features). I was pleased when, just guessing for the heck of it, I tried J and K to go to the next and previous tweets and they worked. I prefer them to arrow keys.

  • SUGGESTION: Put the J and K shortcuts in the menu so they're discoverable.

Opening links

If a tweet contains a link, you have to select the tweet to click the link. In fact, there's an option to make links unclickable altogether, which puzzles me. Do people often click links by accident? Maybe I don't use Twitter enough to understand.

I discovered an option to open all links in a tweet by double-clicking, which in a way is actually better than clicking the link because it gives me a much bigger mouse target. Hitting L is another quick way to open links in the selected tweet.

  • SUGGESTION: Make links clickable without my having to select the tweet.
  • SUGGESTION: Always highlight all links so they're easier to spot visually even if I can't click on them.

Translation

There's a Translate command (Command-T) to translate the selected tweet into a language you select in Preferences, which is English by default. It reminds me of a great Safari/Chrome extension called Franker, which I find handy when reading Facebook posts by my Russian and Chinese friends.

  • SUGGESTION: Provide a way to translate all tweets from particular users. It could be a checkbox in the Accounts pane: "Translate all tweets from this user". This could open up the world of people I might be interested in following — the YoruFukurou developers themselves, for example. I wonder if there's something about Google's terms and conditions that disallows this kind of automatic batch translation.

Time display

There's an option to show absolute time on tweets rather than how old the tweet is. I thought I would prefer this, but actually I like their way of showing relative time, with a phrase like "10 hours ago" rather than the abbreviation "10h".

  • SUGGESTION: Remove the word "ago". It's not needed and makes the timestamp more intrusive than it has to be.

Copying tweets

When you select text anywhere, the standard Copy action works as you'd expect. There is also a contextual menu for tweets that contains a "Copy" action for copying the tweet as a whole. You can configure how this is done:

Options for copying tweets

For example, copying one of my recent tweets in STOT format (whatever that means) gives me:

cocoadog: Twitterific: No Cmd-C in tweets? Cmd-F only works in compose field? No key/menu for Shorten Links? Links not draggable? This is Mac-like? [http://twitter.com/cocoadog/status/51874394028519424]

  • SUGGESTION: Have Command-C copy the tweet when a tweet is selected, so I don't have to use the contextual menu. For now my workaround is to use System Preferences to indicate Command-C as a shortcut for "Copy". You might think this would be redundant, but it makes the shortcut work in contextual menus. [Update: The developer @aki_null pointed out that Command-C does in fact copy the selected tweet — my mistake!]

Switching views

Someone replied to one of my tweets and I wanted to see the whole conversation. In other apps, this is done via an icon or menu that is within the tweet itself, and therefore fairly discoverable. In YoruFukurou, viewing the conversation is not treated as a tweet-level action but an overall mode for the timeline view. The timeline view options are "Normal View" (Command-1), "Single User View" (Command-2), and "Conversation View" (Command-3), which is the one I wanted. You can switch views using the menu, a keyboard shortcut, or a segmented control in the toolbar:

View modes

When you switch between the views, there is an animation, but it's not the sliding transition that Twitter.app uses. It's a sort of zoom-and-fade, which I prefer; it feels faster than the sliding transition, and it doesn't distract.

I have no suggestion here. Although it took me a minute to figure this out, it's not totally undiscoverable. I think the view switching is nicely done and I prefer it to the way other Twitter apps navigate.

Switching accounts

Another thing that confused me for a minute was how to view more than one Twitter account. I could see how to sign in to multiple accounts, but not how to switch between them. It turns out you do this with the "Previous Account" and "Next Account" menu items or their keyboard shortcuts.

[Update: @aki_null pointed out another way to switch accounts. When you have more than one account, your account icon appears in the tweet input field. You can click on this icon to select a different account from a pulldown menu. I had not noticed the absence of the icon when I only had one account, and it did not occur to me that it was an interactive control. Nice to know.]

  • SUGGESTION: To help with discoverability, add a popup button to the toolbar that lists my accounts. Also add "Previous Account" and "Next Account" buttons so that I am aware of these actions and will know to look for them in the application menu.

Take my money

  • SUGGESTION: Give me a way to donate, or make YoruFukurou a paid app. I wouldn't mind at all.

Cute app icon

When you quit the app, the owl closes its eyes and has a snot bubble coming out of its nose, which is the Japanese cartoony way of indicating sleep. I have no suggestion here, except maybe: don't underestimate my ability to be swayed by a cute icon.

Owl eyes

Scratching my head over Twitter clients

A couple of months ago when I decided to give Twitter a serious try, I figured I'd want a desktop client. From what I'd heard, the two best were Twitterrific and the official Twitter client.

I chose Twitterrific for three reasons:

  • It has one-click access to my lists, which mattered because I expected I'd want to view tweets grouped by areas of interest.
  • I much prefer its standard-looking window, with a standard toolbar and hideable sidebar, to Twitter's heavy black sidebar, which is non-hideable but has a "translucent" option that makes practically no visible difference.
  • I love the ding-chirp alert sound.

After several weeks of using the app the only thing I've changed my mind about is the one-click access to lists. I still appreciate that it's there, but it turns out I don't mind viewing everybody's tweets mixed together. The vast majority of the people I follow are in my "apple-people" list anyway.

So I do like Twitterrific, and I should note that IconFactory and its lead developer, Craig Hockenberry, have been greatly admired in the Mac community for a long time. Heck, they just made a huge open-source contribution to the developer community.

All of which has me puzzled by things about Twitterrific that are distinctly un-Maclike:

  • Command-C. I can't copy text in tweets with Command-C. I have to use a contextual menu.
  • Command-F. If there's a way to filter my timeline by searching for text, I can't find it. In other Twitter clients this is done with Command-F. In Twitterrific, Command-F brings up the standard Find panel when you're in the tweet editor, which by definition is limited to 140 characters, which means the Find panel is almost never useful.
  • Shorten Links. There's no menu item, toolbar item, or keyboard shortcut for Shorten Links. There's a pulldown menu, and I hoped assigning an Application Shortcut in System Preferences would work, but it doesn't. This strikes me as weird, because it seems to me Shorten Links would be a pretty frequent operation and a keyboard shortcut should be a must-have.
  • Can't drag links. I can't drag a link from a tweet to, say, a browser window or an email message. I have to copy it using a contextual menu and paste it where I want it.
  • No File menu. Extremely non-standard top-level menu bar items (Timeline, Tweet, Edit instead of File, Edit, Tweet), with no compensation in the form of increased usability.

I rarely use the menu bar, so I can live with the deviant menu and chalk it up to artistic license. But the handling of keyboard shortcuts (or their absence) is not only un-Maclike, it reduces usability. I don't get it.

I was about to switch to Twitter.app and just live with the heavy black sidebar, but I noticed odd things about it too. There's no URL shortening (much less a shortcut to do it), there are no font options, and it inexplicably limits the width of the window.

(Twitterrific at least allows Smaller, Normal, and Larger fonts. Other apps give more flexibility, and I'm not sure "Normal" is the right word, but at least they give options.)

I looked around a bit and for now I'm going with a free client called YoruFukurou, which is Japanese for "night owl". It has lots of features, including:

  • Command-F not only brings up a text field for filtering my timeline, it also dismisses that text field. I like Command-F being a toggle rather than using Escape to dismiss. For one thing, it's easier to reach. For another, it doesn't rely on the text field having keyboard focus.
  • Command-S shortens URLs, and the same shortcut also unshortens, which I like. While editing my tweet I might change my mind and prefer to show the full URL if it will fit. [Update: It looks like I was mistaken about Command-S unshortening. Use Undo to unshorten URLs.]
  • You can set the font size for composing tweets.
  • You can change the font size of the timeline by zooming in and out using the standard keys. For some reason I like this better than using a preference.
  • The app has a cute owl icon.

One difference from other apps is that YoruFukurou can't cancel a tweet or even hide the tweet editor. Command-N selects everything in the tweet editor, so you can easily delete it all and start a new tweet if you want. This seems fine to me. It does mean you can't edit multiple tweets at once like you can in Twitter.app, but Twitterrific has this limitation too and it never bothered me, though it's true I tweet very little.

Maybe I will use YoruFukurou as my main client and leave Twitterrific running for the ding-chirp alerts.

Accessorizer, at last

I've flirted with Kevin Callahan's Accessorizer over the years. Some pretty smart programmers swear by it, and I could see on paper how it would save me time and effort. Still, I was never 100% comfortable integrating it into my workflow — until now.

With the big changes in the latest release (2.9.2 as of this writing), I find that using Accessorizer not only saves time, it feels natural. My hands stay on the keyboard, there is very little cognitive load, and I never leave Xcode. Furthermore, the dozens of things Accessorizer can do are easily available to me, and I can learn about them and add them to my workflow at my convenience.

The Copy-Paste paradigm

The key for me was to understand that Accessorizer uses a Copy-Paste paradigm:

  • You select ivars in your .h file.
  • You load them into Accessorizer's buffer. Conceptually, this is a Copy, except what you care about is not the literal text but the ivars' names and metadata.
  • At various points in your code, you tell Accessorizer to inject @property statements, @synthesize statements, etc. Conceptually, these are all variations on Paste.

The things that bothered me before boiled down to extra steps that got in the way of this paradigm (for example, having to constantly switch between Accessorizer and Xcode). Two new features cleared all those obstacles:

  • The Action Menu, which appears as a status item in the menu bar and provides quick access to all the "variations on Paste".
  • Auto-paste, which means the Action Menu pastes code snippets directly into Xcode.

There is an Action Panel, a floating version of the Action Menu, which I don't use but others like a lot. I prefer the Action Menu, but you should check out the Action Panel to see if you like it. Different users will prefer one or the other.

My workflow

With the Copy-Paste paradigm in mind, here's how I use Accessorizer:

  • I select ivars in my .h file.
  • I load them into Accessorizer with Control-;, which I have mapped to the "Declaration" Service. This means not only does Accessorizer load the ivars into its internal buffer, it prefills the Cocoa clipboard with @property statements.
  • I use regular Command-V to paste the @property statements where I want them.
  • I navigate to the point in my .m file where I want @synthesize statements.
  • I use one keyboard shortcut to pull down the Action Menu and another to select "Implementation", which pastes the corresponding @synthesize statements.
  • If there are other things I want to paste, I get them from the Action Menu, again using keyboard shortcuts.

The Action Menu is brilliant because once I've learned the keyboard shortcut to pull it down, all of its options are available via ordinary keystrokes — "2" for "Implementation", "4" for "Dealloc", etc. The menu has captured keyboard focus, so I don't have to worry about conflicts with the million key bindings in Xcode 3 or the billion in Xcode 4. This is well worth the slight cost in having to use two keystrokes instead of one. I'd go so far as to say the extra keystroke is a feature, not a cost.

The one shortcoming of the Action Menu is the hotkey to open it: Shift-Control-Command-0. It requires a lot of fingers, is hard to remember, and isn't configurable. If you have a utility like Keyboard Maestro or Butler, you can specify some other keystroke as a macro for Shift-Control-Command-0. I use Control-'. [EDIT: I added a screenshot of the Action Menu.]

Customizing

I should mention that it's not only the new features in Accessorizer that make 2.9.2 a breakthrough version for me. It also took some work to figure out how I want to use it and what to ignore. For example, I ignore all the Services it offers except "Declaration":

from System Preferences

As far as I am concerned, the other Services are a distraction. All I want is one keyboard shortcut to copy ivars into Accessorizer, and "Declaration" makes the most sense because @property statements are what I'm most likely to want next. From that point on, I go to the Action Menu to do my "variations on Paste".

(As you can imagine if you've tried Xcode 4, Kevin had a hard time finding a keystroke that wasn't taken. Fortunately, I don't mind stealing a keystroke back from Xcode — in this case Control-;, which would normally be mapped to "Check Spelling". It's very easy for me to hit, especially with the Caps Lock key mapped to Control, and it's easy to remember Control-' for the Action Menu since the apostrophe is right next to the semicolon.)

I also ignore most of Accessorizer's features, for now. Within its main window, with its massive array of configuration options, the two tabs I care about most are "General" and "Coding Style". Within the "General" tab all I care about is turning off the Action Panel and turning on the Action Menu:

Action Menu settings

Within the "Coding Style" tab I mostly care about the "ivar Prefix" box and the "Formatting" box. The rest I can get to over time, as I surely will.

Idea: suppress automatic window.print()

You know how news sites often have a "print" version of each article? It's typically a slightly modified URL that brings up the whole article in a form suitable for printing — on a single page, usually without ads, and sometimes without images. I don't have an example handy but I often get such links in my RSS feeds.

I appreciate the nicer looking single page, but some of these sites automatically bring up the print dialog, presumably as a convenience to save me a click. I almost never want to see the print dialog, so I'd like to have a Safari extension that suppresses this behavior.

I'll have to look in my RSS archives later for an example that I can dissect. Offhand I'd guess they're doing something like onLoad="window.print();". Maybe I can write the Safari extension myself.

Great bookmarklet for searching the docs

[UPDATE: I should have posted the bookmarklets themselves for convenience. This one searches the Mac docs: Search Mac. This one searches the iOS docs: Search iOS. Drag these to your bookmarks bar. If you use Safari, you can use Command-(number) for quick access.]

Peter Hosey posted this tip for tweaking Chrome or OmniWeb to easily search the Apple documentation. In the comments, Erik provides a great bookmarklet for doing the same in any browser.

You might guess Peter is doing something obvious like Googling with site:developer.apple.com. But actually he uses Apple's own search, the same as if you went here or here and used the top right search field (not the one farther down). Apple revamped their online doc search a while back to return much nicer and more useful results, as you can see from this screen shot on Peter's article:

Previously I was using Sal Conigliaro's ADC Search Safari extension to perform this search. Sal mentioned ADC Search in response to my earlier post on finding sample code. It adds a search bar that does the same Apple search, and also displays convenient links to key points in the Apple documentation. I added a keyboard shortcut for the menu item that shows and hides the search bar, so it doesn't always have to take up space in the Safari window.

My only nitpick with ADC Search is that I have to click on the search field to give it keyboard focus. (I just sent Sal an email about this; I really should have done so earlier.) Conveniently, in comment #4 on Peter's article, Erik (with some tweaking from Peter) provides a bookmarklet that does not have this drawback because it brings up a search field that already has keyboard focus. Erik actually provides two bookmarklets, one for Mac and one for iOS. I've added them to the beginning of my Safari bookmarks bar and now I can get to them with Command-1 and Command-2.

As I'm typing this I discovered a nitpick with the bookmarklet, which is that if I hit Escape it doesn't cancel the search, but rather does a search for "null". I'm about to mention this in comments on Peter's article; I'm sure it's easy to fix. [UPDATE: Peter has fixed the bug in the bookmarklet. If you grabbed it before, go and grab it again. Also, note that if your search results look like one long list instead of four columns like in the screenshot above, you just need to select the column mode from the buttons on the left just above the search results.]