Posts tagged mac
What we're up to in 2015 (so far!)
Swift Development with Cocoa, new from Secret Lab.

Swift Development with Cocoa, new from Secret Lab.

Swift Development with Cocoa

The new year started off with the official launch of our latest book (co-authored with Tim Nugent): Swift Development with Cocoa.

It covers everything an existing programmer needs to know to build OS X and iOS apps with Apple's new programming language, Swift. You can buy it at O'Reilly, Amazon, as well as many other reputable book sellers.

Ultimate Swift Programming 

We also released, through O'Reilly and again working with Tim Nugent, a 12-hour video tutorial on Swift and Cocoa programming for OS X and iOS: Ultimate Swift Programming: Language, Frameworks, Tools. It's an excellent learning resource on its own, but it also serves as a great accompaniment for the book. It's available at O'Reilly.


Video production command centre, during webcasts.

On top of making pre-recorded videos (Hobart has been a hive of video production and post-production!), we also did two live webcasts for O'Reilly: one on Five Swift Essentials, and one on Building a game in under an hour with UnityThese were recorded and broadcast on Tuesday, 11 February 2015/Wednesday, 12 February 2015 (depending on your timezone), and by all accounts were a great success. Both webcasts were recorded, and the videos are available in their original format via the links above. We'll also post the code and notes right here when it's ready (in a day or two).

New Books

We're working on five more books at the moment (yes, we're possibly insane), and we'll be announcing them very soon. Stay tuned for news! 

New Games

There are three games we're currently working on: Button Squid, Rocket Box, and Gnome's Well That Ends Well. Our local newspaper featured us recently as well, talking to us about our games.

Button Squid, our squid-themed puzzle game is in development, and you can follow it on the Button Squid Tumblr and on Twitter @ButtonSquid. There's also a teaser site at

Rocket Box, a working title, is our economic space empire building game, and you can follow it on the Rocket Box Tumblr, and on Twitter @RocketBoxGame.

And finally, Gnome's Well That Ends Well, a puzzle game featuring gnome dismemberment, which you can follow on Twitter @GnomesWell, and the Secret Lab Tumblr.

Webcasts – Swift and Unity

These webcasts have both happened already! We'll be posting the content here within 24-48 hours! Thanks for watching!

We're doing two webcasts with O'Reilly Media in the coming week. They're both free and the content we cover is a lot of fun. They are:

Both webcasts are free, and you can register for them via the links above. We'd love to see you there! 

iOS development conferences!

YOW! Connected

We just got back from speaking at the YOW! Connected mobile and Internet of Things conference in Melbourne – it was lots of fun (and a nice successor to Swipe Conference, which we spoke at both years that it ran).

We presented two, completely different, sessions:

  • How to build games for children – on the design and production of mobile games for younger children
  • Building iOS apps for IoT devices: a case study of the Holiday by MooresCloud

The slides from the IoT talk are available on SpeakerDeck now, and the games for children talk will be available soon.

We'll definitely be at YOW! Connected near year – it was awesome!


Up next for us is /dev/world/2014 – Australia's oldest iOS and Mac developer conference. We're helping to organise /dev/world this year, and it's shaping up to be bigger and better than ever! It's happening later this month: September 29 and 30, in Melbourne.

We've announced three great feature presentations:

We've also announced many fantastic speakers, including people from Google, CanvaAccessibilityOzAppbotReckoner, Fairfax, and Shiny Things, amongst many others!

There will be workshops on the use of Xcode for development, as well as one on Swift, Apple's new language (we're running that one!)

As we said in our previous blog post, Secret Lab wouldn't exist without /dev/world – we've been attending since 2008, and it's part of what helped us build a company and learnt to design and create great software. 

If you're in the developer community, and you're interested in iOS, Mac, Swift, or game or app development in general, you don't want to miss this conference.


We're very excited that one of our favourite conferences, /dev/world, is running for the 7th time this year. Three feature presentations – Marc Edwards of Bjango, Tom Greenaway of Kumobius, and the inimitable Paul Fenwick – have already been announced, and tickets are currently available.

Check it out at – it runs in Melbourne, Australia on September 29 and 30 this year.

/dev/world is run by the AUC – a wonderful organisation that gave us an enormous boost when we were getting started. Secret Lab would not exist without them. /dev/world/2014 is open to everyone, and if you're in the iOS or Mac developer community we can't recommend it more highly.

We'll be speaking, as well!

Swift Playground

