I was setting up a project with one submodule on my working iMac and was wondering how to do this most quickly. After tweeting the approach I had found, there where quickly some very smart people responding on how to do that better. I found this kind of crowd-sourced incremental improvement exhilarating, so I’m sharing it with you.
State of our iOS Nation
I just returned from my visit to San Francisco, where I helped Scribd on iOS-related matters. I’m sitting in a quiet restaurant near the railway half way between Vienna and Salzburg. There I’m awaiting the arrival of somebody I’m coaching, again related to iOS development. I find this to be a nice diversion from coding hours on end, and it’s especially welcome being throughly jetlagged. Flying east is said to be especially tiresome.
Too many Developers …
I consider it a good omen. After having touched down in Vienna, I boarded a train to where I live, 2 hours from Vienna. The next day, when I opened my laptop to start dealing with a large backlog of e-mails, I found that Apple has finally decided to start selling WWDC tickets. We think they had like 5000 seats available, which – after having removed all discounting options last year – where sold for $1600 a pop. Not too shabby, that’s like 8 Million Dollars made. More for Steve’s treasure chest, Apple has been sitting on a pile of cash assets for the longest time.
How Safe is Square?
Innovative startup Square continues to make waves with their app and reader combo that enables small-time businesses to access payment with credit cards. Imagine somebody with a camping table and self-made T-Shirts selling these on the street. For example I would have loved a T-Shirt to commemorate 2 weeks of iPad2 queues saying “I queued for iPad 2, but all I got is this lousy T-Shirt”. Without hesitation my Mastercard would have jumped out of my wallet to make love to a Square reader and app.
But then there are the established companies which feel threatened by Square. First and foremost VeriFone, a company that apparently seems to see themselves as the sole owner of the market for processing payment information. This is evidenced by the statements made on their website. Take for example their SEO-friendly site title: “VeriFone Official Site | Secure payment solutions for credit & debit cards, EMV, contactless, & NFC”. They have vested interests in technologies that require you to purchase their products.
Let’s have a closer look what’s behind this rivalry and also investigate if there really is a gaping security hole in Square’s approach as VeriFone claims.
Expanding/Collapsing TableView Sections
While giving many designers a headache the Twitter app still serves as template on how to solve a variety of UX riddles. One of which is the situation where one might want to have sections in a tableview that possess the ability to expand from one row to several and collapse vice versa.
The eye of the experienced developer sees two challenges contained therein: 1) grafting a mechanism for collapsing and expanding onto UITableView in a reusable way 2) making custom accessory views that look like a rotated version of the disclosure indicator, pointing upwards or downwards and also changing color when highlighted.
In this article I present my solution to this UX riddle. At the same time I will demonstrate how NSMutableIndexSet can be used to our advantage. In contrast to the pull-to-reload method previously discussed, this does not contain anything remotely patentable.
Update March 12th, 2013: Cleaned up version of the custom-colored accessory is now available via DTFoundation, the example project is now part of our Examples collection on GitHub. Please note that if you use this code you have to attribute it to us or buy a Non-Attribution License.
On Meeting Other Developers
Everywhere I travel I generally try to find some local meetup of iOS developers to hook up with. Let me be honest, admittedly, one of the reasons why I like to do this is that often developers would mention in passing that they have heard about my blog or know me from following me on twitter. One word: ego.
But this is not the sole reason for this interest. I am possessed by the idea that if developers in any field – iOS in my case – would organize and socialize more then the resulting network of knowledge and opportunities would generally benefit everybody. I might tend to extremes, here I am working out of my home office for the most part talking about the greatness of a social network.
Git Submodules and Xcode 4
Previously when integrating existing library code with new projects I would have simply copied the necessary groups from from Xcode project to another. Then I would choose to copy the files to the new project to be sure that they got included in the source tree. Otherwise the project would not build for other people accessing the same source control management (SCM) server.
Now with Xcode 4 this technique no longer works. You simply cannot drag groups between workspaces. The question that interests us today is how we can add an existing GitHub project to our own.
Let’s see if we can figure out a simple and duplicatable method to achieving this. It would make our lives much easier to not having to duplicate component code for each new project.
Visiting Apple
A trip to San Francisco is incomplete if you are not paying a visit (and your respects) to the Apple Campus as 1 Infinite Loop, Cupertino. It is situated next to an exit of the 280 freeway but far away from any other sensible public transportation. So a car is a must.
I was lucky to have my colleague Sam rent a ZipCar for the trip and drive me out there, i.e. from Downtown San Francisco to Cupertino which is at southern base of the peninsula. Apple employees have shuttles swarming all around the SF area, but we pedestrians have to either rent a car or find somebody who is willing to drive us.
Apparently several Apple employee follow me on twitter and take notice of my quibbling. So I was quite excited to be invited for lunch on the campus. The Cafeteria “CafĂ© Mac” is about the most amazing food court I’ve ever seen. Outside they where making fresh Pizza, inside you’d find Pasta Sushi, fully customizable Buritos, ice cream and many more choices which I did not take notice of, because I immediately settled on Buritos.
San Francisco, here I come!
I’ve been hired by scribd to help jumpstart one of their iOS-related projects. That means I’ll soon grab my bags and hop onto a train that brings me to Vienna from where my plane leaves early morning Saturday, March 12th. I will be flying via London Heathrow to San Francisco where two busy work weeks are awaiting me.
I am mentioning this for some reasons, obvious and less obvious ones. Of course I like to gloat a bit, but I am also mentioning my trip because it might cause extensive delays when responding to your e-mails.
Just how does one land such a gig? I can only assume that my online activities and networking have played a role. This includes my educational articles from which people might deduct that I am serious about Cocoa. It also includes my open source projects, one might think that CoreText might be one of the technologies that scribd has a vested interest in.
Accessing the iOS System Log
Peter Reinhardt asks:
The app AppSwitch displays the console entries from NSLog logging in the iphone app. I tried to figure out how they do it but couldnt find an API. Do you have an idea?
Intriguing question! My first gut reaction was that the guys from AppSwitch must have some magic sauce as I didn’t know of a way to access the console log on device like the Xcode organizer is able to. My first response was that probably they are doing some stderr bending as is possible with c++. But then I bought the app to see their trick with my own eyes.
In this blog post I’ll show you how that’s done.
JSON versus PLIST, the Ultimate Showdown
Communicating with web services you have to decide on a way to transport the date back and forth. Recently – with the help of the popular Twitter-API – JSON seems to have come ahead in the race. Other contenders are property lists and XML. Property Lists (PLISTs) are available in XML-Text and a binary (“old”) format and are widely supported in the Apple APIs which makes them a joy to work with.
JSON files on the other hand are easy to be generated server-side as they are basically just concatenated text, much less verbose than pure XML. The binary alternative might also be a contender when it comes to performance in transmission and parsing, provided some component is installed on the server to generate them.
In this blog article we are trying to answer the question once and for all what you should use in your own apps.