# Archive for July2011

Friday, July 29, 2011

# FastScripts vs. the Mac App Store

This script is terrible to start with, but starting in OS X Lion, it simply doesn’t work. It fails with cryptic errors, and FastScripts faithfully reports them. Apple is rejecting FastScripts for the behavior of a faulty script that is bundled with OS X Lion.

FastScripts is one of my favorite utilities. Hopefully, the App Store version’s functionality will not be significantly curtailed by Apple’s upcoming application sandbox requirements. Starting in November, applications will only be able to send Apple events if they apply for a temporary exception on a per-target-application basis. FastScripts’ job, of course, is to send Apple events to any application I might have installed.

Tuesday, July 26, 2011

# Kobo App Update

The store was removed because Apple rejected any updates which included it, period. They also rejected any updates which stated that Apple required its removal, or indeed any mention of ‘compliance with App Store guidelines’. It was further rejected for the cardinal sin of allowing users to create a Kobo account within the app. Then it was rejected for providing a link to let users create an account outside the app. Then it was rejected for simply mentioning that it was possible to sign up, with no direction on where or how one could do that. Then it was rejected for making any mention of the Kobo website. Then for any mention of ‘our website’ at all, in any language. We additionally cannot make any assertions that Kobo provides content for sale, however obliquely.

Needless to say, it’s now raking in the 1-star reviews.

Monday, July 25, 2011

# Kindle App Update

We wanted to let you know that we’ve updated our Kindle app for iPad, iPhone, and iPod touch. The big change is that you can now use the Kindle app to read over 100 Kindle newspapers and magazines including the Economist, as well as share favorite passages from your reading via Facebook and Twitter. In order to comply with recent policy changes by Apple, we’ve also removed the “Kindle Store” link from within the app that opened Safari and took you to the Kindle Store.

Two steps forward, one step back.

Update (2011-08-01): Alas, The New Yorker is not available in the iOS Kindle app.

# The Xcode 4.1 Review

One of the big complaints with Xcode 4.0 was stability. We’d long been spoiled by the comparative stability of Xcode 3.2, so to go back to pre-3.2 levels of stability was incredibly frustrating. This new version feels a lot more stable. Assertion failures are a rarity, rather than part of the daily workflow as was the case in 4.0.

Xcode 3.2 was perhaps the only version of Apple’s IDE that’s ever been as stable for me as their non-developer software. Hopefully they can get that back with 4.2.

Saturday, July 23, 2011

# Picking Off iCal’s Paper Bits

It’s especially grating that Apple’s UI designers have become so divergent in the approach discussed in the article: consider that, while the “Base Window” of apps like iCal have become more exaggerated and colorful than necessary, standard elements such as toolbars have gone so far in the other direction (bland) that it’s become an obstacle to use.

For example, all toolbar icons are now small, flat, medium-light-gray on medium-dark-gray buttons with actual button borders and no text labels. So what was once a colorful, descriptive, large action button is now a tiny incomprehensible symbol.

Indeed, Apple does not seem to be “spending” color wisely in Lion. They’ve moved it from areas where it can help differentiate to areas where it’s just distracting chrome.

# Preview Regressions in Lion

1. Some applications I want to remember which documents were open when I quit, but never Preview. To prevent it from opening unwanted documents at launch, you can enter this command in Terminal:

defaults write com.apple.Preview NSQuitAlwaysKeepsWindows -bool false

Another good candidate for this treatment is:

defaults write com.apple.QuickTimePlayerX NSQuitAlwaysKeepsWindows -bool false
2. Preview opens every PDF in “Continuous Scroll” rather than “Single Page” mode. It will remember the change for a given document, but there seems to be no way to change the default.

3. The “Move to Trash” feature, which I use all the time, no longer works when only a single document is open. Update (2011-08-10): And, though it does work when there are multiple documents, it messes up the order of the remaining ones.

4. When trying to work around this, I noticed that it’s no longer possible to make Preview AppleScriptable. Preview has, inexplicably, never been scriptable. However, from 10.4–10.6 it was possible to enable the default Cocoa scripting support via these Terminal commands:

sudo defaults write /Applications/Preview.app/Contents/Info NSAppleScriptEnabled -bool YES
sudo chmod a+r /Applications/Preview.app/Contents/Info.plist

