Wednesday, June 19, 2013
So, how are we making these Yahoo! IDs available? We’re freeing up IDs, that have been inactive for at least 12 months, by resetting them and giving them a fresh start. In mid July, anyone can have a shot at scoring the Yahoo! ID they want.
Via Christopher Blizzard, who notes that this could cause security problems. If you haven’t recently logged into your Yahoo account and you had listed your Yahoo e-mail address as the contact info for another site or company, any password reset e-mails will go to the new owner of your Yahoo address.
Andrew Shebanow (via Chris Hanson):
The similarities seem fairly striking to me. Factor in the fact that Erich Gamma worked at Taligent at the time the Test Framework was developed, and in fact gave the engineering team some good feedback, and its pretty hard to argue that Alan and David don’t deserve at least some credit for developing one of the original ancestors of JUnit.
It turns out to be a case of convergent evolution, as JUnit was based on SUnit, which was separate from the Taligent and Pink work.
Monday, June 17, 2013
The person method accepts an id for a person and a block. If the person is found the block is called with the person. Otherwise it isn’t. Elegant, eh? And, there are no nulls.
Lots of luck doing this in a language without blocks or lambdas. I think that when the history of computing is finally written, one of the chapters will be about how much insanity thrived in the era before blocks were considered mainstream.
This surprised me, so I asked a colleague who talks about AV Foundation at conferences if I was mistaken, and he agreed that there doesn’t seem to be a way to save an
AVMutableComposition. Which in turn means that if you’re writing a video editor, the composition object is only useful to you during the life of the app, and you need some other means of saving the set of edits you’ve made, and re-creating a new composition from this data on a future launch.
He gives a bunch of examples of cool features in the old QuickTime APIs that aren’t (yet?) available in AV Foundation.
Saturday, June 15, 2013
All of this is to say that your code must be correct in the absence of reachability, but adopting reachability can greatly enhance usability.
It’s interesting that several commenters suggest only using the reachability API if the actual network request fails. As I recall, originally we were supposed to use reachability first, because some requests aren’t worth causing the modem to start dialing the phone.
Thursday, June 13, 2013
MapKit on OSX is for App Store apps only. All interest I had is immediately lost.
Just like iCloud.
Also missing from the iWork for iCloud presentation was any mention of the best reason to put an office app on the web, collaboration. I’ve never been happy with the feature set of any of the web-based office solutions. They don’t have the features we get with native apps and are often ugly as sin. There is, however, one redeeming feature in collaboration. Multiple people can work on the same online document at once. Google has mastered this so that I can write one paragraph while watching a colleague (or two or three colleagues) write another paragraph on the same page. iCloud for iWork doesn’t support this.
In a nod to the company’s original PHP converter, they called the system the HipHop Virtual Machine, or HHVM for short, and it was soon installed beneath the live site, where it continues to run today.
HHVM uses what’s called just-in-time compilation, which means Facebook’s PHP code is converted to machine language as it executes on the server. This is the way the Java programming language runs, but the Java virtual machine was built over many years to serve an entire industry of programmers. The HipHop Virtual Machine was built just for Facebook — though, as with so many parts of its infrastructure, Facebook has open sourced the system, so that anyone can use it.
With the HipHop Virtual Machine, Facebook can run PHP at speeds most developers never thought possible. But some still wonder why the company would go to such extremes. Longtime developer and programming pundit David Pollack doesn’t buy the notion that PHP helps Facebook iterate at a faster clip.
We can quibble about colour choices, but when viewed against the new style, the sheer weight and gimmickry of the bubbles and bevels and shine becomes very apparent. The navigation bar at the top hangs there like a lintel, frowning away. It’s a pretty Photoshop job, but to my eye it now looks chunky and theme-y, like a skin for jailbroken devices.
In fact, the designs are so different that you might even have been surprised that they came out of the same teams that were behind the home screen on iOS 6. Well, you’d be right. We’ve been talking to people all week about the new designs of iOS and multiple sources have given us a better picture of how it went down inside Apple in the last few months.
First of all, many of the new icons were primarily designed by members of Apple’s marketing and communications department, not the app design teams.
I don’t think most developers of mature, non-trivial apps are going to have an easy time migrating them well to iOS 7. Even if they overcome the technical barriers, the resulting apps just won’t look and feel right.
There’s an intricate system at work, a Z-axis of layers organized in a logical way. There is a profound reduction in the use of faux-3D visual effects and textures, but iOS 7 is anything but flat. It is three dimensional not just visually but logically.
But with major user interface changes such as Aqua or iOS 7, Apple has another tendency: they overshoot the mark. Their incremental approach then becomes one where unnecessary items are removed (such as Aqua’s stripes) or improved (excessive shadows and transparency are toned down).
Adam C. Engst:
Apple has at long last responded to one significant request: the desire to transfer apps between developers. This is important because developers have a lot of intellectual property value wrapped up in apps, in part due to the app’s metadata in the App Store. Until now, it wasn’t possible to transfer an app between developers without losing rankings and reviews and severing the connection with existing customers for updates, thus stripping an app of much of its hard-earned value.
This is a a good improvement, but it’s worth noting what the FAQ says:
You cannot transfer iCloud enabled apps or apps using iCloud entitlements, Passbook IDs, certificates, or notifications.
In addition, apps with approved auto-renewable, non-renewing, or free subscriptions In-App Purchase subscriptions cannot be transferred. This includes apps that previously had approved In-App Purchases subscriptions, even if they have been removed.
Alaric Cole (via Josh Centers):
You might understand my shock when they unveiled a revamped weather app today. And its most defining new feature? Animated weather. Rain fell, snow drifted, hail dropped, and thunderstorms stormed—just as my app had so confidently done months before. And the audience loved it. When the lightning flashed, there was thunderous applause.
Apple never accepted his app into the App Store, rejecting it first for not having enough features and later because of “the experience the app provides,” which turned out to be similar to that of the built-in iOS 7 Weather app.
Saturday, June 8, 2013
Apple (via Dan Frakes):
Wireless Diagnostics can help you resolve wireless connectivity issues by analyzing the Wi-Fi network your Mac is connected to and providing solutions. Wireless Diagnostics is included with OS X Mountain Lion v10.8.4 and later.
If you can connect to your Wi-Fi router, but are having issues with webpages loading, sending or receiving email, music or video streaming, or downloading, use Wireless Diagnostics. After Wireless Diagnostics has completed an analysis of your Wi-Fi network, it will list any issues it finds and offer some solutions.
Friday, June 7, 2013
App Stories, part of App Camp for Girls, is interviewing Mac and iOS developers about how they got started in app development and what advice they have for aspiring young developers. So far, they’ve interviewed Peter Maurer, Greg Scown, Brandon Alexander, and Natalie Osten.
Update (2013-06-13): One new developer is featured each day, and my interview has now been posted.
The first issue of objc.io is now available (via Jake Marsh):
Welcome to the first edition of objc.io, a periodical about best practices and advanced techniques in Objective-C!
objc.io was founded in Berlin by Chris Eidhof, Daniel Eggert, and Florian Kugler. We started objc.io to create a regular platform for in-depth technical topics relevant to all iOS and OS X developers.
It looks great. Currently, there’s an e-mail list and a Twitter account, but no RSS feed.
LaunchBar 5.5 includes an interesting new Snippets feature. I used to use its predecessor, Text Clippings, but recently switched to TextExpander. One of the neat things about LaunchBar snippets is that the placeholders integrate with its Clipboard History and Instant Send features.
While building one of my Mac apps this morning, codesign failed with the error “CSSMERR_TP_NOT_TRUSTED.” Apparently this has been happening since last night. Rich Siegel says that there’s a problem with Apple’s timestamp server and that you can work around it by adding --timestamp=none to codesign’s arguments; this disables the use of timestamp services. This is better than disabling code signing entirely, but you can’t ship an app built this way. I wonder how many people realized that even if you’re using Developer ID certificates and Gatekeeper rather than the Mac App Store, you’re still dependent on Apple’s servers to be able to ship your app. Luckily, in this case, the server is back up now.
Thursday, June 6, 2013
For my part, perhaps because of my own thin skin, I find Tim Cook’s preternatural calm admirable. Taunted with comparisons to Spindler and Amelio, dragged onto the Senate floor, being called a liar by a NYT columnist, constant questioned about his ability to lead Apple to new heights of innovation… nothing seems to faze him. More important, nothing extracts a word of complaint from him.
Asking Tim Cook (or any other Apple executive) questions you know he isn’t going to answer isn’t being a “tough” journalist. It’s just a waste of time and a rare opportunity. Sure, ask him up front if he’s willing to talk about upcoming Apple products, get his “no” on the record. But then move on to questions he might actually answer.
So many good questions that could have been asked, which he probably would have answered.
Wednesday, June 5, 2013
Joris Kluivers (via Charles Parnot):
While not nearly completed I decided to publish my implementation of Quartz Composer for iOS. This project intends to provide a rendering & interaction framework for
.qtz on your iPhone or iPad. Similar to what the Quartz Composer framework provides on OS X.
Saturday, June 1, 2013
Apple’s bug reporter has a new user interface that resembles Mail and iOS (via Mike Abdullah). The features seem pretty much the same. No word yet on reliability.
Friday, May 31, 2013
Nicholas Riley compares these headsets for listening to podcasts. I’m very happy with my Jawbone ERA except that there’s no button (or tap) to pause/play the podcast or music. This only works for calls.
The C language is perhaps the most popular computer language in existence, but it’s also quite odd, and because of that often poorly understood. I’d like to give you a quiz to see how much you know about some of the odd but useful corners of the language.
The strangest one for me is that
free(NULL) is defined as a no-op. I seem to remember reading or being taught early on that this was dangerous. CFRelease will indeed crash, although some variants like CGImageRelease will not.
Today, Adobe released an iOS app for capturing and tinkering with color palettes. The palettes can then be automatically saved for retrieval through the Kuler web site, or shared via email or Twitter.
Milen Dzhumerov (via Drew McCormack):
There has been a lot of talk about iCloud + CoreData (referred to as iCCD hereafter) over the past few months and I think it is a good time for me to share our journey in getting iCloud integrated in Clear. If you do not want to read through all the details: Clear uses a custom system built on top of iCloud File Storage and it works in a similar fashion to Operational Transformation. The post proceeds to cover the reasons for choosing iCloud, then explores iCCD and subsequently builds a synchronisation system from the ground up.
This is a good strategy, although iCloud file storage also has some issues. It’s important to note that both iCloud Core Data and and Operational Transformation involve syncing sets of changes, but they work at different levels of abstraction. Core Data syncs lower level database transactions, while OT works with higher-level user-oriented actions.
Camino was my browser of choice during the early days of OS X and it was an incredible browser. It was the Mac’s first Gecko-driven Cocoa browser as Firefox was Carbon-based right up until 2008. Camino was the Google Chrome of its day - fast, slick and a great looking app.
I am saddened that Camino must die in the effort to save Firefox, a browser that has gotten just a bloated as the Netscape Suite it once replaced. By losing Camino we will not only see the end of a browser that once made the Mac great, but the end of a development community focused solely on the advancement of a great Macintosh application.
Alas, though Chrome and Firefox have good rendering engines, they do not have fully native Mac user interfaces. Safari has both, but its engine has reliability and memory problems.
Thursday, May 30, 2013
Bluetooth tethering. It sounds archaic and slow, but actually worked out better. And it wasn’t slow, either: the speeds were essentially the same as I typically get through 3G already, or around 1.5Mb down and 1Mb up. Comically, it was faster to connect. I always seem to have a somewhat tricky time getting my iPhone’s Wifi hotspot to show up in areas with tons of Wifi networks, but connecting via Bluetooth literally took two seconds.
He also says that it uses less battery power than Wi-Fi.
The most problematic part for us was understanding Apple’s NSFileCoordinator APIs and the many issues we had with it. The thing is: it looks simple, the methods are certainly simple and the documentation is written in a simple way -- but it’s use is everything but simple. In retrospective, we get the impression that the whole system seems to have been tested for Apple’s standard use only. That is, a user-managed single layer of folders, with occasional opening, saving and renaming of a few monolithic files. Pages, Keynote, traditional document-based apps. However, while the underlying APIs are designed and documented for broader use and more advanced situations, they soon start to fail if being used like that.
Wednesday, May 29, 2013
Jonathan Penn links to this great article about how SQLite works:
An important feature of transactional databases like SQLite is “atomic commit”. Atomic commit means that either all database changes within a single transaction occur or none of them occur. With atomic commit, it is as if many different writes to different sections of the database file occur instantaneously and simultaneously. Real hardware serializes writes to mass storage, and writing a single sector takes a finite amount of time. So it is impossible to truly write many different sectors of a database file simultaneously and/or instantaneously. But the atomic commit logic within SQLite makes it appear as if the changes for a transaction are all written instantaneously and simultaneously.
SQLite has the important property that transactions appear to be atomic even if the transaction is interrupted by an operating system crash or power failure.
I was hoping Dr. Drang would weigh in on this:
In some cases, they go beyond just saying that big cubes melt slower and also claim that they do so while cooling your drink just as much. These claims should be looked upon with a gimlet eye, because the cubes’ melting is what does the cooling.
No question, some of the cooling comes from raising the temperature of the ice from below freezing up to the melting point. But that’s small beer. The specific heat of ice (0.50 cal/g-K) is only about half that of water (and about equal to that of ethanol), so raising the temperature of ice does little to lower the temperature of your drink. The significant cooling comes from ice’s heat of fusion, which is a whopping 80 cal/g. This is what pulls heat out of your drink and lowers its temperature.
That said, I like the idea of The Sweethome.
Monday, May 27, 2013
I’m sure you’ve noticed the backlash against free internet services over the past couple of years. Not that there are fewer free services, just that a certain set of people have been arguing that we shouldn’t be using them. Their rallying cry is “If you’re not paying for the product, you are the product.” This is considered a deep truth among the anti-free set. It’s certainly true, but it isn’t deep, and I’m not convinced it makes free services bad.
While you won’t see a tenfold increase in the transfer speed from USB 2.0 to USB 3.0 in real-world use, USB 3.0 is fast—about three times faster than USB 2.0 with a spinning hard drive, and three to five times faster with SSD. And using a hub doesn’t impact speeds, even with other (and slower) peripherals attached. USB 3.0 is also faster than FireWire 800, and it stacks up favorably against Thunderbolt.
Friday, May 24, 2013
John Siracusa illustrates how the Mac OS X Finder still doesn’t zoom windows properly.
Wednesday, May 22, 2013
Exciting initial release from the OmniGroup:
OmniPresence is the best way to sync all of your documents across all of your devices. And it works on most web hosts, including OS X Server, which means you can store all of your data yourself.
Keep all of your documents in sync. Add any file or folder, and it’s automatically synced everywhere else with a small app that runs in the background.
There’s folder syncing via the Finder with the status in the menubar (like Dropbox), an API for developers (better than Dropbox’s), support for multiple users (unlike iCloud), and the files can be stored on Mac OS X Server or a host that supports WebDAV. Since it’s open-source and the files are directly accessible on the server, it should be much more debuggable than iCloud.
ReactiveCocoa is a tool that programmers can use to make writing apps easier by removing state. However, even in a “completely reactive” app, you have to deal with non-ReactiveCocoa code. Things like table view delegate methods, for example. When you want to bridge the gulf between non-reactive and reactive worlds, use RACSubjects.
While subscriptions are useful and necessary for performing side-effects, be careful not to overuse them. They are like mutable variables – state – which ReactiveCocoa tries to avoid. Don’t use RACSubjects to manipulate application state where binding properties to mapped signals can work instead.
Tuesday, May 21, 2013
Andrew Leonard (via John Gruber):
Qworty has destructively edited the pages of other writers. He has made numerous edits to his own page while obsessively hiding his true identity. And yet there have never been any significant consequences for his actions. For those of us who love Wikipedia, the ramifications of the Qworty saga are not comforting: If Qworty has been allowed to run free for so long — sabotaging the “truth” however he sees fit, writing his own postmodern novel — how many others are also creating spiteful havoc under the hood, where no one is watching?
Matt Henderson shows how to use a custom subdomain to clean up the long dl.dropboxusercontent.com URLs.
We want Flickr to be the most amazing community and place for you to share your photos. So, we’re also revealing a beautiful new design that puts photos at the heart of your Flickr experience, where they should always be. Whether it’s a sweeping landscape or a family portrait, we want every photo to be at its most spectacular.
I think they went a bit too far, in that no matter how large your window you can no longer simultaneously view an individual photo and its metadata. But I like the general direction.
I was happy paying about $22/year for unlimited uploads and no ads. Now that the free account includes 1 TB of storage, removing the ads for $50/year doesn’t seem like a good deal.
Update (2013-05-22): You can cancel an old Pro account for a prorated refund. The statistics feature is only available with the old Pro account.
Monday, May 20, 2013
Apple released a minor update to iTunes last week (11.0.3), with, uncommonly, tweaks to a couple of features that are very welcome. The first I want to point out is the MiniPlayer[…]
Tumblr started as a fairly typical large LAMP application. The direction they are moving in now is towards a distributed services model built around Scala, HBase, Redis, Kafka, Finagle, and an intriguing cell based architecture for powering their Dashboard. Effort is now going into fixing short term problems in their PHP application, pulling things out, and doing it right using services.
Start with an assumption that it's going to break, and break hard. Give developers tools to analyze and clean things up. Apple gives us pretty great tools for debugging and improving code running on our local machines. We need the server side equivalent of that.
Wednesday, May 15, 2013
The New York Times (via John Gruber):
After Random House finally agreed to a contract on Jan. 18, 2011, Eddy Cue, the Apple executive in charge of its e-books deals, sent an e-mail to Mr. Jobs attributing the publisher’s capitulation, in part, to “the fact that I prevented an app from Random House from going live in the app store,” the filing reads.