iOSDevUK 2017

iOSDevUK is a conference for iOS developers that takes place at the Aberystwyth university campus in Wales (You get to be a student again).  It is a 4 day event which features talks on the latest iOS frameworks, best practices and ends with a 10 hour hackathon.  Sadly Andrew (iOS developer from Priority) and I could not attend the Hackathon.

The event was less hands on than previous developer events like iOSConf which was a shame but we still got to learn about some of the latest iOS 11 frameworks like:


This is Apple’s augmented reality framework which looks really impressive.  We have been waiting for Apple to do something in the AR space since they brought Metaio in 2015.  With the new iPhones having 2 back facing cameras to allow the device to detect depth, the mapping of virtual objects to real life objects has become very accurate.  In the workshop we saw how to place space invaders ships in the real world.


CoreML is Apple’s machine learning framework which allows you to take your algorithms from other platforms and use them on your iOS device.  You can’t actually generate your model on the device but you can import it from many different tools (Caffe, SciKit, Kera) and it will run on the device hardware accelerated. The main aim of this talk was to clarify what CoreML’s abilities were as there was a lot of confusion when Apple announced it


So with iOS 11, you’re going to get a file system, like you do in Windows etc.  This workshop showed how you could make your own cloud service like Dropbox and integrate it into iOS11.  This was one of the only talks in ObjectiveC rather than Swift.

ServerSide Swift

This talk went over 3 apps that the company had made using ServerSide Swift which included a SlackBot, a CI tool and an Alexa tool, however the presenter did say that server side swift was far from production ready which was a little bit of a let down.  They suggested the best way to get started with it was to use Docker.

There were a few talks on Design patterns and where to use which ones like VIPER, MVVM, MVP etc.  VIPER seems to becoming popular if your iOS app is very big.  

There were a few talks on the whole pipeline of testing and releasing builds using Unittest, UI test, Jenkin’s, Fastlane and GitHub issues however it was only a overview and not actually how to go about setting it up




iOSConf 2017

iOSCon 2017

iOSCon is a 2 conference in London for people interested in iOS development and the Swift programming language.  I got the chance to attend with a few people from Digital Products who work on our apps like MyO2, O2 Drive and Priority.   I was rather looking forward to going as I have had my feet out of the iOS development circle for a while.  Working in the Lab requires you to jump around from technology to technology, each project could be written in a completely different programming language, tool or involve no coding at tall.

The conference covered things like:

  • New design patterns / ways to architect your app (VIPER, VIP and Clean to Flux, Redux and Reactive, POP)
  • Better ways to do API calls(Protocol Buffers and GraphQL) ,
  • How to get started in functional reactive programming,
  • Better ways to do Test Driven Development (some people call it Test Driven Design) by using Swift Playgrounds.
  • A few talks on accessibility and how to debug it.

What was interesting about this conference compared to others was the focus on behind the scenes stuff.  Previous conferences I had attended featured a lot of talks on UI, user experience, building custom controls etc.  This conference focused on making your code more stable, structured and easier to test.

You can find most of the talks here for free:

Here are 2 talks I really enjoyed:

It’s about time by Daniel Steinberg

This was a rather hard hitting talk about striking the right balance between work and home life.  He focuses on things like, either work or relax, don’t try to mix them, don’t go home and think of work. He tries to get you to focus on why you’re doing something, not the what your doing.  He also covered planning your day better and how interruptions cost you.  Every time someone bothers you for a minute, it takes 23 minutes to recover, even if it’s you who caused the interruption.

If you’re interested in watching the talk, check the link below, warning it may make you rethink things a bit.

The second talk I really enjoyed was

Natural Swift: write Swift the way it was meant to be written by Paul Hudson

The talk focuses on 3 topics which together can really help you improve your code.  The first is POP (Protocol oriented Programming), the second is Functional Programming which focused on the map, flatmap, filter and reduce commands.  These really impressed me because they can do in 1 line of code, what I would usually do in 5.  The last topic he covered was value types,  ObjectiveC is very different to Swift and you need to know what is a value type and what’s a reference type.

Sadly this talk was not filmed by Skillscast however you can download it for free from

WWDC 2015 Keynote highlights

This years WWDC was divided into 4 key areas.  The overall keynote felt more of improvements to current systems / apps instead of anything ground breaking.  This is not a bad thing if it improves the user’s experience.

iOS 9

  • Apple News app allows you to get all the latest news in a very rich way (pictures, animations etc). I been told by others it’s like Flipboard,  sad times for Flipboard.
  • Apple Pay is coming to the UK and Apple Wallet allows you to group your store / credit cards together.
  • Maps now show Transit routes for major cities.
  • New iPad only split screen / multitasking modes that allow you to use 2 apps at the same time.  Looks super fun and cool but the best parts are only supported on a iPad Air 2.
  • Swift 2 announced and is going open source.
  • iOS 9 installation size will be a lot smaller than iOS 8!

WatchOS 2

