My 12 Step Guide to Becoming an iOS Developer

First: Learn Swift and iOS Development. Use iTunes U and watch the Stanford courses. Casually mention to friends you’re learning online in a Stanford course. Don’t use traditional courses.


Second: Buy a MacBook Pro for $4000 and an iPhone X for $2000. It’s ridiculous, but you tell yourself and your partner “its for work”


Third:  Start a blog. Write posts with examples of the swift language guidelines.  Call Core plus your name. If your name is one syllable, or usually shortened it, lengthen it until at least two syllables appear. Use a .app or .me top level domain name. 


Fourth:  Get on twitter. Follow these people* (and me :P) and start replying to them. For your bio, say you are the principle iOS lead at a small agency.

Screen Shot 2018-08-28 at 10.24.35 AM-467.png

Fifth: Start a small agency. Use “boutique” to describe yourself and get a desk at WeWork. Build websites with Squarespace until you know how to build apps. Write an app for large company with your agency. Convince them to enter it in in an obscure award in their field. Win that award. 


Sixth: Start a iOS development podcast. Form a panel of yourself and other iOS developer developers to discuss iOS development. As for a name, go with a horrible code reference to Cocoa, like Conversation.shared or iOSDevTips:atIndexPath:. Discuss your favourite open source projects by reading the first paragraph of their GitHub READMEs. The trick here is to make it about yourself, and add no value to your 7 listeners. Advertise mattresses. 


Seventh: Form an opinion on these things. The stronger the better. You’re an engineer, and that means going around with solutions already decided, ignoring the problem.

Screen Shot 2018-09-11 at 9.09.50 PM.png

Eighth: Pitch talks and go to conferences. Ask people what they do, even though you know its iOS development. Ask if they’re using Swift yet. Humble brag about using swift for so long with a phrase like “Oh, man, I remember it from the early days” or “Its been great to watch swift to change over the years”. Remember, the more you learned and then had to unlearn, the better iOS developer you are. Casually enquire if they use Fastlane.


Ninth: Join reddit and stack overflow Gain karma and rep by posting questions from r/iOSPrograming to stack overflow and questions from r/iOSprogramming to stack overflow. Follow up with cross posting answers. 

Screen Shot 2018-08-28 at 10.40.56 AM-712.png

Tenth: Start a newsletter. Make sure “Weekly” is in the name. Subscribe to other iOS newsletters and write a script to take a link from each of them for your newsletter. Email it to your 58 subscribers on Fridays. Advertise mattresses.

Screen Shot 2018-09-11 at 9.10.04 PM.png

Eleventh: Worry about your career. Are you creating a meaningful experience for potentially millions of people or are you just putting JSON on a screen? Why don’t you get to solve fun problems like worrying about auto-scaling clusters, message queues, no-sql databases and cloud services? Have a career crisis. Watch App: The Human Story. Feel better. 


Twelfth: Buy a 2007 WWDC Jacket off Ebay. Wear it. You were there. And people should know it. 

…And that is how you become an iOS Developer!  

*And some underrepresented folk too please.

This was a lightning talk given at /dev/world/ 2018, and you can find the recording here. If you’d like more geeky and niche comedy, follow me over on my twitter account - @samjarman. Talk inspired by Struthless.

Fun with Colour Harmonies in Swift

Hi All!

Recently I started getting back into Swift with a new role, and I thought I ought to practice some stuff with small side projects. 

At a similar time, I learned about Colour Harmonies. The theory is, given a colour, there are colours that perfectly match it. I've always really had a poor eye for creating colours that go together, so to find out there was a mathematical relationship between what two/three/four colours "Look good", I was very excited. 

As described in the link above, there are a few colour harmonies I wanted to be able to produce: Complementary, Analogous, Triadic, Square, Rectangular and Split-Complementary.

First up, I thought this was a perfect chance to use a Category, er, I mean Extension on UIColor. From here, each colour complement could be an instance property.  Cool. 

From there, I needed to do the math. 

From the looks of the diagram, the colours were represented in the HSV (Hue, Saturation, Value, Alpha) colour space, divided into groups of 12. So, I had to first convert the colour from RGB, which we use in UIKit to HSV. For convenience, there is actually a conversion API built into UIKit. They call it HSBA (Hue, Saturation, Brightness, Alpha).

Once converted, I learned the Hue was the angle around the circular colour wheel. 


So, from here I needed to just add on the angle desired (180 degrees for complementary for example) and then normalise the value to find the hue of the new colour. The remaining components would stay the same. Reconstruct the RGB value again, and then we have a colour. 
For the angles, I used multiples of 12ths, since the diagram I was looking at the time was using that, and then I coded each complement in terms of 1/12ths around the wheel. Easy enough. One could use 1-360 too though, of course.

The final extension is on my GitHub here. There is also a small sample app, which you can see in action below.

Final questions I have, maybe you know. Maybe you leave a comment or a pull request?

  • Is there a way I could have done this more Swiftier?
  • Could the code be more efficient?
  • Could stored properties, calculated properties be used more effectively here?

Thats all for now! Feel free to use in your projects via GitHub. There are almost certainly other libraries for this, and they're probably a better solution for you. I don't mind, I learned some stuff. Hope you did too looking at this post and the code.

Thanks for reading,


PS: I spell colour funny, yes, that's how we spell it here in New Zealand. Sorry.