This was sufficient to be able to get at the file of the current document to delete it, change its Finder label, import it into EagleFiler, etc. Under 10.7, modifying the Info.plist file breaks the application’s code signature. I would expect this to cause a harmless warning message in the Console, but it actually causes Preview to crash.

Update (2011-07-26): See these instructions.

5. Not exactly a regression, but the swiping gestures for changing pages now seem backwards compared with the rest of the system. Swiping left takes you to the previous page in Preview (or Safari), but it scrolls you to the right and moves you to the next space or full screen application.

Friday, July 22, 2011

# Dock Indicator Lights

Nat!:

Actually as it turns out, I am really using the indicator for the information “is a window of that app open ?” and I am doing this consistently. I have a pile of partially obscured windows layered on top of it other, where I basically know where what could be where approximately (spatial memory). As an example my Address Book is usually somewhere in the top left corner.

In practice, with an i7 and the maximum 8 GB of RAM, it does help for me to quit applications—and even reboot from time to time. Much of the memory hogging seems to be due to WebKit, though, so perhaps the new multi-process model in Lion will help. As far as auto-quitting and re-opening, it seems unlikely that Lion will have a better idea of which applications I would want quit than I do, and I worry that I will lose information or state, e.g. from Web pages that get reloaded.

# Safari 5.1 and MathML

The easiest way to compare Safari’s MathML rendering with other ways of viewing math is to go to this page set up by Peter Luschny. He’s created three pages with the same content: one that uses images to display equations (which we won’t concern ourselves with), one that uses MathJax (which is what I use for equations in my posts), and one that uses MathML.

It’s great that this has been added to Safari, although currently the typography is not very good. I’m not really sure what to make of MathML. There needs to be a way to do math in the browser without resorting to images or JavaScript. But the syntax for MathML is so unwieldy compared with LaTeX.

Thursday, July 21, 2011

# Disabling Safari 5.1’s PDF Viewer

These utilities still work, but obviously the underlying hidden preference that they give access to no longer works — either it no longer exists or it is ignored by Safari 5.1. And based on this post by Joel Spolsky at AskDifferent, I am not the only one who is encountering this issue and is at a loss as to how to work around it and restore our preferred behaviour.

I’m going to miss this, too.

Update (2012-03-17): It’s back in Safari 5.1.4.

# Save Sheet Shortcuts in Lion

It would be unacceptable to invite the inevitable physical slips this would cause, so “Don’t Save” is now triggered by Command-Backspace (which is an excellent shortcut, since not saving means your document’s contents will be deleted, in a sense, and hitting Command-Backspace is slightly more difficult than hitting Command-D).

# Objective-C Tagged Pointers in Lion

Bavarious notes that Lion can represent some numbers—and, potentially, dates and managed objects(!)—as immediates, without allocating any memory. This is a really old trick, which I guess they couldn’t do until direct isa access had been phased out, but it’s certainly welcome for those of us who create lots of little objects.

Wednesday, July 20, 2011

# Mac OS X 10.7 Lion

I’m not really that excited about Lion as a user, but there’s lots of great stuff in it for developers.

# Presumed Valid

What’s discouraging is that it’s clear, despite hopes to the contrary, that Apple has no philosophical problem with software patents whatsoever. Indeed, in the Lodsys case, it’s not trying to invalidate the junk patent; it’s asserting that Apple’s license of the patents covers its use by third parties. The instinct may well be in their corporate DNA (and that of other large tech companies) that patents are a critical strategic asset, something to be amassed and protected whenever possible. That MacroSolve could patent electronic form submission, in 2003, seems not to bother them. Patents are, apparently, too important to be doubted.

I, too, was disappointed in Tim Cook’s answer.

# Rapid DHCP

All too often, I’ll open the lid on my EeePC netbook, enter a Web address, and get the dreaded “This webpage is not available” message because the machine is still working on connecting to my Wi-Fi network. On some occasions, I have to twiddle my thumbs for as long as 10–15 seconds before the network is ready to be used. The frustrating thing is that I know it doesn’t have to be this way. I know this because I have a Mac. When I open the lid of my MacBook Pro, it connects to the network nearly instantaneously. In fact, no matter how fast I am, the network comes up before I can even try to load a Web page. My curiosity got the better of me, and I set out to investigate how Macs are able to connect to the network so quickly, and how the network connect time in other operating systems could be improved.

There’s also a discussion on Hacker News.

Tuesday, July 19, 2011

