Skip to main content

Posts

Xcode Snippets shared in the Cloud

If you are an iOS / MacOS developer who makes use of the snippets facility in Xcode you may occasionally find yourself caught out when working on a different Mac. This used to happen to me a lot in my contracting days. I have 10 years worth of snippets with auto completion keystrokes but on a Mac that doesn't belong to me they are worth nothing. There is a really simple solution that makes use of Apple's cloud infrastructure which allows the sharing of Xcode snippets between as many machines as you like. Here's how it's done. We will use the relatively low tech but insanely useful Symbolic Link approach, essentially moving our snippets to our own personal iCloud account, then creating a link, or signpost if you like, that Xcode will follow with no complaint, maintenance free once configured. The steps are easy to follow. be aware that Apple from time to time move where things live. So the snippets home today may not be where they live in 5 years from now, but I'm su...
Recent posts

Threads Up

Good User Interface / User eXperience practices are important. Hours of resources and research is dedicated to these subjects but sometimes the developer discovers an anomaly that has been missed in the planning. I came across this situation recently and contacted the relevant people to explain. They agreed with my suggestion and I implemented the change. Part of my development cycle is to test, test, and test again. And I tested my new code and all plausible possible situations. Tested for various targets. Tested on as many devices as possible. Released to UAT to test and got a code review from my line mentor. After all this the release build had a bug. In a nutshell when working with threading, be aware that there is a subtle difference between devices iPhone4 and iPhone4S. When creating an email on the device, if the process requires threading, do not create and display the MFMailComposeViewController object from within the thread. In the simulator set to all iOS ve...

Eggs, Ham, Hell

I like XML, I use it from time to time in the course of my job but find it's tag based structure clumsy to work with in comparison with other alternatives out there. Recently working with some OpenXML code I frequently had to check the validity and structure of XML coming in and XML I was writing to file. Normally I'd google search a free online XML Parser and check my code is valid. But for this recent task, the amount of XML that needed parsing was quite a lot. I decided to find a tool to compliment my text editor of choice TextWrangler . It turns out that my Mac already has probably the best lightweight XML validator, parser, and display formatter, namely xmllint . What's even better I discovered a way to use xmllint directly in TextWrangler . Xmllint ships out of the box with OS-X André Bergonse provides the method to connect TextWrangler to xmllint and process one's XML with a few key presses. So if you use TextWrangler and have a need to work with XML, you...

Version Diversions

As a contractor I have to be light on my toes when it comes to using my own equipment and maintaining the ability to develop to the correct target version. Apple have recently made this a bit harder for the likes of me with the introduction of Xcode 4.5 (now at 4.5.2) The issue is - from Xcode 4.5, Apple dropped support for older devices that have the Arm processers Arm6. No big deal you may think. But a lot of my clients have clients that denote the minimum target iOS version to build for. This can cause problems and to compound things some directives specify iOS versions that are a) No longer supported by Apple, b) Have no device (both simulator nor handset) to test on. They are now starting to ask about updating their apps for the iPhone 5 resolution. It's hard to tell them that because of their target iOS, this can only be achieved by developing blindly relying on provisioning for device testing and the associated increase in development (known as cost) or increasing the ...

Terrible Implementation Of A Very Poor Idea

I have just come across this post on Network World detailing a response to an anti piracy effort implemented by Enfour that glitched and started to 'self confess' users via twitter that they were using a pirated app. What an awful way to try and become King Canute and stop the waves of something unstoppable. Hopefully the humor generated by this folly will mean the victims will be a tad sympathetic to the red faced 'family run' business. Lessons for all I think.

Trains, Trains, and Automotrains

I have been looking for a new contract as my last one ended at the end of November. Happily today I was made an offer to join Network Rail for three months as a senior iOS developer. This segues neatly from my last role which was for a company maintaining the Trainline.com's iOS app. I'm I being typecast here? Who knows, just very grateful to be joining another huge company to gain greater experience.

I'm out of prison!

Actually I haven't been to prison I have been very busy working every hour I can in iOS development. I am now a iOS contractor with over 2 years experience under my belt and enjoying every minute of it.  I have decided to return to this blog and start sharing again the things I come across on my day to day travels.

It's About Time

This weekend I have been putting the finishing touches to a bug fix. The bug arose from the fact that IOS 4 treats time differently to IOS 3.2 in some instances. I have an app out that automagically downloads an RSS feed of articles. The app was developed and tested to work with at least IOS 3.2. This was based on the ideal of producing apps that are available and work with the older versions of the Apple operating systems to allow device owners who don't have the capabilities to update their software often to obtain and run our apps. A bad decision for two reasons. Reason one: The majority of device owners are quick to update their software as shown in the statistics I found in this article from Cocoanetics . According to Marco Arment, as of March 2011, the statistics for devices running 4.0 and above is 98.2% and devices running less than 4.0 = 1.8 % Therefore putting in the extra work to ensure apps work on older O/S's to cater for a relatively very small amount of d...