Archive for April 26, 2014

Saturday, April 26, 2014

comiXology Removes In-App Purchase

comiXology (recently purchased by Amazon):

We have introduced a new comiXology iPhone and iPad Comics App and are retiring the old one. iPhone and iPad users will now buy comics on and download to the app.

In other words, they don’t want to give Apple 30%, which means that by the rules of the App Store there can be no purchasing within the app at all. The Google Play version does allow purchasing within the app, without giving Google a cut, since Google allows that. But then you presumably have to enter your credit card information in the app or store it on their Web site. I still think it would be to Apple’s long-term advantage to offer much cheaper payment processing. Apple would still make money, and the user experience would be better.

Update (2014-04-28): Gerry Conway:

By forcing readers to leave the app and go searching the Comixology website, add books to a cart, process the cart, return to the app, activate download, and wait for their purchases to appear, Comixology has replaced what was a quick, simple, intuitive impulse purchase experience with a cumbersome multi-step process that will provide multiple opportunities along the path for the casual reader to think twice and decide, ah, never mind, I don’t really want to try that new book after all. I’ll stick with what I know. Or worse, when a new casual reader opens the Comixology app for the first time and sees that THERE ARE NO COMICS THERE, and that he or she will have to exit the app and go somewhere else and sign up for a new account, maybe he or she won’t bother buying a comic in the first place.

He thinks this is about about advancing the Kindle platform rather than Apple’s 30%. I don’t think this argument makes much sense economically or strategically. Amazon is in the content business.

Update (2014-04-29): Moises Chiullan:

By purchasing ComiXology what was previously ComiXology’s “piece of the pie” is now Amazon’s. That piece grows, but the publisher’s portion also grows, and therefore the amount that can be paid out to creators is larger. I asked ComiXology’s Mosher directly: Will the reduced overhead mean that more revenue can and will go to creators, whether they’re big-time publishers or independent creators? “Yes,” he said.

Update (2014-05-12): I really enjoyed John Siracusa’s take on this issue.

Data Munging With Perl

Dave Cross has made his out-of-print book available as a free PDF download:

Your desktop dictionary may not include it, but ‘munging’ is a common term in the programmer’s world. Many computing tasks require taking data from one computer system, manipulating it in some way, and passing it to another. Munging can mean manipulating raw data to achieve a final form. It can mean parsing or filtering data, or the many steps required for data recognition. Or it can be something as simple as converting hours worked plus pay rates into a salary cheque.

This book shows you how to process data productively with Perl. It discusses general munging techniques and how to think about data munging problems. You will learn how to decouple the various stages of munging programs, how to design data structures, how to emulate the Unix filter model, etc. If you need to work with complex data formats it will teach you how to do that and also how to build your own tools to process these formats. The book includes detailed techniques for processing HTML and XML. And, it shows you how to build your own parsers to process data of arbitrary complexity.

Unit Testing Asynchronous Cocoa

Drew McCormack:

There are two aspects to testing an asynchronous task that you need to consider. The first is that the unit test method should not return until the asynchronous task has fully completed; otherwise, the test will terminate prematurely. The second, which relates only to unit tests of Cocoa code, is to keep the main run loop turning over. Without the run loop, functionality such as networking and timers will not work.

The way I run asynchronous operations in unit tests for Ensembles is to include two methods in the test class. The first starts the run loop, and does not return until the run loop is stopped.

Google to End Forced G+ Integration

Ron Amadeo:

In short, Google seems to be backing away from the original Google+ strategy. The report states that Google+ will no longer be considered a product that competes with Facebook and Twitter, and that Google’s mission to force Google+ into every product will end. With this downgrade in importance comes a downgrade in resources. TechCrunch claims that 1000-1200 employees—many of which formed the core of Google+—will be moved to other divisions. Google Hangouts will supposedly be moved to Android, and the Google+ photos team is “likely” to follow. “Basically, talent will be shifting away from the Google+ kingdom and towards Android as a platform,” the report said. The strange part is that both of these teams create cross-platform products. So if the report is true, there will be a group inside the Android team making iOS and Web apps, which doesn’t seem like the best fit.

Git vs. Mercurial vs. Bazaar vs. Etc.

Fred McCann:

I think the big eye opener here is that Subversion is still the big dog in town, and there’s still a good chunk of CVS users. Granted, no one survey or tool will paint a completely accurate picture of the VCS landscape. If we had a truly complete sample, I would assume “No Version Control” would be the largest slice of the pie.

Mapping XML to Objects With NSXMLParser

Justin Driscoll:

The XMLObjectMapper class acts as our NSXMLParser delegate. It’s responsible for setting up the parser and responding to events. It also handles accumulating text and maintaining two stacks, one for elements and one for objects. These two stacks are the heart of this solution. When the parser starts a new element the mapper adds that element to the end of the elements stack and then asks its delegate what, if any, object that element maps to. The delegate then returns either a new object or the current object which is pushed onto the end of the objects stack. When an element ends, the object at the end of the stack is passed the text contents of the element (if any) and then both the element and the object are popped off the end.

Fast Lanes

Marco Arment:

The New York Times published an article yesterday entitled, “F.C.C., in a Shift, Backs Fast Lanes for Web Traffic”. Pay careful attention to the ISP-friendly political marketing language being used.


This language was carefully constructed to sound like a positive, additive move: It’s building, not destroying or restricting. They want to offer faster service, not reduce the speed or priority of all existing traffic. Who could possibly be against that?

Nick Heer:

It’s already extremely expensive for companies to deliver content to end users as quickly as possible. Many companies elect to pay for content delivery networks, like Akamai or Amazon, to bring content closer to end users by mirroring data around the world in huge server arrays. Other companies — like Apple, Google, and Facebook — simply elect to build their own data centres. Now the FCC wants to mandate an additional implicit penalty on companies that cannot afford additional costs to ISPs.

Netflix (via John Gruber):

For a content company such as Netflix, paying an ISP like Comcast for interconnection is not the same as paying for Internet transit. Transit networks like Level3, XO, Cogent and Tata perform two important services: (1) they carry traffic over long distances and (2) they provide access to every network on the global Internet. When Netflix connects directly to the Comcast network, Comcast is not providing either of the services typically provided by transit networks.

Comcast does not carry Netflix traffic over long distances. Netflix is itself shouldering the costs and performing the transport function for which it used to pay transit providers. Netflix connects to Comcast in locations all over the U.S., and has offered to connect in as many locations as Comcast desires. So Netflix is moving Netflix content long distances, not Comcast.

Comcast (via John Gruber):

Comcast has a multiplicity of other agreements just like the one Netflix approached us to negotiate, and so has every other Internet service provider for the last two decades. And those agreements have not harmed consumers or increased costs for content providers – if anything, they have decreased the costs those providers would have paid to others.

Peter Kafka:

Comcast has upped the ante by accusing Netflix of something extraordinary: The cable company says the video company sabotaged its own streams prior to the transit deal the two companies reached earlier this year.