3 months ago

SwInjecting a large project

Swift   swinject   di   iOS  

If you know me, you'll know I'm a bit of a fan of Dependency Injection frameworks and when it comes to Swift projects, my goto framework is Swinject. The documentation on Swinject's Github page is pr…

4 months ago

Doing it asynchronously: RxSwift vs PromiseKit

Swift   promisekit   reactive   promises   rxswift  

It's hard to write an app these days without having to include multi-tasking asynchronous code. Whether it's accessing a server's API or the local photo library, multi-threaded asynchronous programmin…

4 months ago

Quick and Nimble - Sometimes...

iOS   testing   xcode   BDD  

Some time ago I wrote a post trashing Kiwi (At least I'm honest about it!), a UI testing framework the uses dynamically generated tests to validate your iOS apps. Kiwi follows a BDD style of testing a…

a year ago

Firebase and Google Sign - patching Google's code

iOS   Google   Firebase  

I have a project I've been messing around with for a while and recently I decided to re-write it in Swift. As part of doing this I took a look at the technologies I had employed for the server, asking…

a year ago

Epic fail - Swift protocols

programming   opinion   Swift   war stories  

It all started with what seemed like a simple thing, and indeed... would be if I was using Java. I had a view controller which manage a number of other view controllers. A very common scenario in any…

2 years ago

TV that's worth pay for

My list of binge worthy TV that's worth paying for when you're over that advertising driven reality TV crap. Battlestar Galactica Black books Blackadder Breaking bad Coupling Deadwood Fargo Game of th…

2 years ago

The trouble with Swift … or Objective-C

Swift   objective-c   programming   opinion  

For the past few days I’ve been confronting the awful truth - That Swift and Objective-C really don’t play well. It started some time ago. I have a DI frame written in Objective-C called Alchemic whic…

2 years ago

CocoaPods vs Carthage - Part II

carthage   cocoapods   iOS  

Recently I penned a post about what I went through getting CocoaPods going on a project recently vs what would be the case if the project had used Carthage. I suspected it might provoke some discussio…

2 years ago

A history of my favourite software

For some time I’ve been thinking of creating a list of software I’m proud to have created. These projects aren’t necessarily work related or even publicly successful. Just projects that I’ve done and…

2 years ago

PTR - Pause, Think, Refactor

programming   practices   methodology  

Regularly on LinkedIn, StackoverFlow and other similar sites I see people posing questions about applications architectures. Should I used MVP, MVVM, VIPER, LVC, etc? The same questions over and over…

2 years ago

CocoaPods vs Carthage

carthage   cocoapods   iOS  

Update As a follow up to this article, I wrote a more detailed opinion piece on why I prefer Carthage. Hopefully it answers some of the questions and criticisms in the comments. Original article Recen…

2 years ago

Story Teller v1.7

api   iOS   tvos   logging  

A new version of Story Teller is now available. Functionally it's the same as previous versions, but with the following changes: Support for Swift class and protocol naming conventions. ie. MyProject.…

2 years ago

Alchemic v2.0

Well I decided to merge the development branch of Alchemic into the master branch, effectively releasing v2.0 into the wild. So whats new? Rebuild core utilising a simpler architecture. Support for sc…

2 years ago

What is DI?

di   iOS   framework   alchemic  

Actually this is not Yet Another DI Article (YADIA - see anyone can create an acronym!). This question has been asked many times in many places, the most recent one I've noticed being a question on L…

2 years ago

Creating Objective-C modules

objective-c   iOS   alchemic   framework  

For some time we have been able to import system frameworks as modules into Objective-C code. For example, to use Foundation, the Objective-C runtime, XCTest frameworks and my DI framework for testing…

2 years ago

Stupid things I've been told in IT

Just a list of things I've heard people actually say: Not wearing a tie will directly effect your career path. Real programmers read at least one book on programming every month. (To a room full of cu…

2 years ago

XCUIApplication - You're probably doing it wrong

There are quite a few blog posts around the inter webs about the new iOS UI testing and how to do it. Most of them make multiple calls to XCUIApplication(). For example: XCUIApplication().launch() X…

2 years ago

A history of motorcycles - Mine actually

I've been riding motorcycles since I was knee high to a grasshopper (Or about 8 years old or so), and I often see people in forums suffixing their screen name with a list of the motorcycles they've ow…

2 years ago

Atlassian Confluence - A lesson in loosing touch


Yet again today I've been struggling to update a document in Atlassian Confluence. Bashing my head on the keyboard trying to get simple changes to work. Confluence used to be good. Atlassian used to b…

2 years ago

Objective-C's version of Swift's '_'

iOS   objective-c  

Sometimes you want to create a variable but not use it. Developers using Swift will be familiar with this concept. For example let _ = createSomethingIDontUse() But trying this in Objective-C genera…

2 years ago


opinion   testing  

Every time I've done a job interview in the last 10 years, TDD (Test Driven Development) has always come up in the discussion. In almost all cases, the more the people who have been interviewing me ha…

3 years ago


iOS   Swift  

A few months ago myself and 5 other developers started a brand new project for one of our clients. We decided to use Apple's Swift language instead of Objective-C as both the client and ourselves were…

3 years ago

Slandering other people's code - Code Smell !


There is nothing worse than someone standing over your shoulder and telling you that something is wrong with the code you've written. "That's a 'Code Smell'" they proclaim. "You should fix that" and w…

3 years ago

Points Master - Smart Story Estimation

announcement   iphone   agile  

I've scanned the iOS app store more times than I can think of looking for a good agile poker app. All I ever found was crappy apps where you could tap a number and have it displayed full screen. Wipty…

3 years ago

Alchemic - now with Swift

Swift   alchemic   iOS   announcement  

Yep. Just spent the last month or so playing with Swift for the first time and modifying Alchemic so that it can be used in Swift projects. It proved an interesting project. In some respects Swift is…

3 years ago

Alchemic - DI with "Style!"

framework   alchemic   di   objective-c  

Ok, I'm going to be blowing my own trumpet here a bit so hang on :-) A while ago I did a brown bag at work covering 3 of the most significant DI frameworks I could find for iOS. In researching, experi…

3 years ago

Carthage - finally a good dependency manager for iOS

iOS   programming   carthage  

I've had to use Cocoapods - I don't like it. I don't like the way it stomps all over your projects files (and the ever-famous merge hell it creates), it's heavy dependency on Ruby, and the way it inte…

3 years ago

Things that make you go hmmmm ... #3

work   war stories  

Having worked on main frames for a while I decided to move onto PCs. At that time we were just getting them instead of dumb terminals to talk to the main frame and things like Visual Basic were all th…

3 years ago

Things that make you go hmmmm ... #2

work   war stories  

IT's some years later than #1 and I'm working at another mainframe site. It's another large government site and I'm working with Adabase/Natural on a large system used to administer a piece of governm…

3 years ago

Quick tip: hiding deliberate selector mistakes

iOS   objective-c   macros   tips  

Somethings we want to enter a selector in Objective-C that will trigger an warning/error in the compiler. It might be a selector for a different class, it might be an invalid selector we are using for…

3 years ago

Stand ups just don't work


At least not the way they are intended. Every day the team gets together. The uncivilised teams around 9, mostly civilised around 9:30 and real programmers around 10. With the teams I've been in it's…

3 years ago

Putting my code where my mouth is!

iOS   logging   programming  

For some time I've been going on about how I dislike the way that logging frameworks work. My last post outlined what I wanted in a framework. Today I've pushed up v0.2 of my new framework: Story Tell…

3 years ago

Telling a story

logging   api  

Traditional logging frameworks (Log4J, LogBack, SLF4J, Cocoa Lumberjack, etc) all follow the same pattern. Two intersecting criteria for choosing what is logged. Firstly a limited range of options bas…

3 years ago

Come Apple, how about a new Keynote!

apple   keynote   presentations  

I've been using Keynote for a few years now and it has not really changed. People always compare it to Powerpoint (Ugg!) and various other slide show tools, but frankly apart from Powerpoint, there is…

3 years ago

Objective C Generics

xcode   programming   objective-c   generics  

After writing my last post at midnight while jumping up and down with excitement over the discovery of Generics for Objective C, I decided to write a longer post with more details. So today I wrote up…

3 years ago

Woohoo ! Generics in Objective C

Since writing this quick late night post, I've written a better one here. Please check that out. Original post This is very preliminary, but I was just so excited by it when I found it in the release…

3 years ago

Sad and Moving theme music

A quick post. I'm currently listening to the soundtrack from 'The Day After Tomorrow'. Not that highly rated in general on IMDB, but I liked it and found it visual impressive. I also liked the basic i…

3 years ago

Things that make you go hmmmm ... #1

work   war stories  

After almost 30 years in IT, I've built up a good stock of stories. So it occurred to me to write some of them down. Remember - the names have been changed to protect the innocent, the guilty on the o…

4 years ago

Fixing Yosemite's computer name renaming bug

If you've upgraded your Mac to OS X Yosemite you may have come across this bug. Effectively what happens is that your computers name, which is visible in networking, keeps getting changed. For example…

4 years ago

How agile makes football work

waterfall   agile   football  

I've been looking for a good analogy for how agile makes things better for a long time. The usual ones revolving around cars and houses just didn't seem to quite fit that well. So this morning I thoug…

4 years ago

Turning Waterfall Sign offs into Agile Acceptance tests

waterfall   methodology   agile  

This is something I was thinking about this morning. I’ve not done it as yet, but I think it might work. One thing that seems to hinder and aggravate the introduction of agile methodologies into large…

4 years ago

MarkDown vs Textile

markdown   textile   blogging  

A couple of years ago I needed to put together some static web pages for a small site on GitHub. Nothing clever. The two offerings for doing them were (and still are) Markdown and Textile. I picked ma…

4 years ago

Kiwi - BDD with an identity crisis

BDD   kiwi   testing   iOS  

BDD or Behaviour Driven Development is a hot term with management. It’s sold as a methodology which directly maps the requirements of the business to working code via the use of “Stories”. The basic f…

4 years ago

Logging from Hell ...

logging   practices  

Over the years I've come across a number of logging implementations that were notable for all the wrong reasons. So I thought it might be a good read to tell your about them. Method madness One that…

4 years ago

The Greatest excuse of all ...

In 30 years of writing code, I've been asked to do one thing more than anything else. That is - to go into an already running project, half way to two thirds done ... and "help out", or or "assist". A…

4 years ago

In the Zone


Every coder knows it - "The Zone", that magical period of time when the code seems to just flow -functionality slots into place, unit tests going green like christmas tree lights, widgets pop up on s…

4 years ago

The state of XCode Unit Testing

In the world of iOS development, unit testing is one of the most talked about things, yet to my surprise, something that is almost never done. Perhaps the state of XCode's unit testing support has som…

4 years ago

Enabling Reveal on a running app in the simulator

Reveal is an amazingly useful weapon in my arsenal of development tools. It's simply the best thing around for diagnosing interface issues. The problem though is that up until recently we had setup a…

4 years ago

The Singleton conundrum

Everywhere I go I find Singletons in the code base. It doesn't seem to matter what language or system, developers keep putting them in. Sometimes these singletons make sense. Some times they don't. Ru…

4 years ago

XCode project file merges (or not) & Cocoapods

xcode   cocoapods  

I've recently joined a project team working on an iOS app. On joining I introduced a script I've used before which assists in dealing with the dreaded Xcode project file merge issue. Essentially this…