The biggest announcement from a developer’s point of view was WatchOS 2

  • Native Apps.  This is the big change, you now have access to the watch hardware (sensors and buttons).  The watch can now do stuff without being connected to the phone.
  • Third-party complications.  Complications are basically watch face widgets that you can create.  You could create a Complication that shows your heart rate as part of your watch face.
  • Better health and fitness performance
  • New Siri capabilities.  You can now ask Siri to start a 5 mile run, or go for a 300 calorie bike ride

OSX El Capitan

Lots of small improvements however it felt like a maintenance release instead of a new big shiny thing.  The support for split screen for apps is cool, but Windows 8 has had that for a while.  Mac gets the 3D engine called Metal which iOS got in iOS 8

Apple has merged it iOS and Mac developer program which is a good move, the Mac app store is a bit of a graveyard.

Apple Music

This was Apple’s big announcement.  In summary, imagine Sportify + a 24 hour radio station managed by Zane Lowe.  $9.99 a month or $14.99 for families (up to 6 people)

Hack24 2.0 out now!

So, finally I got some time to update Hack24, my first ever MMO for iOS.  2.0 is not as big upgraded as I hoped but added some more fun to the game.

  • You can now customise the colour and building type
  • You can now message online players
  • NPC have been introduced to add more fun
  • Bug fixes
  • Game balancing
  • iOS8 fixes

Next, I plan to improve performance, the game keeps getting new users, and so development will continue

You can get it free from iTunes

Whats going on and what have I learned so far?

Good evening all.  Your probably wondering why I have been a little quiet lately, maybe it was the marathon I just did, or maybe it was all the bloody colds I have had.  Could it even be the kids?

Short version

Though all of the above is valid, things are still happening.  I am still chasing my dream of my own Virtual Reality world (in Android), I am learning iOS8/Swift and also READING BOOKS, the ones that contain stories!

I am trying to slightly step back, review what I have learned, and move forward in a more productive focused way.

New stuff will be coming soon.

Long version (sorry)

As a dear friend of mine once said (paraphrasing) , Burf, you like building frameworks but then you loose interest.  Try finishing something.  He was completely right and this helped spawn Burf Development, and the GameJam event I organise at work.

Since I started Burf Development at the start of the year I have released 2 Android games (both part of a game jam so need work), started sharing code on GitHub and released 6 games and 1 app for iOS!  The largest one, being Hack24 which has had quite a few downloads (currently rated 4.5 out of 5).

I learned some obvious lessons with Hack24.

The first one being that I should of only shipped the game out once I was happy with the features.  I should of waited until APN’s where enabled in the game as this is a great way to remind players to come back and inform them that they have been hacked, robbed etc.

It seems that once the initial download rush is over, it is pretty hard to get that boom again.  On the first few days I was receiving 100-200 downloads a day, now its like 40 a week.

I also had some server issues, I guess I could of done more testing however most of this was down to a time validation issue where the clock got out of sync with the client, this caused users not to be able to login 🙁

Waiting 7-9 days for a iOS release is annoying! Especially when you find a bug within minutes after release!  Do more testing, get friends to do it to!  My wife was top bug finder!

Check the support email, oh boy I never actually expected people to contact me, but yes they do!

Work out a road map, or a plan! I am a little stuck on what to do with Hack24 now?  I feel I keep moving on to new stuff!

Whats the plan now?

Well I have a load of idea’s in Trello,  I have a few started projects and lots of new technology to learn.  I have a ton of online course lined up and have started reading books.  Oh and there are the 2 awesome kids I have to, I try to focus my time on them!  Oh did I mention I have a wife and a full time job!

Android and Virtual Reality

Virtual reality has been one of my favourite topics since I saw Lawnmover man.  I have tried to make my own VR world many time since I was about 12!  VR is now starting to take off with Oculus Rift (Facebook), Sony Morpheus, Google Cardboard and Samsung GearVR plus many others!  Apple sadly has nothing in this area, and so I either develop for the desktop or for Android.  As I quite enjoy learning Android, this is a double whammy!  Also, you can generally release anything to the Google Play store (a VR framework would not be allowed).



Learning Swift & iOS8

As a senior iOS developer, I really need to rock at Apples new programming.  I have played with Swift a bit but I really feel its time to freshen up my skills.  There is also a lot of cool stuff with iOS8.  My aim is to build a couple of simple but pretty apps (master that AutoLayout) in Swift.



A bit more fun than the normal day at work, I was asked to investigate iBeacons.  We had been sent 4 3rd party iBeacons to try out which had been setup with different Major and Minor settings and transmitting frequency (seconds).

To be honest, I did not know where to start, however a nice tutorial on covered everything I needed to know to complete the tutorial.

iBeacons Tutorial


UISearchController and custom cells

I have just spent the last hour banging my head against the table and I thought I would blog about it incase others use UISearchDisplayController.

This allows you to add a nice search box to a UITableView, and is really easy to implement.

If you are using custom UITableViewCells, performing a search will not return the cell you think it is in cellForRowAtIndexPath.  It looks for a cell in the SearchController (not visible or in the storyboard), not your table that’s in the storyboard.

A simple fix that seems to work is. (fingers cross)

TalkListTableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:cellId];

TalkListTableViewCell *cell = [self.tableViewdequeueReusableCellWithIdentifier:cellId];

However custom height cell’s may require more work. See: