iTunes 11.0.3 MiniPlayer
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[…]
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.
Glen Chiacchieri (via Randall Munroe):
Dictionary of Numbers is an award-winning Google Chrome extension that tries to make sense of numbers you encounter on the web by giving you a description of that number in human terms. Because “8 million people” means nothing, but “population of New York City” means everything.
Ted Goranson sifts through iPad apps:
I assumed that the experience with the iPhone would make the setup on the iPad easy. It helped not at all. I still bought easily five or six apps for each one I settled on. I am happy with Apple overall, but the app evaluation process is severely broken.
After the app passes validation and Xcode uploads it successfully, the upload is ultimately rejected based on the incorrect assertion that sandboxing is not enabled for the nested executable.
Nigel Brooke (via John Siracusa):
A few month back, Apple quietly slipped a very nice Objective-C to Javascript bridge into WebKit. Since the first commit while we were busy celebrating New Year’s Eve, it has been fairly actively developed and improved. This new API supports straightforward embedding of the JavaScriptCore interpreter into native Objective-C projects, including reading and writing variables and object members with appropriate type coercion, calling methods on JavaScript objects, and directly binding Objective-C objects into JavaScript.
Quinn Mahoney (via John Gruber):
No, a signed ramdisk means the brute force is done on-device. The 10 attempt limit is enforced by iOS, ramdisk bypasses that.
Tuesday, May 14, 2013
Terra (via Hacker News):
Like C, Terra is a simple, statically-typed, compiled language with manual memory management. But unlike C, it is designed from the beginning to interoperate with Lua. Terra functions are first-class Lua values created using the
terrakeyword. When needed they are JIT-compiled to machine code.
You’re right that we designed Terra primarily to be an enviornment for generate low-level code. In particular, we want to be able to easily design and prototype DSLs and auto-tuners for high-performance programming applications. We explain this use-case in more detail in our upcoming PLDI paper.
Update (2013-05-15): The Lambda thread:
Monday, May 13, 2013
A reversible interpreter provides some really interesting opportunities for exploration and learning programming. Reversibility makes it possible to scrub through the execution of algorithms, which you can see used to great effect in the Algorithm Wiki and in the depth-first traversal example below. The code that is highlighted on the left-hand side is the actual code that is running. Being able to scrub through the algorithm is not only fun, it transforms the experience of exploring the algorithm.
I have not yet explained how on earth Cloud Mate on iOS is able to show you a preview of the contents of an iCloud-based file, as well as handing that file off to various other apps and services. The answer is that Cloud Mate’s information about each cloud-based document includes not only its name, size, and modification date, but also the URL of its storage location at www.icloud.com. Thus, when you tap on the name of a document, Cloud Mate does effectively the same thing that Dropbox does when you tap on the name of a document in the Dropbox app — it downloads the document from iCloud!
The iOS app is possible because the companion Mac app is not sandboxed.
Saturday, May 11, 2013
phil.ipal.org (via Mathia Bynens):
While using more than 256 colors in GIF is in most cases a bad practice, and should be limited to certain technical cases where extreme size can be tolerated, a statement that the GIF image file format is limited to 256 colors is simply false.
I took a screenshot so interested people can see how badly images can be mangled by the proxies used by some mobile companies.
buddydvd says it’s slow in Safari because:
It’s actually more of a hack to deal with malformed GIFs and goes directly against spec. To address GIFs where each frame has a 0 frame delay, most GIF decoders implement a minimum frame delay value.
The workload of Apple retail store Genius Bars is scheduled for a huge increase later this year, after the company introduces a revamped AppleCare product that includes a longer list of iPhone, iPad and iPod problems that will repaired in-house. The changes will reportedly save the company $1 billion a year, but could also significantly lower customer satisfaction with time-consuming repairs, instead of being handled in five minutes with a swap-out.
The current swap policy is nice for those of us who don’t live near an Apple Store, but perhaps actual repairs will make addressing common hardware problems more affordable.
Henry Robinson (via Hacker News):
No subject appears to be more controversial to distributed systems engineers than the oft-quoted, oft-misunderstood CAP theorem. The purpose of this FAQ is to explain what is known about CAP, so as to help those new to the theorem get up to speed quickly, and to settle some common misconceptions or points of disagreement.
(Hat tip to my mentor Nancy Lynch, who proved the theorem.)
An anonymous Microsoft developer (via Romit Mehta):
Windows is indeed slower than other operating systems in many scenarios, and the gap is worsening. The cause of the problem is social. There’s almost none of the improvement for its own sake, for the sake of glory, that you see in the Linux world.
Granted, occasionally one sees naive people try to make things better. These people almost always fail. We can and do improve performance for specific scenarios that people with the ability to allocate resources believe impact business goals, but this work is Sisyphean. There’s no formal or informal program of systemic performance improvement. We started caring about security because pre-SP3 Windows XP was an existential threat to the business.
Maarten Billemont presents a framework for working around Core Data iCloud bugs (via CocoaPods):
While Apple portrays iCloud integration as trivial, the contrary is certainly true. Especially for Core Data, there are many caveats, side-effects and undocumented behaviors that need to be handled to get a reliable implementation.
Unfortunately, Apple also has a bunch of serious bugs left to work out in this area, which can sometimes lead to cloud stores that become desynced or even irreparably broken.
UbiquityStoreManagerhandles these situations as best as possible.
Friday, May 10, 2013
Spark Inspector for iOS apps (via Collin Allen):
Monitor your app and experiment in a way you never thought possible. Add our framework to your Xcode project, and the Spark Inspector will offer you an entirely new debugging perspective. With a three-dimensional view of your app’s interface and the ability to change view properties at runtime, Spark can help you craft the best apps on earth. Wiring your app together with notifications? Spark’s notification monitor shows you each NSNotification as it’s sent, complete with a stack trace, a list of recipients and invoked methods, and more. Understand app structure at a glance and debug smarter.
Thursday, May 9, 2013
Chris Miller’s ArgumentParser is an Objective-C replacement for getopt_long (via Romain Briche).
Dillan Laughlin shows how to use a URL scheme and a private pasteboard to send data from one iOS app to another.
Wednesday, May 8, 2013
Peter Nixey (via John Siracusa):
To be honest, I got a little confused at this point. Have I transferred them into iPhoto? I’m not sure I’ll check the photostream - ack, no, I remember you told me to delete photos off my photostream because there were too many. Hmmm, check the camera roll again. Hang on a minute - where are my videos?! Turns out photostreams don’t stream videos. Man, these things are not cool.
I didn’t realize how confusing Photo Stream could be until I tried explaining it to a friend. The mental model is so different from the rest of iCloud.
The new editor, codenamed ‘iD’, boasts an intuitive interface and clear walk-throughs that make editing much easier for new mappers. By lowering the barrier to contributions, we believe that more people can contribute their local knowledge to the map – the crucial factor that sets OSM apart from closed-source commercial maps.
Steven Hoober (via Lukas Mathis):
Text links are far too small to accurately target them. Some modern operating systems and browsers such as Google Chrome attempt to solve this problem by zooming in on small, ambiguous targets, to offer suitably large tappable areas.
Monday, May 6, 2013
Joe Damato (via David Smith):
And so,
MAP_32BITwill remain. A misnamed, strange looking wart that will probably be around forever to remind us that computers are hard.
While we are not planning further feature development for Fireworks, we will continue to sell Fireworks CS6 as well as make it available as part of the Creative Cloud. We will provide security updates as necessary and may provide bug fixes. We plan to update Fireworks to support the next major releases of both Mac OS X and Windows.
Apparently, this all has to do with a feature called “content controls” that was introduced in Word 2007 for Windows. Evidently, this feature was never introduced in the Mac version of Word, but Word for OS X has to be able to open and display Word documents created in Windows. Since these Word documents can contain such “content controls” but Word for OS X does not have a “content controls” feature, what does the MacBU do? It just pretends that the feature does not exist and displays content controls as regular text.
But of course if you start interacting with such text, you end up encountering issues such as the one I experienced the other day.
I like the design of Yahoo’s new weather app. It combines photos from Flickr with easy access to hourly and daily forecasts (more days than Check the Weather), plus a narrative forecast with information about precipitation and wind. Unfortunately, it’s often unable to connect to the server and gets stuck showing stale data.
Sunday, May 5, 2013
You may find yourself needing to install Xcode 3 on Mountain Lion. I did. Perhaps you need the Mac OS X 10.6 SDK. Perhaps you need to build PowerPC code. Or perhaps you just hate the Xcode 4 GUI. In any case, the Xcode 3 installer won’t allow you to install on Mountain Lion, and even if you force it with the environment variable
COMMAND_LINE_INSTALL, your Mac will kernel panic on the next boot, because Xcode 3 installs some kernel extensions that are not compatible with Mountain Lion.
Friday, May 3, 2013
Tom Harrington introduces momcom (the counterpart to momdec):
After writing momdec I realized I could probably compile models as well as decompile them. So, I wrote some code to do so. Twitter comments by John “Wolf” Rentzsch about how hard it might be may have spurred me on a bit. The code also fixes a bug I found in Xcode’s model compiler (rdar://problem/13677527 and http://openradar.appspot.com/radar?id=2948402).
Vincent Gable links to this great tip:
The condition will ignore any private Core Data exceptions (as determined by the class name being prefixed by _NSCoreData) that are used for control flow.
A brand new UI, non destructive filters and layer styles merged together in one great bag of awesome, curves, much improved vector tools, and speed. And that’s just some of the big stuff. There’s a ton of little things which when added all together make Acorn feel and work better than it ever has.
Update (2013-05-11): Gus Mueller:
I could set the release to May 3rd, and then when I was ready I could just push the release date back to May 1st! Since May 1st was already here (and gone in some time zones) Acorn 4 would roll out everywhere at the same time, which was exactly what I wanted.
Wednesday, May 1, 2013
A calculator isn’t necessarily the best tool for complicated analyses, but sometimes it’s the best tool that’s readily available. Because PCalc is in my phone, its capabilities—whatever they are—are always with me. The addition of user-defined functions allows me to do calculations away from my desk that I couldn’t do before.
Briefs is meant for iOS designers and developers who, before handing image assets over to Xcode to start writing code, want to see whether their app idea is feasible in terms of design and user experience. Essentially, if design is Stage 1.0 of a development process and coding is Stage 2.0, Briefs is the 1.5 step in between. Briefs is a powerful tool for professionals who aren’t afraid of working with a Photoshop-like UI to connect image assets, distribute animations, transitions, and more.
The original setup for Briefs circa 2009 was to hand-write a script in a text editor, then package that script with a few images and find a way to get it onto the device to play in the Briefs iPhone app. In hindsight it wasn’t a good process and it was confusing. But most importantly it threw up red flags at Apple because they thought it was a programming language.
Briefs is now a Mac application that allows you to build briefs visually, the way designers and non-developer humans want to work. Then when you’re ready to see it on the device, you push the resulting document (called a brief) to Briefscase, our free iOS app.
Tuesday, April 30, 2013
Auto Layout Shorthand is a poor man’s DSL wedged into a normal Objective-C dictionary literal.
Each key-value pair contains enough information to create one NSLayoutConstraint. This stands in contrast to [the Visual Format Language], where one string can be used to generate multiple constraints.
I like how you don’t have to put your variable names into a string or use NSDictionaryOfVariableBindings().
Friday, April 26, 2013
Brian Greenstone’s book is now available as a free PDF download (via Peter Hosey). I remember enjoying it when it came out around the Panther timeframe. There’s probably still some relevant information in it, amidst reference to CHUD, Shark, Sherlock, and the old QuickTime APIs.
BitTorrent Sync is a Dropbox-like app that syncs a folder between distributed peers, rather than using a central cloud server. It supports shared folders with read-only as well as read-write permissions.
Update (2013-05-02): Unfortunately, it doesn’t sync extended attributes (xattrs) or Mac metadata.
Wednesday, April 24, 2013
For views where the amount of time it takes to create them is crucial (like the contents of table view & collection view cells, paging views, etc.) you have to keep the view hierarchy very simple and closely watch the performance impact of Auto Layout. In these cases it might be worthwhile to try disabling Auto Layout before you go straight to drawing everything manually with Core Graphics.
Tuesday, April 23, 2013
RFC 6920 (via Manuel Simoni):
This document defines a set of ways to identify a thing (a digital object in this case) using the output from a hash function. It specifies a new URI scheme for this purpose, a way to map these to HTTP URLs, and binary and human-speakable formats for these names. The various formats are designed to support, but not require, a strong link to the referenced object, such that the referenced object may be authenticated to the same degree as the reference to it. The reason for this work is to standardise current uses of hash outputs in URLs and to support new information-centric applications and other uses of hash outputs in protocols.
So, the next time you’re seeing general slowness on your Mac, don’t forget to give Launch Services a kick in the pants. Guaranteed to be more effective than zapping your PRAM.
The current command is:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -seed -r
If you don’t remember the latest path to lsregister, Rich Siegel recommends using locate (although that requires that the locate.database be in order).
Perhaps more damningly, it’s particularly difficult to compose NSFastEnumeration, e.g. to produce objects based on the enumeration of some other object, as with a map, or worse, a convolution function (e.g. zip, zipWith).
This led me to decide that NSFastEnumeration is not the correct interface for these tasks […] Therefore I set about designing a better interface for lazy evaluation […]
This is really exciting work.