# BBEdit 10

BBEdit 10.0 adds a bunch of new features that you can also read about in the complete change list. Some of the highlights, for me:

• The long-beloved individual HTML tag editor dialogs are gone, replaced by a generic (but context- and DTD-aware) table-like interface in a popover. My first thought when beta testing this was that someone was modernizing the code for an eventual 64-bit version and didn’t want to re-create the nibs for all those dialogs. Whatever the inspiration, the new interface has really grown on me. At first it seemed too minimalist and simple, but now I think it’s so clean that it’s brilliant. It’s also very keyboard-friendly.
• I’m not exactly sure why, but the new sidebar-based multi-document interface works much better for me than the previous drawer-based interface.
• The case transformation commands are now available as distinct menu items, which means I can give them their own keyboard shortcuts and avoid the clunky Change Case sheet.
• The Preferences window has been vastly simplified, and it’s much easier to configure menu keys.
• Unix filter scripts now operate on stdin and stdout rather than temporary files passed as arguments. This is simply the Right way, and it lets me more easily reuse my scripts in other contexts. Update (2011-08-11): I guess this was just wishful thinking.
• Unix filter scripts now appear in the main Text menu and can be assigned keyboard shortcuts in the normal manner.
• Viewing and editing (and multi-file search/replace!) inside ZIP files. Yes, I like to poke around in EPUB, iWork, and Microsoft Office documents.
• The HTML preview can now wrap the document in a template. I’d been doing this with MarsEdit for a long time, but its preview doesn’t update while editing with BBEdit. Now I can edit and preview in BBEdit, and save directly into MarsEdit. (For most non-blog HTML, I use a pre-processor that doesn’t fit in with BBEdit’s idea of preview templates.)

Some of my main missing features from BBEdit 9 still apply: no TextMate-style “Go to File” within a project, no Git support, underpowered codeless language modules, minimal Xcode integration. So I use Xcode for Objective-C and TextMate for editing reStructuredText (ATPM and my product manuals), but BBEdit for practically everything else.