Updated 12 September 2014: The playground is now updated for Xcode 6.0 GM! We'll be running a workshop on Swift at /dev/world/2014 as well, if you want to learn more!

We've been spending the last week learning Swift, Apple's new programming language. So far we're very impressed! We put together a playground to test out, showcase, and learn the new language and syntax. We thought it might be useful, so we've put it up on our GitHub

Let us know what you think! If you'd like to learn more about Swift, iOS programming, and even Objective-C (which you should still learn, in our opinion), check out our training!

Don't forget to check out our brief thoughts on WWDC 2014 as well.

Thoughts on WWDC14

Some quick thoughts from Secret Lab on the mind-blowing collection of WWDC 2014 announcements from Apple.

OS X Yosemite

Pretty! Made simpler. Not super sold on translucency, though.

Handoffs and Continuity is awesome. Will be super useful. Devs get access to this too. Reminds us of the excellent “Send to Chrome” feature in Android. Only really polished.

iOS 8

Not a huge amount of new stuff, visuals wise; however, there are some awesome behind the scenes changes.

Custom Actions, Photo Editing, Sharing Options can all be provided by apps. You can make your app provide services to other apps. This is AWESOME - it’s going to make the app ecosystem quite a bit richer.

Android’s had this for some time, and it’s great to see it in iOS.

The ability to put widgets in the notification center is also great, lots of devs are going to make some great stuff with this.

Being able to share documents between apps without having to copy them is going to be Super Nifty. This has been a real weakness of iOS until now.


WOW. Apple developed an entire language, wrote all the docs, and wrote all the supporting tools for it, without it leaking. This is really impressive.Can’t wait to use this.

The language is very modern. Its syntax feels like a mashup of Python, Haskell and Ruby.

Interoperation with Obj-C is rather nicely handled. They’ve directly translated ObjC’s arguments-are-embedded-into-method names approach into named parameters. The goal was clearly to make it as painless as possible to work with both languages in a single project.

Something that’s interesting is it’s completely opposed to Objective-C’s way of doing things is that, while ObjC allows sending messages to nil (thereby making it safe to not have to do null checks), Swift instead guarantees that all values that are not Optionals are non-null. Optionals are a very cool feature: in other languages, the concept of “nothing” is usually represented by a special value (for example, Lua’s ‘nil’ value), or by convention (for example, in C, the value 0 means ‘nothing’). This creates its own problems; if you use a special value, comparing it to other objects means you have to do type conversions, and if you instead use the convention of zero meaning null, you have to do checks. Objective-C goes some of the way towards helping with this: it defines ‘nil’ as a special value that’s represented a zero pointer, but calling methods on it is safe because the runtime automatically returns if it notices you’re trying to call methods on nil.

This is nicer than crashing, but it can lead to problems, since if an object you’re trying to work with is unexpectedly nil, you’ll get bugs. Not crashing bugs, but weird behaviour bugs.

The Optionals system is nicer. In Swift, a value is either guaranteed to be a valid one, or else is explicitly known to sometimes be nil.

For example: if you’re converting strings to integers, your code looks like this:

let theString = "123"

let theInt = theString.toInt()

In most languages, the ‘toInt()’ method would return a value that represents ‘not valid’, such as 0. But in Swift, it returns an optional int - that is, a value that MIGHT represent nothing, but if it doesn’t represent nothing, then it’s GUARANTEED to be an integer and nothing else.

This makes things quite a bit safer, since the compiler’s able to do more checking, and is able to reason about your code better.

Swift is filled with this kind of thing. Another example: in C and similar langauges, the assignment operator (=) returns a value, like this:

a = b = 3 // sets both a and b to 3

In Swift, that doesn’t apply. This means that the following is actually a compiler error (it’s just a warning in ObjC):

if x = y {


We’re not huge fans of the range operators: a...b means “range from a to b, including b” and a..b means “range from a to b, not including b”. Notice that they only differ by a single period. That’s going to lead to bugs, due to typos.

The mutability of variables depends on whether or not the variable is declared as a constant or not. This is nicer than Objective-C, which has two different classes for each type based on whether it’s mutable or not (ie NSString vs NSMutableString)

This only applies to strings, arrays, dictionaries, and other low-level things. We’re still going to be stuck with NSURL vs NSMutableURL for a while.

Playground is super cool. Reminds us of IPython, in that you can figure out your code without it having to be run inside a larger app. This is going to make development a lot faster.

App Store

Being able to show videos and make app bundles (with discount) is going to be neat. Not a huge game changer for us, but any increase in app store functionality is good.