Archive for July 2012
Tuesday, July 31, 2012 [Tweets] [Favorites]
This effectively means that, if you have a machine running Snow Leopard that can run Lion, but not Mountain Lion (and there are quite a few of those perfectly good Macs, including two 2006 Mac Pros in my own family), you can no longer purchase Lion from Apple.
At least not through the Mac App Store.
J.D. Hildebrand and Andrew Binstock (via Hacker News):
Burt is devoting significant resources to code quality this year. “We’ve sent multiple teams of five developers into the Coverity logs,” he says. “They track down the warnings and fix hundreds and hundreds of minor coding issues. We’re cleaning up little things that have been there forever. The goal is to ship a release with zero defects.” This isn’t just a matter of tools, Burt acknowledges. Team and management support are essential because they must remain committed to QA every day. “It doesn’t matter what tools you use,” Burt says. “If your team doesn’t support it, if they’re focused on adding features, you’re wasting your time. If you don’t want to use a tool like Coverity to track down defects, that’s fine—don’t use it. But if you say you want it, then you’ve got to commit. The payoff in code quality is tremendous.”
Multiple teams of five just to clean up code? That’s quite the contrast with Apple’s app teams.
self is explicitly referenced inside of the block.
self can also be referenced implicitly by accessing an instance variable. By default, blocks capture variables read-only, and objects are retained. Therefore
self is retained, and we’re in a retain cycle situation.
That API was simpler with garbage collection.
But since iTunes Connect doesn’t have an API, all of these reporting tools need you to give them your developer Apple ID and its password, and they need to store it forever in their databases.
That’s why I never tried any of those services. However, he notes that you can give them a different login with limited privileges.
Smart Folders in the Finder can be extremely useful. (I’ll leave for an other time my discussion of why I think Apple’s unnecessarily limited a feature that casual users will never use) Here’s a few really useful ones I use that you might like.
I love the idea of smart folders, but in practice I rarely use them. Every once in a while I create a one-off one to do a complicated search. Most files that I want to access together are already grouped in a BBEdit or Xcode project or in an EagleFiler library.
I would love to write a Scrabble game for people who love Scrabble. Get a great designer who loves words (Neven Mrgan would be choice one). Imagine how awesome it could be! But I’m not going to write that game, or any other.
It’s completely an issue of trust here. If Apple hadn’t changed the rules already (they didn’t require sandboxing initially), I wouldn’t have this attitude. But since they did, then I won’t buy an app that couldn’t exit the app store gracefully if push comes to shove. The biggest barrier to such an exit is iCloud.
For my recipes, I use EagleFiler and Dropbox on the Mac and GoodReader on iOS.
When we talk about the importance of backing up, we often say that it’s a question of when, not if, your hard drive will fail. With the Mac App Store, it’s nearing certainty that if you haven’t yet been stymied by the impact of one of Apple’s Mac App Store rules, you will be soon.
Sunday, July 29, 2012 [Tweets] [Favorites]
Rush Limbaugh (via Nicolas Seriot):
And what he’s talking about being “restrictive,” is software developers with the new operating system for computers, for the Macs, Mountain Lion. You don’t get your app in the App Store unless it’s ”sandboxed,” which means… “Restrictive” is the word. The best way to explain it is that it can’t access the data in any other app and very little of the operating system itself.
Politically they have nothing in common with me, and your question is very valid. “Why in the world would you want to tout people that have no desire to do anything with you?” It’s just the stuff works. I think it’s state-of-the-art. I think it’s the best out there for what I need to do. Their stuff has facilitated my productivity like nothing else has.
As a long-time Mac user, he’s presumably been hearing questions like this since Apple was the “hippie” company rather than the “restrictive” company.
WriteUp now supports swipe selection gestures, like the ones from Daniel Hooper’s prototype video. This feature is currently iPad-only, but the developer hopes to get it working on the iPhone in a future version. There have been lots of other cool new features in recent updates to WriteUp. I hope to update my Comparing iPhone Text Editors post soon.
ThisService 3 is much-improved (via Jesper):
Nathan Grigg (via Dr. Drang):
Almost anything you can do with cron you can do with launchd, but with more power and flexibility. Unlike cron, launchd does not assume that your computer is always running. So if your computer happens to be sleeping at the time a job is scheduled, it will run the job when it wakes up. This is probably the best feature of launchd, because it allows me to run scripts on my iMac while still letting it sleep when I’m not using it.
I have pieced together what I know about using launchd to schedule jobs from tutorials across the internet, trial and error, and the manuals. This is my attempt to gather all my knowledge about this in one place.
Basically, the patent - narrowed from its originally overtly “obvious” claims as recorded by patent examiners - covers a method of displaying a social network user’s profile per his or her privacy settings, display them on screen and show what their profile looks like on-screen to various other users or groups of users.
I’ve lost all confidence that the apps I buy in the App Store today will still be there next month or next year. The advantages of buying from the App Store are mostly gone now. My confidence in the App Store, as a customer, has evaporated.
And the Mac App Store, in its current incarnation, just isn’t built for us. It’s built for people looking for casual apps and games. (Sorry, there’s one more category: Apple’s own apps, which don’t have to play by Apple’s rules.) And that’s also fine. But put the two facts together—the loss of casual users to iOS, and the loss of non-casual apps on the App Store—and it starts to look like a problem.
However, we eventually determined that the Mac App Store wasn’t the best fit for Postbox. We had already established our own online store and purchase policies prior to the Mac App Store release. Additionally, the Mac App Store was not evolving quickly enough, and in the direction we needed it to go, to support the Postbox 3 release in a manner consistent with Postbox Store policies.
SuperDuper 2.7 now updates the status while copying large files, amongst other improvements.
Tuesday, July 24, 2012 [Tweets] [Favorites]
Implementing the first two syncing approaches isn’t easy, but developers tell Macworld that the third approach, for syncing Core Data, is what Steve Jobs might call “a bag of hurt”—it’s extremely complex. While iOS 6 will offer developers some significant improvements for behind-the-scenes iCloud syncing, the challenges such syncing presents will likely remain difficult.
Are there any applications from Apple that use Core Data iCloud syncing?
Update (2012-07-24): Or, Matt Stevens asks, Core Data at all?
Update (2012-10-26): Troy Harris and Reddit on Core Data and iCloud.
Gabe Weatherhead reviews the Logitech Wireless Solar Keyboard K760 (Amazon):
I was skeptical of the multiple device connections. It sounded too good to be true. It’s not. After configuring my Mac and iPad, I was able to easily switch with only a second delay.
I actually really like the Apple Wireless Keyboard (Amazon), and batteries last longer than a week for me, but this sounds interesting.
Logan Collins (via Jonathan Rentzsch):
Parallels Support (via Mike Ash):
We use in-product notifications to share several types of information with our customers. First, and most importantly, we share information about product updates which are generally related to compatibility with OS X, new features and product enhancements. Second, we occasionally share special offers from Parallels or other third party companies who provide special deals for our customers. Many of our customers rely on the information about product updates and appreciate the special deals for products that are of interest to them.
Individual notifications can be turned off by clicking the “don’t show this again” button. However, because customers need to receive important product information, there is not a mechanism for customers to completely disable notifications.
The whole thread is disturbing. When Parallels first came out, I used it to run Windows. Lately, I’ve been using VMware Fusion, mostly to run prior and pre-release versions of Mac OS X.
With the news about Thunderbird and Sparrow, this has not been a good month for Mac e-mail clients. And now it seems there’s something going on with MailForge.
Update (2012-07-25): Matt Milano:
As lead developer, I have actually been privileged to have two parallel careers, sometimes complimentary and sometimes at odds. Recently, I was on sabbatical for a couple of months to have surgery on an old sports injury I had been putting off having fixed for a long time. During that time, I increasingly came to the realization that I simply don’t want to develop software anymore. I have been involved in this business for 13 years. While it’s been an awesome ride, and I’ve accomplished some significant things in that time, I have found that I enjoy my secondary career far more of late.
He’s found another company to take over development of MailForge.
Monday, July 23, 2012 [Tweets] [Favorites]
Regrettably, what this issue really needs is a more flexible policy from Apple—a method that anyone can use to transfer licenses, not just those who qualify for Apple’s volume purchase programs for business or education. It wasn’t such a big deal with iOS apps in that the vast majority aren’t intended for business use, but with the advent of Mountain Lion and Apple’s push to direct users to the Mac App Store (and the many business applications within) there needs to be a method for license transfer for everyone.
You can do it via Apple Configurator, but it sounds like it’s a pain.
Today I’m going to discuss nested context support in Core Data and various issues that exist with them. Some of these issues are minor bugs. Others may be considered functionally correct by the Core Data team, but result in unexpected behavior. Regardless, they add up to nested contexts being a feature you should avoid completely (as of this writing).
One of the surprising issues is that Apple specifically recommends using nested contexts to do work in the background, yet if you use a nested context on a background thread it will block your user interface.
No doubt Apple will now recommend to all OS X developers that their receipt verification codes also check the certificates – and in fact, that’s what my apps are already doing. The certificates are, after all, available from the same parsing process recommended in the above link. At the very least, I recommend obtaining the SHA1 fingerprints of all 3 certificates (openssl has a SHA1() function for that) and checking them against the list above. And once that’s done, obtaining the app’s own signing certificates, and checking them, is also advisable, even if the app is signed with a Developer ID.
We’ve been listening to your feedback since the release of MoneyWell 2 and have made significant improvements to our 2.1 release based on our customer requests. Below are some of the top enhancements to MoneyWell.
I was a big fan of MoneyWell 1.x, however the initial versions of 2.x were a disaster for me: features removed, crashes, and lots of bugs. I’ve now been using the release candidates of version 2.1 for several weeks, and they’ve been working well. It’s much faster than 1.x, supports account/bucket groups, and reconciling works better. The main caveat seems to be that the investment features are unfinished, e.g. “Stock Transfer In” transactions don’t work properly yet.
It’s now possible to create rules that are effective for an entire domain right from within the Connection Alert.
This will be useful, and it looks like there are a variety of interface improvements.
Sunday, July 22, 2012 [Tweets] [Favorites]
Guy L. Steele Jr. (via Alan Eliasen):
After working nearly a decade on the design, development, and implementation of the Fortress programming language, the Oracle Labs Programming Language Research Group is now winding down the Fortress project. Ten years is a remarkably long run for an industrial research project (one to three years is much more typical), but we feel that our extended effort has been worthwhile. Many aspects of the Fortress design were novel, and we learned a great deal from building an interpreter and an initial set of libraries. Nevertheless, over the last few years, as we have focused on implementing a compiler targeted to the Java Virtual Machine, we encountered some severe technical challenges having to do with the mismatch between the (rather ambitious) Fortress type system and a virtual machine not designed to support it (that would be every currently available VM, not just JVM).
Now we’re joining the Gmail team to accomplish a bigger vision — one that we think we can better achieve with Google.
Thomas Houston quoting Leca (via John Gruber):
We will continue to make available our existing products, and we will provide support and critical updates to our users. However, as we’ll be busy with new projects at Google, we do not plan to release new features for the Sparrow apps.
Rian van der Merwe (via Drew Crawford):
This is the core of the disappointment that many of us feel with the Sparrow acquisition. It’s not about the $15 or less we spent on the apps. It’s not about the team’s well-deserved payout. It’s about the loss of faith in a philosophy that we thought was a sustainable way to ensure a healthy future for independent software development, where most innovation happens.
I’m not sure how much we should generalize about this, though, since e-mail clients are a weird market. It’s difficult being boxed in between both the platform vendor and the Web.
Go to top of program. Repeat loop.
What Rian’s post says to me is that we’re coming close to the point where everyone gets pessimistic and thinks it’s going to suck forever.
So keep your eye open for something cool and fun that doesn’t really work but has shitloads of potential.
Update (2012-07-24): Kyle Baxter quotes Guy English in 2010:
“Apps” is fun. It’s fun to say, it sounds unthreatening, it’s a word sufficiently abbreviated that it takes on a life of its own without dragging to the forefront of peoples minds the more sterile and technical sounding “application”. Apps are not Applications – they are their own things. They are smaller. They are more fun. Apps are treats atop your technological sundae. They are not potential time sinks. They are neither burden nor investment. They each represent a nugget of fun, of fleeting amusement. Apps are gobbled up in the millions by people who would never rush so willy nilly to buy desktop software. Apps are Pop Software writ large in blinking neon lights.
Are Apps good business? No, they’re not. From a small developer’s perspective the App Store is a total disaster.
There’s something important to learn here: since the App Store’s primary customers are mass-market, they don’t yet value apps very much, and are therefore only willing to pay a pittance for apps. For them, apps are simply entertainment, sometimes a bit more, but not much more. Perhaps that will change as these mobile devices increasingly replace the PC, perhaps not. But what’s also clear is that trying to sell a focused, obsessed-with-the-details app for mass-market prices probably isn’t going to work.
But taking that money was a blessing and a curse. It enabled the company to accelerate the pace of development, but completely changed the yardstick by which financial success would be measured. Sustainability was no longer the ability to provide a decent living for 5 talented people, they also had to provide a return to their investors. And by that new measure Sparrow was still a flop, even after the much anticipated release of their iPhone app.
The thing is, the entire software industry is changing. Computer users used to spend hundreds of dollars for great software and pay again every couple years for upgrades. But over the past couple decades people have grown accustomed to getting more and more value from software while paying less and less for it. The web has played a huge part in that, but the trend was accelerated by the App Store and Apple’s management of it.
In terms of programmer culture, though, there is precedent in the form of The Jargon File. Unfortunately, we don’t have a good designated place for deleted "too fun" questions to live, but all Stack Exchange content is licensed under Creative Commons in perpetuity. Which means, with proper attribution, we can give it a permanent home on our own blogs. So I did. I’ve collected the top 30 Stack Overflow New Programming Jargon entries below, as judged by the Stack Overflow community.
Wednesday, July 18, 2012 [Tweets] [Favorites]
Anand Lal Shimpi:
Remember, SandForce’s technology only works on files that are easily compressed. Good encryption should make every location on your drive look like a random mess, which wreaks havoc on SandForce’s technology. With FileVault enabled, all transfers look incompressible - even those small file writes that I mentioned are usually quite compressible earlier.
The improvement in storage performance is even more revolutionary. Similar to the rMBP, with the 2012 MacBook Air Apple has entered the world of modern SSD performance. The impact of the faster SSDs is felt everywhere from boot to application performance. Once again there are two SSD suppliers, but unlike in previous models both can be deliver good performance. If you use FileVault or plan on working with a ton of already compressed data, you’ll want to pick a 256GB or 512GB drive to end up with Samsung’s controller rather than the SandForce driven Toshiba solution.
Rainmaker Research (via James Thomson):
It is with great sadness that Rainmaker Research Inc. announces the loss of its founder, Evan Michael Gross, who passed away suddenly at the end of June, 2012.
Evan was the author of Spell Catcher software and owner of Rainmaker Research Inc. The original version was released as Thunder! in 1986 and evolved into what we know as Spell Catcher X today.
There’s also a company tribute page. I was a big fan of Thunder 7 and wrote to him in May 1996, worried about the future of the product, when I’d heard a rumor that it had been sold. He replied:
Thunder 7 is now called Spell Catcher, and will be published by Casady &
Greene starting sometime very soon.
It now has a great future with a good publisher behind it!
Indeed, SpellCatcher shipped later that year and was one of the first products that I reviewed. Casady & Greene is gone now, but Rainmaker is still publishing Spell Catcher X.
Update (2012-07-20): Ted Goranson:
The basic idea is unique personal inspiration of a tool creator, enabling similarly unique and personal creation by a user. It is all personal, part of crafting a life. I love this sort of collaborative creation thing and my work environment is cobbled together from the products that shine in this way.
Tuesday, July 17, 2012 [Tweets] [Favorites]
The problem isn’t universal, but a six-page thread (with similar other comments started by other users) on the Apple support forums detail the hardware configurations and running software from various users that are running into the problem with the display and new laptop. There doesn’t seem to be any induction by a specific software package, and a logical or physical disconnect of the display seems to work to rectify the static for a time.
The Thunderbolt displays are now a year old. They still seem like a great idea, but I’m continually hearing about weird problems like this.
In September, 1Password 3.9 was one of the first Mac apps to be sandboxed. It used a single temporarily exception read-write entitlement to enable access to the user’s Dropbox folder, thus annoying users who didn’t store their Dropbox in the default location. Yesterday, developer Roustem Karimov tweeted (via Gabe Weatherhead):
1Password update in Mac App Store got rejected for using a read-write exception in entitlements. Didn’t expect it go away so soon
This was unexpected for a 0.0.1 update that primarily exists to add support for Retina displays. The update has since been approved, seemingly using the same entitlement as before.
Joshua Goodwin (via Clark Goble):
They still behave in the clever two-faced way outlined above, but now they look just like the buttons that can only rewind and fast-forward within the current track, like on that Walkman. What does it all mean? I don’t know. I don’t feel like it solves any problems.
Much of the reason Xcode used to be so bad was that it couldn’t link against gcc directly. Clang is now deeply integrated into Xcode, including its index and its code editor. Does AppCode have to do double the work to get the same result? Or does it try to parse the source code in its own, not-quite-matching way, leading to weird inconsistencies? Will builds be as fast? Will there be cryptic errors when I try something nobody thought of to integrate properly? Can I really trust it to edit project and workspace files (whose formats are undocumented)?
Presumably this restriction was due to gcc being GPL code and Apple not wanting to open-source its IDE.
Ariya Hidayat (via John Carmack):
For this particular discussion, I’ll pick my favorite API design mistake: boolean trap. On this topic, the above API Design Principle wiki page says that
it’s almost invariably a mistake to add a bool parameter to an existing function
You can now pick multiple files directly from Finder or navigate to them in Alfred and add them to your file buffer. Once you’ve picked all your files, you can perform an action on all of them.
It sounds like of like a shelf. Interesting.
Saturday, July 14, 2012 [Tweets] [Favorites]
Bit Stadium introduces HockeySDK-Mac (via Andreas Linde). This is a huge amount of work to get around the fact that sandboxed applications are not allowed to read their own crash log files. Unfortunately, it sounds like the crashes are reported at the next launch, rather than at the time of the crash when the context would be clearer in the user’s mind.
Apple’s goal is clearly not to build a cross-platform syncing solution for others to build their businesses on top of. Their goal is to make their own platform better and easier to use. But those limitations are absolutely something developers have to think very hard about, because if their application could evolve into something greater than just an iOS or OS X application, they’re stuck if they choose the fork in the road labeled “iCloud.”
This deflation in software pricing isn’t inevitable. It simply needs two things. First, developers need to price their software realistically. Sure, they can run promotions from time to time, dropping their prices to $2 or so to get their apps noticed, but they need to maintain realistic prices that reflect the value of their work. Second, developers who sell Mac software at more than $5 or so simply must offer demo versions on their web sites. This is not just a courtesy, but should be an obligation. Expecting someone to drop $50 on an app they haven’t tried is simply foolish. Finally, Apple should offer a way for developers to provide demo versions of software from the Mac App Store.
Jonathan Zufi (via Mac|Life):
Our mission is to showcase the entire spectrum of products that Apple have sold to the public since 1976 – every product Apple Inc has ever produced, in the highest quality and definition possible. Every desktop, every laptop, every notebook, monitor, iPod, iPad, iPhone, mouse, keyboard, modem, cable, port, adapter, docking station, memory expansion card….and that’s just their hardware. Operating systems, productivity suites and all the great software titles that Apple have published will make an appearance too!
Great photos, and where else can you see the packaging for the GeoPort Telecom Adapter Kit?
Greg Sandoval (via John Gruber):
Some employees were stunned by how quickly and unemotionally DVD operations, the backbone of the business for a decade, was split off from the company. DVD Co. was moved out of Netflix’s offices to a space a few blocks away. Netflix’s leaders stopped discussing DVDs. Those Netflix executives who moved to DVD Co. stopped attending Netflix management meetings.
Mattt Thompson (via Hacker News):
AFIncrementalStore is an NSIncrementalStore subclass that uses AFNetworking to automatically request resources as properties and relationships are needed. I had noticed
NSIncrementalStore in the iOS 5 docs a while ago, but it was this article that got me to realize how unbelievably cool it was.
John Regehr (via Mike Ash):
I will send a small but nice prize to the person who posts a comment describing the most interesting, surprising, or just plain crazy object code emitted by a compiler as a consequence of undefined behavior.
David Chisnall (via Graham Lee):
One of the biggest changes that the Étoilé runtime made was the message-lookup mechanism. First it made it possible for each object to have its own message-lookup function. Second it made the lookup function return a slot structure, rather than a method. The point of the slot structure was to make safely caching lookups possible using a lockless algorithm.
Wednesday, July 11, 2012 [Tweets] [Favorites]
CommentCast is a Mac app for displaying iTunes and App Store reviews (via Daniel Jalkut). This is better than viewing the reviews in iTunes or the Mac App Store because you can select/copy/paste the text, it shows reviews for all the international stores, it makes it easy to see when there are new reviews for your products, and it can translate foreign reviews.
Another option is to go to the Customer Reviews page in iTunes Connect. This offers an RSS feed for each product and store combination. However, feeds are only available for the stores from which you’ve already received reviews. I suppose that you could guess at what the feed URLs would be for the other stores, but you’d still have to keep them updated as new stores become available.
And the GPUs in some of those early 64-bit Macs were deprecated before 64-bit KEXTs became common. Since those older drivers are 32-bit, Mountain Lion won’t load them. We believe Apple decided it was better to draw the line in the sand for some older machines rather than invest the resources into updating the drivers for these older GPUs.
Some Macs from as late as 2009 will not be able to run OS X 10.8. This is more of an issue than it might otherwise be because of the Mac App Store. Apple requires that new applications and updates be sandboxed, but many of the sandbox features are not implemented until 10.8. Thus, developers will be forced to drop support for 10.6 and 10.7. If you choose not to update to Mountain Lion, or have an older Mac that can’t run it, you won’t be able to get updates to your apps, nor will you be able to re-download the compatible version that you already purchased.
Monday, July 9, 2012 [Tweets] [Favorites]
PayPal announced today that it will now retain its transaction fee when refunding American Express payments:
Refunds for American Express Direct Payments and Virtual Terminal Payments. Section 2(d) (Additional Fees) is being amended to add that for refunds of Direct Payments or Virtual Terminal Payments where an American Express Card is used, the Transaction Fee will be deducted from your Account at the time of the refund.
This is still better than most full-service payment processors, though, and of course Apple’s app stores.
Other World Computing (via Chris Foresman):
The big departure for USB 3.0 is that its plugs are a little different than the ones prior. The main thing you’ll notice is that there are a lot more pins on the plug. That can cause a bit of confusion. Fortunately, USB is designed to scale nicely, and the plugs are no exception.
Sunday, July 8, 2012 [Tweets] [Favorites]
[Ward] Cunningham’s vision is that you will have your own wiki, perhaps several wikis. When you see a page on someone else’s federated wiki that you want to edit, you can click “fork,” and the page is copied into your own wiki where you can edit it. The owner of the original wiki can then decide whether to merge your changes into the original page.
This is a really neat idea, but I’m skeptical about whether it can catch on.
Mitchell Baker (via James Fallows):
Much of Mozilla’s leadership — including that of the Thunderbird team — has come to the conclusion that on-going stability is the most important thing, and that continued innovation in Thunderbird is not a priority for Mozilla’s product efforts. […] As a result, the Thunderbird team has developed a plan that provides both stability for Thunderbird’s current state and allows the Thunderbird community to innovate if it chooses.
This can’t be good for Thunderbird users.
Saturday, July 7, 2012 [Tweets] [Favorites]
This book chronicles my six years of working towards a Ph.D. in Computer Science at Stanford University from 2006 to 2012.
I mentioned before that I upgraded to a Retina MacBook Pro earlier than I would have under normal circumstances. However, it’s been a very pleasant upgrade. Subjectively, it feels much faster. And in terms of benchmarks, it takes 4m26s to build SpamSieve.app on the 2010 MacBook Pro (2.66 GHz dual-core i7, SSD) vs. just 2m2s on the Retina MacBook Pro (2.6 GHz quad-core i7). Backups and restores using a Voyager S3 are between 2 and 4 times faster since the new Mac has USB 3. It also has more internal storage, so I can now put VMware Fusion on the flash drive, which makes a huge difference. So far the only hiccup has been that it wouldn’t recognize the native resolution of my external display until I Option-clicked the “Scaled” radio button in the Displays preference pane. I’m also looking into using an HDMI cable to connect my Dell display, so that I won’t need the flaky, USB-powered Mini DisplayPort to Dual-Link DVI Adapter.
Update (2012-07-19): The “Dual Link” cable that I got only worked up to 1280×800. I now believe that there are no HDMI-to-DVI cables that work with dual-link resolutions. An active adapter may be required.
Update (2012-09-06): Mark Aldritt:
[This] is the first time I’ve gotten a new Mac laptop that was dramatically faster than my previous machine. The combination of solid-state disk, lots of RAM and a fast CPU make the machine very responsive. Building my Script Debugger 5 product from scratch went from ~4m30s down to ~1m15s.
NSNumber is a conceptually simple class which mainly exists so that we can stuff numeric values into Cocoa collections, but its flexibility implies a fair amount of underlying complication. By implementing a workalike
MANumber class, we can see what kinds of things
NSNumber has to be doing on the inside. Automatic conversion to different integer types requires a fair amount of boilerplate code, and reliable conversion between number of different types can get pretty complicated.
Python’s implementation of number objects is also interesting.
After exploring many different ways to talk to our active customers, we finally realized the best way to do it was right in the application itself. By talking to users inside the application, we can reach them as they’re most likely to need the information we’re providing.
I tried adding something like this to my apps and was told by App Review that it violated rule 2.21 “Apps may not use update mechanisms outside of the App Store.” They allowed it when I explained that it was only an emergency communication mechanism.
Because HiDPI customers may be a fringe group, but they are a forward-facing fringe. They represent the users of the future, and the more we cater to them now, the more deeply embedded our products and designs will be in their culture. The future culture. The same arguments apply to aggressively embracing newer web browsers standards, and the latest technologies in platform operating systems such as iOS and Mac OS X.
Hamish Sanderson (via Clark Goble):
SB, on the other hand, does its hardest to pretend that it is a genuine Cocoa API with Cocoa-style behaviour, so layers on a large amount of magic. The result is something superficially appealing to Cocoa developers, but as soon as those abstractions start to leak - as abstractions invariably do - you are completely at sea in terms of understanding what’s going on. For example, SBElementArray claims to be an array - it even subclasses NSMutableArray - but when you actually try to use its array methods, half of them work and half of them don’t. In fact, it isn’t a real array at all; it’s a wrapper around an unevaluated Apple event object specifier, faked up to pretend it’s an NSMutableArray.
Today I released Clipstart 1.5 for direct download customers and removed the previous version of Clipstart from the Mac App Store. Even though I’ve written about leaving the Mac App Store several times, actually pulling the trigger was difficult. But I believe it’s the right thing for my app, right now.
Nick Berry (via Dave Dribin):
With just a small number armies on both sides, the defender has the advantage. This is because, in the result of a tie on the dice, the defender wins.
For battles where the number of attackers and defenders is the same 1v1, 2v2, 3v3, 4v4, then the defender has the mathematical advantage. However, once 5v5 has been reached, advantage swings to the attacker (because the benefit or being able to roll one extra die each round becomes more significant than losing on a tie.
When your MacBook Pro switches from integrated Intel graphics to the dedicated GPU, power consumption goes up considerably. Which API calls or program attributes trigger this switch is not totally clear, and programs that you least expect might be draining your battery.
Cody Krieger’s free gfxCardStatus will tell you when a switch occurs and lists which programs are causing this.
Unfortunately, there doesn’t seem to be a list of which APIs trigger the discrete GPU. The system thinks that EagleFiler and BBEdit need it, even if they are just displaying text files.
It looks like Google’s terms for use of the API clearly restricts companies like Apple from offering turn-by-turn navigation in their apps. But this leaves at least one unanswered question: what if Apple and Google had worked out their own agreement that isn’t necessarily subject to the TOS that are applied to everyone else?
Street View and integrated transit information seem like big losses.
Vanity Fair (via Hacker News):
Kurt Eichenwald traces the “astonishingly foolish management decisions” at the company that “could serve as a business-school case study on the pitfalls of success.” Relying on dozens of interviews and internal corporate records—including e-mails between executives at the company’s highest ranks—Eichenwald offers an unprecedented view of life inside Microsoft during the reign of its current chief executive, Steve Ballmer, in the August issue. Today, a single Apple product—the iPhone—generates more revenue than all of Microsoft’s wares combined.
Apparently Amazon and IBM also use Glengarry Glen Ross–style “stack ranking.”
Update (2012-07-29): The full article is now available online.
Andreas Arvanitis (via Hacker News):
Eero is a fully binary- and header-compatible dialect of Objective-C, implemented with a modified version of the Apple-sponsored LLVM/clang open-source compiler. It features a streamlined syntax, Python-like indentation, and other features that improve readability and code safety. It is inspired by languages such as Smalltalk, Python, and Ruby.
Update (2012-07-11): There’s a thread about Eero on Apple’s Objective-C Language mailing list.
Just to be clear: if your requirements never change and you never update your applications, you never interact with remote objects, your users never make mistakes, your data operations are all instantaneous, your users all run 12-core Mac Pros, and you only have one view, Core Data is definitely not the correct tool for you. Go, write your own data stack, and be merry. The rest of us should be using Core Data.
Also to be clear, using Core Data here and there does not magically solve all your thread synchronization problems, or build a complete sync engine for you. It’s not some magical dust you sprinkle on and life is sunshine and rainbows.
He also has an interesting post about using NSIncrementalStore with Web services.
Thursday, July 5, 2012 [Tweets] [Favorites]
Xtrail ($5) is currently my GPS fitness app of choice. Its configurable interface is reminiscent of Kinetic ($4), but it’s simpler and more accurate at tracking my route. MotionX-GPS ($1) has far better maps, but it requires a lot more taps to get things done. Xtrail is beautifully designed for making the common tasks easy. Alas, as is becoming common with iPhone apps, there’s no documentation or support. I e-mailed the developer some questions and suggestions (twice) and never received a reply.
Update (2012-07-06): After I blogged this, the developer sent a helpful reply and apologized for her support team overlooking my messages.
Update (2013-09-17): Sophia Teutschler:
CoverSutra and Xtrail are no longer available for sale and won’t get any more updates either. Both apps flopped and were also plagued with technical issues.
[Our] analysis of the iOS and Android versions of the same application showed that it’s not an SMS worm but a Trojan that uploads a user’s phonebook to remote server. The ‘replication’ part is done by the server - SMS spam messages with the URL to the application are being sent from the remote server to all the contacts in the user’s address book.
Via Jeff Johnson, who asks, “Isn’t the review process supposed to protect us from this?”
The only fix for people with bad copies, once good copies are being served again by the App Store, is to delete and reinstall the app.
And it’s even more serious for apps that store user-created data or game progress locally: if the only fix is to delete and reinstall the app, many users will lose their data.
The problem began on July 3. He stopped updating the list of affected apps after it reached 114. This is one of the downsides of a centralized system: a bug in the store can potentially affect every app on the platform, and developers are powerless to fix their own apps.
Update (2012-07-05): Lex Friedman:
Apple hadn’t responded to Macworld’s request for comment by the time we first published this story. Around 6:00 p.m. PT, Apple acknowledged the problem to Macworld, describing it as “a temporary issue that began yesterday with a server that generated DRM code for some apps being downloaded.” Apple added: “The issue has been rectified and we don’t expect it to occur again.”
I had a similar issue with one of our OSX apps. It took months to get Apple to fix the problem and pull most of the reviews. A few reviews were left and our average rating took a hit because of it. I am a pretty rabid Apple fan but I was less than thrilled with how they handled the problem, and how much effort it took to get them to deal with it. I CCed the emails to the editors here in case they thought the processes was worth commenting on. The email thread went between very concerned and helpful, to comically unattached, and back and forth again.
Update (2012-07-06): Marco Arment:
ather than remove the 1-star reviews — as far as I can tell, they’re all still there — it appears that Apple has triggered a reupdate on the affected apps, Instapaper included.
This means that the apps can be fixed without losing locally stored data.
Update (2012-07-06): Oddly, Apple described the problem as affecting a “small number of users.”
I think this guidance provides ample argument against this type of icon transfer. While the difference may not be as notable with the icons blown up to a large size like I have shown them here, details such as those on the Garageband guitar or the Pages inkwell are completely lost when seen on the smaller iPhone or iPad screens. Quelle surprise, as the French may say, that Apple says one thing and does another!
Sunday, July 1, 2012 [Tweets] [Favorites]
Back in March of 2011, my colleague Ryan Sarver said that developers should not “build client apps that mimic or reproduce the mainstream Twitter consumer client experience.” That guidance continues to apply as much as ever today. Related to that, we’ve already begun to more thoroughly enforce our Developer Rules of the Road with partners, for example with branding, and in the coming weeks, we will be introducing stricter guidelines around how the Twitter API is used.
Were I a Twitter client developer, I would get in touch with other client developers and start talking about a way to do what Twitter does but that doesn’t require Twitter itself (or any specific company or service).
When Twitter started to get traction, a year or two into their existence, I decided that Twitter was the Best Thing Ever. I realized that Twitter, because of their API, actually was a real-time protocol to connect various services in a novel way. I had debates with my other tech-nerd friends about whether Twitter could be one of the fundamental building blocks of the Internet via their powerful API.
Update (2012-07-07): Dave Winer:
Conclusion -- corporate APIs are good for the corporations that own them, and pretty much bad for everyone else. I would be reluctant to develop on any corporate API unless I was prepared to have my work completely deleted or obviated or usurped by the platform vendor. You really don’t have any power. However it’s pretty much impossible to avoid them. But try to.
You can see that I’ve got a group named “email@example.com” which holds all the layers for the 2x image and a group named “submit.png” which holds all the layers for the 1x image.
I bet you can see where this is going.
Next, I’ll choose File ▸ Smart Export… and pick a directory to save my files too. When I click Export in the sheet Acorn will go through all the group layers in my document and save each one as a composite using the group layer name as the file to save to.
Mike Seymour (via Erik Barzeski):
If you took a curly hair and weighted it and then one took straight hair and weighted it, with the same weight in mass, the way each would react to gravity is quite different.” Merida’s hair wanted to unwind due to the weight of her own hair, so the team tried lighting the mass, but then the hair became floaty “almost like underwater hair. It is not that the mass changes, it is almost as if gravity itself changes.” So the team ended up using a gravity coefficient closer to that of the moon than earth.