On the business side, it’s interesting to note that Snow Leopard is now required. They shipped without waiting for Apple to approve it. The Mac App Store version is still missing the authenticated saves feature, but unlike with some developers, you cannot, apparently, purchase from Apple and then decide to use the direct-download version. The price has been drastically reduced. And as the Mac App Store doesn’t offer upgrade pricing, Bare Bones is offering free upgrades to everyone who purchased since the store opened in January and offering everyone else the upgrade price until October. Some longtime users seem upset to be treated to the same pricing as the newbies, but in the Mac App Store world I’m not really sure what the alternative was. And, anyway, it’s definitely worth the $40. Update: As of August 6, BBEdit 10 is still not available in the Mac App Store. Good thing they didn’t wait to release it. Update: BBEdit 10 became available in the Mac App Store on August 8. Monday, July 18, 2011 # Git Commit Generation Numbers There’s an interesting discussion of Linus Torvalds’ proposed patch to change Git’s commit object format (via Hacker News): And I have to say, with six years of git use, I think it’s not a coincidence that the notion of generation numbers has come up several times over the years: I think the lack of them is literally the only real design mistake we have. Now, if may turn out that we’d want to have some cache for generation numbers in commits that don’t have them, but I absolutely think that that should be a “add-on” rather than anything fundamental. For example, if we just merge the “add generation numbers to the commit object” logic first, then the “cache” case never really needs to care about us generating new commits. They simply won’t need the cache. # The Final Image Do you remember the final frames of your favorite movies? Check out this post from Mallory McInnis (via Jason Kottke). # The Smart Cover, a Few Months In I can’t think of many situations in which a Smart Cover provides enough protection to be worth carrying and using for people who care about the aesthetic condition of their iPad. I thought I’d be able to ignore my gadget-preservation instincts in this regard, since it’s “only the back”, but I can’t. It seems my original impression was mistaken. He switched to the WaterField Designs iPad Smart Case. WaterField is great. I use their Laptop SleeveCase and iPad Suede Jacket. (I was not as keen on their Kindle offerings, though, and went with the Timbuk2 Envelope Sleeve.) # Comparing iPhone Text Editors, v4 Since version 3 of my comparison, I’ve added two new apps. Both offer features similar to Notesy, which remains my choice. Notely adds some extra arrow-key buttons to the keyboard that make it easier to fix typos. It also has the first graphical Dropbox folder chooser that I’ve seen. WriteRoom has a minimalist interface that favors scrolling and pop-up menus over toolbars; I found that I prefer having the buttons more easily available. It also offers more control over line spacing. The feature sets of these apps seem to be converging, except that most still don’t help you find search results within a file or offer versions or line rearranging. Droptext 1.2.1 Elements 1.5.1 Locayta Notes 2.0.1 Nebulous Notes 4.3.1 Notely 1.3 Notesy 2.0.2 PlainText 1.4.1 Simplenote 3.1.4 (Premium) WriteRoom 3.0 Choose Folder on Dropbox Yes No No Yes1 Yes Yes Yes Yes2 Yes Nested Folders Yes Yes No Yes1 Yes Yes Yes No Yes Works Offline No Yes Yes Yes Yes Yes Yes Yes Yes Choose Font No (Helvetica) Yes Yes3 Yes Yes Yes4 No (Georgia) No (Helvetica) Yes Font Size No Yes Yes3 Yes Yes Yes4 No Yes Yes Font Color No Yes Yes3 Yes Yes Yes No No Yes Background Color No Yes No Yes Yes Yes No No Yes Multi-File Search No Yes Yes5 No Yes Yes9 Yes Yes Yes Search Results List No No Yes No No No No No No Jump Within File No No No No No No No Yes6 No LF Line Breaks Yes No Yes Yes Yes Yes Yes Yes Yes Sort by Name Yes Yes Yes Yes Yes Yes Yes Yes Yes Sort by Modified No Yes No No Yes Yes Yes No7 Yes Rearrange Lines No No No No No No No Yes No Versions No No No No No No No Yes8 No Price$1 $5 free$2 $2$5 ads or $5$20/year $5 1. Rather than syncing everything, Nebulous Notes makes you choose individual files as “auto-saves,” which is a drag. 2. Simplenote seems to be much slower than the other apps at picking up changes from Dropbox. It was often 5 minutes out-of-date, and sometimes hours or days. You can force it to sync, but to do that you have to go to the Simplenote Web site. 3. Locayta Notes is the only app I saw that lets you set font and color options per-file. 4. Notesy lets you set both a variable-width font and a fixed-width font, which is a good compromise between choosing just one and choosing per-file. 5. Locayta Notes does some sort of indexed/prefix search, coupled with auto-correct, which didn’t work well for me. Some words it didn’t find at all. When searching for “cat” it would find lots of useless matches of “at” but totally miss “wildcat”. 6. Simplenote’s results-jumping did not work for me with files containing basic Unicode characters such as é and . The tech support person was not able to tell me which subset of characters to avoid, so the only solution seems to be to stick with ASCII. 7. The option is there, but in my experience the modification dates shown in Simplenote, if I’m using Dropbox, have little relation to when I actually edited the files. The tech support person said this is not the normal behavior and is looking into the matter but has not yet found a solution for me. Even going by the displayed dates, the sorting is sometimes out of order. 8. Simplenote’s versions feature is like the one in Lion and works within the app—very cool. 9. Excellent options for searching by word (Boolean AND), phrase, or regular expression. You can also choose whether to search everything or just the filenames. Friday, July 15, 2011 # The iPhone’s Home Button It’s not clear to me why Apple does this at all. If I launch an app from the fifth home screen, is it highly likely that the next app I want to launch is also on that home screen? If I launch an app from inside a folder, is it highly likely that the next app I want to launch is also inside that folder? Probably not. So why not just send me to the first home screen when I hit home? That way, I always know where I end up when I hit «home». I would be fine with having the Home button always take you back to the first home screen. I’d rather remember the swipes to get to a particular app than have to always reorient myself after pressing Home. The folder modes especially seem to get in the way. # The Rise and Fall of the Independent Developer And, of course, only large companies and publishers can bear these costs. My fear is that It’s only a matter of time before developers find the risks and expenses prohibitive and retreat to the safety of a larger organization. We’ll be going back to square one. It should not be possible to patent basic ideas like cross-promotion links and collecting data via a form. Friday, July 8, 2011 # Quicken’s Compatibility With Lion You see, it’s not our fault. It’s that blasted Apple! They’re pulling Rosetta right out from under us, just like they did with the floppy drive! Nearly a decade just wasn’t enough time to get our software updated. So blame them! It’s really more like 5–6 years, but the point stands. Of course, Intuit is not the only company to replace an important work product with a new one that’s missing features and can’t read the old file format. For personal financial software, I recommend MoneyWell. For video, at least Apple is throwing Final Cut Pro 7 users a bone in the form of Lion compatibility. Wednesday, July 6, 2011 # Growl 1.3 Changes Growl will become an application. This fits into the [Mac App Store] rules more than anything else we’re doing. […] Anything which does not go into the Mac App Store will be retired. Via Jesper, who has two posts commenting on the changes: My fear is not so much that the S.S. App Store will be the only way that Mac software will be offered overnight, but that the App Store, by its existence, will force people into confining to new, artificially restrained definitions of what Mac software is. Monday, July 4, 2011 # Push, Dropbox, Async, and Indie Sockets What the heck can indie devs use as a persistent server connection, so that their syncing implementations can receive fast updates? I’m not going to host a server for this purpose-that really isn’t a core competency of mine, and I know it isn’t for many other indie devs either. And as a customer, I wouldn’t want to rely on a 3rd party server for this. […] I have one big unanswered question about iCloud. Are developers allowed to use it if their app is not sold via the App Store? I asked this to multiple people at WWDC, and got conflicting answers. My educated guess is “No,” but I’d be happy if someone could point me to documentation which confirms it either way. If the answer is indeed “No,” that would make dropping iDisk even more of a loss of functionality. I suppose that will just send more people to Dropbox. # Apple to Enforce iOS In-app Content Policy Last month, video-streaming provider Hulu updated its Hulu Plus iOS app, dropping a link that allowed users to visit the company’s website to sign up for a paid subscription. Others, such as Netflix, have exploited a loophole: The login screen for the video-streaming app tells users to “Visit netflix.com to sign up” but does not provide a tappable link. Via Jim Dovey, who doesn’t think untappable links will be allowed, either. # Obfuscated Tiny C Compiler (OTCC) My goal was to write the smallest C compiler which is able to compile itself. I choose a subset of C which was general enough to write a small C compiler. Then I extended the C subset until I reached the maximum size authorized by the contest: 2048 bytes of C source excluding the ';', '{', '}' and space characters. # LaunchBar 5.1 LaunchBar 5.1 adds some nice new features: Browsing & Search now works for all file types that can be converted into plain text (.txt, .rtf, .rtfd, .html, .h, .m, .doc, .webarchive, etc.) The Search File Contents action can now be triggered more conveniently with Command-F. Alternatively, it can still be triggered with Option-Space or Control-Space. Property List Browsing (Developers, you will love this!): Select a *.plist file and press Right Arrow to browse the plist hierarchy. Works also with a number of other filetypes such as .strings, .dict, .pbxproj or .ini and more. There’s also a new “Run Shell Command” action that avoids the clutter of opening a Terminal window, but unlike the Terminal commands in the File menu it does not receive the current file/folder as input. # iTunes Match Makes Unlocked Copies You’ll be able to upgrade all your ripped files that aren’t up to snuff — avoiding replacing, say, your lossless FLAC versions — with the best Apple and the labels have to offer, for what is essentially a one-time$25 fee. This is the right way to do it, and it’s an awfully nice gift for those of us, like yours truly, who ripped their CDs at lower quality many years ago.

It sure makes me happy to have bought CDs, rather than paying extra for DRM-encumbered 128-Kbps iTunes music, then 30 cents more per track to upgrade them to iTunes Plus.

Friday, July 1, 2011

# Dropbox Policy Changes

Today we revised our Terms of Service, Privacy Policy and Security Overview. We’re in the process of emailing every user to let you know about these changes. These updates are meant to make all our policies clearer and more transparent to you.

Update (2011-07-04): The changes are getting some backlash in the comments. Dave Winer cancelled his account, and some Slashdotters are also upset. Jeff Goldberg at AgileBits (formerly Agile Web Solutions), however, says that “There is nothing in these Dropbox Terms of Service that gives them the right to do anything with your data that you don’t ask them to do.”

Update (2011-07-05): Simon Bradshaw:

What I know has concerned some people though is the rider at the end of Dropbox’s clause about “You must ensure you have the rights you need to grant us that permission.” Does this mean that you can only store content on Dropbox if you either created it or have licensed it on terms that allow you to copy it?

Update (2011-07-07): Another revision to the terms of service uses more plain English.