Firstly, nothing is ever good enough to evade critique. In fact the best things, the things we think are the closest to perfect often deserve and benefit from the strongest analysis. No computer will ever be fast enough, no program well designed enough, no device ever shaped well enough to not warrant a detailed look. This critique is often a sign of respect and affection for something. Often I had a higher degree of appreciation for the things in my life discussed on the show after hearing John take them apart and describe how they could be better.
Thursday, December 27, 2012
Wednesday, December 26, 2012
So “why” exactly do we study deterministic and non-deterministic finite automata (DFA/NFAs)?
In this article we further develop Piponi’s approach, which employs a number of beautiful algorithmic techniques from the world of functional programming, to build a Java library for incremental regular expression matching. This is also an interesting investigation into how the functional approach blends together with an imperative language.
“Incremental” means “match result is efficiently maintained under certain operations”, where the operations include concatenating two strings and splitting a string in part around an index. Obviously, these two operations form a basis for all kinds of rearrangements, such as inserting or deleting a word from the middle of a string, or appending characters to its back or front, etc.
Monday, December 24, 2012
x86 shipments dropped by 9% in Q3 2012. Furthermore, the expected surge in PC sales (and x86 shipments) in Q4 due to the release of Windows 8 has failed to materialize. NPD data indicates that Windows PCs sales in U.S. retail stores fell a staggering 21% in the four-week period from October 21 to November 17, compared to the same period the previous year. In short, there is now falling demand for x86 processors. Computer buyers are shifting their spending from PCs to next generation computing devices, including smartphones and tablets.
It’s interesting to consider that Intel’s problem may be more with its business model than its technology. I think they’ll be able to make processors that are competitive in terms of performance and power, but what about in terms of dollars?
Meanwhile, Matt Mastracci has an interesting idea about how Apple might use ARM chips in Macs:
There is a fair bit of space on inside of a MacBook compared to an iPad or iPhone. Apple would use some of this space to drop one of the A5 chips on the motherboard next to the Intel chip, effectively [building] themselves a hybrid ARM/x64 system.
In other words, ARM can’t replace x86 on the desktop because it’s far too slow for certain tasks, particularly at running existing x86 software in emulation. But what if you could have an x86 that’s powered down most of the time? You could have a lot of battery life without sacrificing performance when the Mac is plugged in.
Since reading online tales of some of the horrible things that crackers have been able to do to get to people's account information, I thought that this was a fascinating set of guidelines on building a database of users and passwords the right way.
The original article is worth a read, especially if you are working on any database of users, but it's a long read. Here is my brief summary for your convenience[…]
The Fourier Transform changes our perspective from consumer to producer, turning “What did I see” into “How was it made?”.
In other words: given a smoothie, let’s find the recipe.
I’ve enjoyed his Better Explained articles. Even when the explanation isn’t necessarily any better, it’s nice to look at the concepts in different ways.
I thought it would be fun to gather a bunch of predictions if anyone is willing. […] Keep in mind that programming in 2012 mostly resembles programming in 2004, so could we even expect any significant changes 8 years from now in the programmer experience? Consider the entire programming stack of language, environment, process, libraries, search technology, and so on.
Steven Fisher proposes a new Objective-C property attribute:
mainthreadonlywould be like
nonatomic. Compared to
nonatomic, it also warns that the property can only be set from the main thread.
@synthesizewould generate a setter that is not only
nonatomic, but generates an exception if called from a thread other than the main thread.
Sounds good to me, although I see no reason why this sort of annotation should be limited to properties. Some other methods also must be called from the main thread.
Like many pointed out when the iPad came along, the iOS UI conventions need to be re-thought to stop using actionable items on the opposite ends of where your hands grip the device, period.
And he misses Android’s task switching, notifications, and intents:
I can probably live with their not exposing the filesystem if they fix iCloud and local storage to the point where any app can see each other’s (compatible) data, but effortless text input is a major aspect of the user experience that they’re simply not addressing.
Thus, if you are an emacs head and you commonly hit ctrl-e<return> to start a new line of code and you happen to hold down the return key just a tad too long, it causes the error shown (or a variant depending on where the insert happens).
Why does Xcode even have this default key binding?
Sunday, December 23, 2012
Of even more significance is the fact that the glyphs included in the font are Unicode encoded. In an effort initiated by Google and with significant help from Apple and Microsoft, 722 Emoji symbols were included in the recently published Unicode 6.0 standard, putting Emoji on par with the Latin alphabet and other writing systems encoded in Unicode. This means messages and documents containing Emoji are fully searchable and indexable, and Unicode Emoji fonts are included with Windows Phone 7.5 and the Windows 8 Developer Preview.
Friday, December 21, 2012
Clang now supports documentation comments written in a Doxygen-like syntax. Clang parses the comments and can detect syntactic and semantic errors in comments. These warnings are off by default. Pass -Wdocumentation flag to enable warnings about documentation comments.
What we had been doing was essentially doubling any single-pixel lines from the source image. So if we had an icon with a rectangle bordered by a single pixel, the double-size icon would have a retina bordered by a two-pixel-wide line.
So instead, we had the icons re-done so that the lines were a single pixel in the retina version. But to compensate for the fact that this might not be as bold as the original, we made the line a bit darker (or more opaque, which usually ends up being the same thing).
Automatic document syncing is almost here! We call it “OmniPresence”: your documents, synced everywhere you want them to be.
We’ve designed OmniPresence around open web protocols, so you’re welcome to use our free Omni Sync Server or to host your own cloud server. We think that the option to host your own cloud is important—not just because of concerns with respect to privacy and security (though that’s key for many businesses), but because it means you can keep that cloud running as long as you want to keep using it. As we saw with MobileMe shutting down earlier this year, individual cloud services can easily disappear as business models change. Building a solution around open standards means that our customers have a choice of hosting providers rather than being tied to a single ephemeral cloud solution.
Sounds great. They’re even going to publish some of their source code for OmniPresence so that other developers can add it to their apps. Not mentioned: iCloud.
And regarding Mac App Store upgrades:
As always, we plan to offer discounted upgrade pricing on our own online store, but unfortunately we don’t have that flexibility in the Mac App Store. We’ve decided to treat the Mac App Store the same way as we treat retail stores: it’s a great way to discover our software, and can give you confidence that it’s been vetted by a third party. And, just as you wouldn’t get a discount from a retail store if you purchase OmniGraffle 5 while owning OmniGraffle 4, you won’t get a discount if you purchase OmniFocus 2 from the Mac App Store. But we’re in the process of updating our store so that you’ll be able to register your Mac App Store apps to get a discounted upgrade price when you buy an update directly from us.
This is the approach that I’ve been planning to take as well.
Thursday, December 20, 2012
Today, we’re introducing the ability to download your Twitter archive, so you’ll get all your Tweets (including Retweets) going back to the beginning. Once you have your Twitter archive, you can view your Tweets by month, or search your archive to find Tweets with certain words, phrases, hashtags or @usernames.
There’s supposed to be a “Request your archive” button at the bottom of the Settings page, but I don’t see it in my account. This feature hasn’t been rolled out to all users yet. I’ve been maintaining a local archive of my tweets using TweetNest.
During the Summer of ’02, Steve Jobs and the Apple management team realized that we were going to pull this off — we could actually ship a Web browser by the end of the year. And at one particularly good Human Interface design session, discussion turned to what we were going to call this—thing.
Apps that display Apps other than your own for purchase or promotion in a manner similar to or confusing with the App Store will be rejected
Tuesday, December 18, 2012
At first glance, Sandvox seems a pretty good fit for the sandbox. It’s document-based and doesn’t have too deep a hook into the OS’s configuration. But as ever in programming, we did run into a few of those pesky edge cases.
A lot of the work involved sandboxing the iMedia framework, a cool open-source attempt to provide the iLife SDK that Apple never did. However, once Karelia developers found the media files they ran into problems storing references to them:
There is a nasty bug with security-scoped bookmarks though. Generating one requires write access to the target file (rdar://problem/11929296). For files from the media browser, for example, Sandvox only has read access, and so creating the bookmark fails.
This bug has been known for a really long time. It’s a shame that Apple hasn’t fixed it yet.
So what does the future hold for Perl? Well I don’t have a crystal ball but I cannot see the language fading from usage in the next quarter century, the truth of the matter is that even though there are languages that can do some of the things that Perl does, some of them do some things better, others do things Perl wasn’t designed for, there is no language that has been designed to do the things that Perl is very good at doing. No language in the current scripting languages seems to have the flexibility, maturity and extensibility of Perl. The main power of Perl has always been its ability to quickly adapt, and be adapted, to suit purposes.
Monday, December 17, 2012
It’s often said that “time is money,” but nothing could be more misleading. Time is most definitely not money. Some of us have much more of the latter than others, but everyone has the same 24 hours in their day. Therefore, I value my time, and I protect it. When I do decide to “waste” time, I try very hard to do so on my terms. Here, again, Louisville helps me.
The scary part though, is that one recurrent theme I see in nearly every single “how I write on the iPad” story is Dropbox. It’s the linchpin in the workflow. Scary, because Dropbox is outside Apple’s control. Scary, because if not for Dropbox, many of these people would not be using their iPads as much as they are. Scary, because Apple’s iCloud falls short of Dropbox.
He says that Apple should buy Dropbox. This might be a good move for Apple, but I doubt it would be good for Dropbox users.
James at Dr. Drang’s site:
To be honest, even if Apple Maps used the same data as Google’s, I wouldn’t use it right now.
How is showing almost all road sizes in the same colour (white) a good idea? Why is peppering the map with big circular points of interest that give a local sandwich shop the same visual priority as a tube station a good idea?
I find that Apple Maps alternately fills the screen with lots of not very important information and (in more rural areas) shows barely anything, omitting important details until I zoom in so far that I can no longer see the big picture.
The preprocessor splits macro arguments on commas. […] These macros conceptually take a single argument, but they’re declared to take variable arguments to avoid this problem. By taking
__VA_ARGS__to refer to “the argument”, multiple “arguments” with commas are reproduced in the macro’s output. You can take the same approach to make your own macros safe from this problem, although it only works on the last argument of a multi-argument macro.
The frustration is immense when you’re dealing with a spotty Wi-Fi connection—especially if that connection is in your own home or business. NetSpot, a software utility for analyzing and troubleshooting Wi-Fi networks, is an essential tool. It determines the rough location of your base stations, and maps out the strong and weak points of Wi-Fi coverage in a building. You can then use the information to adjust your base stations accordingly, or to figure out where to put Wi-Fi expanders. Even though NetSpot is a networking utility, it uses friendly visual cues to help you understand the collected data.
Sunday, December 16, 2012
In order to get all of iTunes’ features to fit into this tiny bar, Apple had to completely overload all of the UI elements inside that bar. Its very difficult to form a correct mental model of an application that exposes the same kind of feature in very different ways (there are at least four different ways of jumping between different sections in iTunes), and uses the same kind of ui element for very different features (the exact same tabs, sitting side-by-side, are used to change how the current screen is shown, and to jump to an entirely different screen).
My experience is that users don’t like to see too many options at once, but that more items on screen where one is clearly the one you want is preferable to having to go through different modes to find the desired item that’s hidden.
Thursday, December 13, 2012
One more thing that Google Maps on Android has that its iOS counterpart lacks is Wikipedia integration. On Android, users can choose to add a layer over the top of the map they’re looking at that provides Wikipedia entries for locations such as businesses, public parks and historical sites. It’s not quite a killer feature, but it’s cool, it’s helpful, and if you’re a tourist or just someone who wants to get to know their hometown, it’s a lot of fun. There’s nothing quite like it on iOS, or any other Android mapping app.
We’ve lost key features that we used to rely on, and worse, we’ve abandoned core values that used to be fundamental to the web world. To the credit of today’s social networks, they’ve brought in hundreds of millions of new participants to these networks, and they’ve certainly made a small number of people rich.
But they haven’t shown the web itself the respect and care it deserves, as a medium which has enabled them to succeed. And they’ve now narrowed the possibilities of the web for an entire generation of users who don’t realize how much more innovative and meaningful their experience could be.
In Siri, you can’t launch arbitrary URL schemes, but you can trick the assistant into displaying them. Specifically, you can assign URLs to contacts and display their contact card, showing a tappable URL.
Clever. He also gives an example of redirecting a URL with parameters through Launch Center Pro to Google Maps.
Let’s gloss over, for a moment, the fact that simply setting this property triggers authentication. There are three things that could happen as a result of calling this method: two are the related ideas that authentication could succeed or fail (related, but diametrically opposed). The third is that the API needs some user input, so wants the app to present a view controller for data entry. Three things, one entry point. Which do we need to handle on this run? We’re not told; we have to ask. This is the antithesis of accepted object-oriented practice.
In this particular case, the behaviour required on event-handling is rich enough that a delegate protocol defining multiple methods would be a good way to handle the interaction.
Blocks are great, but I agree that Apple’s APIs don’t always use them properly.
MailMate 1.5.1 adds support for tags:
The implementation of tags is based on IMAP keywords which means that they are easily and efficiently synchronized with an IMAP server (some servers may have limited support). The user interface is an unobtrusive token based text field shown when hitting a simple shortcut. It is very similar to the recipient address fields of the composer including automatic completion of tag names. It is easy to create new tags and a new preferences pane allows you to review and edit existing tags and their IMAP keyword equivalents. Read more about tags in the manual.
Google Maps for iPhone is now available, along with an SDK for iOS and a URL scheme. The map data is top notch, and I don’t understand the reviews stating that Apple’s rendering is better. In my view, Google’s maps are so much easier on the eyes, and with so much more information, that they totally outclass Apple’s offering. It’s like looking at a real map vs. a Fisher-Price one. Plus, of course, there are Street View and transit info.
The iOS 5 Maps app, though using Google’s data, was designed by Apple. I’m not a fan of Google’s Mac app interfaces, so I was a bit worried about what it would come up with for its app. It’s actually fine, though, and in some ways better than either of the Apple’s built-in Maps apps.
There’s one giant flaw, though: it doesn’t integrate with the iPhone’s Contacts database—or even with your Google contacts. Get ready for lots of Copy and Paste. (When traveling, I use a group in Contacts on the Mac to store all the locations that I plan to visit. Since tapping an address in Contacts on the phone will open Apple’s Maps app, I really need to be able to access the contacts list from within Google Maps.)
There’s also no iPad version, though I assume one is in the works.
Wednesday, December 12, 2012
In the year since, Google+ has been derided as a “virtual ghost town” and a “complete failure” unpopular even with Google employees. All of which has heightened the resentment shared by Reader fanatics. Today, they are a population dispossessed. Many have disappeared off the grid, while others struggle to rebuild communities that were, with a few keystrokes, deleted. All of them — the dental student in San Antonio, the academic librarian in Boston, the game developer in San Francisco — yearn for the scroll-tracked Shangri-La that was.
They wonder why Google deep-sixed superlative features, years in the making, for an upstart social network, a Facebook clone. In the year past, the same question has been framed and phrased in a thousand different ways — why force an unproven social network on users at the expense of an organic one?
Your site’s “Local Root” will have to be reset. You’ll be prompted to do this the first time you try to connect. […] It will no longer be possible to “Go To” any local path by typing it in. “Go To Folder” on a Local path will now bring down a traditional “Choose” panel. […] If you click on a folder outside of your Local Root, you have to manually choose the folder via Choose panel.
This list of changes due to sandboxing sounds like pretty much the best that one could hope for. Panic is lucky to (apparently) not be running into any serious sandbox bugs or limitations for Coda. (My guess is that Transmit will be a different story.) It’s also worth noting that we are saying this now, more than a year after the original sandboxing deadline. In November 2011, I don’t think it would have been possible to sandbox Coda without it constantly bringing up “Choose” dialogs.
What makes it so surprising that AppleScript survived and remains a fully-supported-by-Apple technology today (including in OS X Mountain Lion) is that it was never loved by anyone. It was a fine theory and noble experiment, but it turns out that an English-like programming language didn’t really enable a large number of users to become programmers. And conversely, AppleScript’s English-like syntax often made (and to this day continues to make) things more difficult and confusing for scripters, not less.
It’s nice to see that Flickr’s app is still under development. However, the update seems more geared towards taking and posting photos. I do all my posting from Aperture, so the Flickr app doesn’t offer much more for way that I currently use Flickr on iOS, which is as a viewer. It still runs at iPhone size on an iPad. It doesn’t offer caching or pre-loading, so I can’t use it to show people my photos without waiting a long time for them to load. And it doesn’t support AirPlay, so sending the photos to an Apple TV shows them at tiny resolution, and with all of the app’s chrome. Fortunately, FlickStackr is pretty good.
Tuesday, December 11, 2012
So, the cloud icon is simply an indicator that at least one of the items in your library is available in Apple’s cloud infrastructure somewhere. Whether by purchase or by ‘match’, it’s not just on your physical hard disk.
ExcelCompare is a command-line tool (which requires Java) that can compare two Excel spreadsheets and output a list of differences in plain text (via Clark Goble). It seems crazy to me Excel, or for that matter Numbers, doesn’t have a diff feature built-in. Word, at least, has Tools ‣ Track Changes ‣ Compare Documents….
Users complaining publicly instead of being constructive and reporting the problem to the manufacturer certainly isn’t new, but in the age of web services its more self-defeating than ever. Apple can fix the problem in one place and its fixed for every user, surely the Victorian police have a better way of getting in touch with Apple than through the media?
As a developer, I sympathize with the desire to have bugs reported via the proper channels. But people will only do that if it seems like someone is really listening. Apple says, “If you run to the press and trash us, it never helps,” and yet in the realms of app review and security issues it seems like it’s the only thing that does. I reported Maps bugs the proper way months ago, which still aren’t fixed, and yet the Mildura bug (which, granted, is more important) already is.
I think it’s quite insane that my whole Apple account only has one password. I need the same password for a whole range of actions. I need to type it to ‘buy’ a free app, which has almost no consequences; I can always remove it. But with the same password I can also remotely erase my iPhone, iPad an Mac. So I have no choice but making it a long, complex, strong password. Which stops me from getting free apps, as it’s a hassle to type on my iPhone.
I tend to note the app’s name in OmniFocus and buy it from the Mac.
iTunes 11 is a radical departure from previous versions, nothing illustrates this more than the new album display mode. The headlining feature of this display is the new view style that visually matches the track listing to the album’s cover art. The result is an attractive display of textual information that seamlessly integrates with the album’s artwork.
After using iTunes for a day I wondered just how hard it would be to mimic this functionality — use a source image to create a themed image/text display.
I like this feature in iTunes 11, but I have it turned off because too often it chooses colors without enough contrast, making the text difficult to read.
We noticed right away that our font didn’t look right on Retina displays, and adjusted it until it looked and felt the same as on lower resolutions. However, grading alone is not enough—the iPhone, Mac and iPad have different canvas sizes and reading distances, which require a lot of alterations from spacing to line height to gutter sizes. I am currently discussing this in a series of articles I’m writing on the new challenges of typography in the age of responsive design.
Here’s his Bringing Responsiveness to Apps.
So the end result here is that if you need to remove the last path component of a URL and stand a chance of being passed in one ending in two or more slashes you’re kinda stuck.
I’ve always thought it a good idea to standardize paths and URLs, to get rid of any . or .. components. Otherwise, trying to get the filename or the container URL may give an unexpected result. But this example shows that sometimes even that isn’t enough.
NSURLs are better than
NSStrings, but in my view Cocoa still doesn’t handle file stuff properly.
A single parent at the time, Leitao began squirreling away money to buy shares of a company that, to many outsiders, including his own stockbroker, seemed to be circling the drain. “Right before Apple bought Next and announced that Steve Jobs was coming back, I got a call from my broker,” Leitao says. “He was trying to sell me on some other stocks, and I told him I wanted to stick with Apple. He got indignant and told me I needed to face the music and accept that the Apple story was over.”
Monday, December 10, 2012
Eric Knibbe has written a BBEdit codeless language module for reStructuredText. It seems to accurately find the functions (headings), comments, and hyperlinks. However, it suffers from the same problem I ran into when building my own CLM for reStructuredText: on certain files, it is incredibly slow, to the point of making typing unpleasant. This is probably due to pathological regular expression matching.
I ended up building my CLM to not look for functions at all. Instead, I use an attachment script on
documentWillSave to find the headings and create markers for them. On the plus side, this is much faster and allows me to indent the markers according to the document structure. Unfortunately, since BBEdit does not see the headings as actual functions, it does not allow me to fold them.
instancetypeis a contextual keyword that can be used as a result type to signal that a method returns a related result type.
instancetype, the compiler will correctly infer that the result of
+personWithName:is an instance of a
I think that technical people underestimate how useful regexps are for “normal” people, whether a receptionist labouriously copy-pasting all the surnames from a word-processor document into a spreadsheet, a school administrator trying to import an old set of school records into a new system, or a mechanic hunting through a parts list for specific numbers.
ARC variables are released as soon as the optimizer decides that they are no longer referenced, so the compiler is free to release
uicolorafter fetching the
CGColor. Current compiler implementations do seem to wait until the end of scope, but that’s not guaranteed.
The result is that it’s trickier to use CF and CG objects with ARC than with manual reference counting. It seems to me that Apple could fix this by marking the method as returning an interior pointer, as it does in some other APIs. Drance disagrees, but I’m not sure what makes this case more complicated.
I bought a retina-MBP, it had serious and annoying ghosting (a common problem). I asked apple to repair it (I have Apple care), they administered a spurious test (my opinion, see results below), said it was within their tolerances and refused. I, rather disappointed, complained at every possible level to no avail.
This is a real problem with my laptop that affects my use of the device every day. I am now having to pay myself to have the screen ‘replaced’—not ‘repaired’ as Apple's representatives are keen to point out.
See also my previous post on Retina MacBook Pro Burn-In.
Of those essentials, one thing we learn is that you don’t need to put boxes around and lines under everything on the page. As an example, the book suggests printing an Excel spreadsheet with and without the grid-lines enabled. The difference in readability is striking!
I second his recommendation for The Non-Designer’s Design Book.
When the fraud police come knocking down your door, however, it’s a different matter. Your fears, perfectly manageable when limited to your own self-critique and determination, become altogether something else when someone calls you on them. I can say honestly that if a member of the Incomparable’s audience ever insinuated that I was some sort of “fake geek girl,” I’d raise hell on Twitter—but inside? I don’t know if I’d ever be able to do another episode of the podcast again. That’s the kind of insult that turns what was an enjoyable hobby into a miserable experience.
Twitterrific 5 has an entirely new design. I like the minimalism and how fast the app feels. I’m not really a fan of the new tweet layout, which puts the avatar, the full name, and the username all above the tweet text itself. This seems to take up a lot of space for no good reason. Despite getting rid of a lot of chrome, Twitterrific 5 shows fewer tweets on screen at once. It feels like someone shrunk my iPhone’s screen.
Friday, December 7, 2012
This is an excellent update to my text editor of choice for nearly 20 years. Since the public beta, there have been more improvements, such as holding the Option key in “Open File By Name” to open the file in another application, better handling of smart quotes in code files, and an expanded Counterparts menu that makes it easy to view adjacent files.
It’s been five years since our first prototype was saved as dropbox.py, and Guido and the Python community have been crucial in helping us solve interesting challenges for more than 100 million people.
It’s interesting that he’s leaving Google.
The problem with iOS’s solution is that developers can’t expect users to know how to go back to the previous app. As a result, iOS apps almost never send you to other apps. This has a number of negative effects.
A list management software bug exists in the Time Machine volume list— when a volume is unmounted, the exclude list is corrupted, dragging some (possibly mission critical) volumes into the exclude list.
This bug is extant as of early December 2012 in OS X 10.8.2 Mountain Lion (and almost certainly on Lion as well). A bug has been filed at Apple.
In the past few years, quietly, almost invisibly, Apple has transformed its Objective-C language into the best language available. I have been working with Objective-C since the release of the iPhone App Store in 2008. In that time Objective-C has evolved from a clunky, boilerplate-heavy language, into a tight, efficient joy.
There are just the small issues of Web libraries and deployment.
Now Kevin goes on to say what is no doubt the most controversial thing in his entire post: “Xcode is an excellent IDE, with tolerably good git support.”
Update (2012-12-13): Graham Lee:
There are only two problems with this argument: it’s flawed, and the precondition probably won’t be met. I’m sure there is an opportunity for server-side programming with Objective-C, but it won’t be met by Apple.
With the arrival of iTunes 11, classical music fans – and anyone with a large music library – have lamented the removal of certain features and views that help organize large amounts of music. I touched on some of these in my extensive review of iTunes 11 for Macworld, and in my discussion of iTunes 11 on the Macworld podcast. But I would like to summarize here the problems that iTunes 11 has brought specifically to classical music listeners.
I like a lot of the changes in iTunes 11, but there’s no doubt that there are also some big regressions. And despite the “little extra time to get it right,” it doesn’t feel as though it was thoroughly tested. For example, the new “Use custom colors for open albums, movies, etc.” feature produces illegible text for many albums.
Sunday, December 2, 2012
Dash is an excellent viewer for Mac OS X developer documentation (via Matt Gemmell). The searching and browsing features are great, and it’s nice to have the reference information in an application separate from Xcode.
It’s well worth the $9.99 price in the Mac App Store, but strangely the actual app is free and there’s an In-App Purchase for the “Full version”:
Dash is not free, you will have to purchase Dash using an In-App purchase. Dash is free to download so that you can test Dash out as much as you want, in order to determine if it’s the right tool for you.
If you haven’t purchased, it adds a delay and nag screen when you try to search. I’ve not seen other demo/trial apps in the Mac App Store, probably because the guidelines clearly say:
2.6 Apps that are “beta,” “demo,” “trial,” or “test” versions will be rejected