Like everybody else, I spent a few hours this week updating my personal projects to Swift 2.2 which was released with Xcode 7.3 a few days ago. Updating to Swift 2.2 was important in my case since 2.2 version is basically an intermediate release between Swift 2.0 and the upcoming 3.0 version. This prompted me to take a few moments and write about the changes I had to implement in my code. There is a nice write up about the changes on www.swift.org if you are interested in more details.
Former NSA official Richard Clarke on Apple vs FBI:
Well, I don’t think it’s a fierce debate. I think the Justice Department and the FBI are on their own here. You know, the secretary of defense has said how important encryption is when asked about this case. The National Security Agency director and three past National Security Agency directors, a former CIA director, a former Homeland Security secretary have all said that they’re much more sympathetic with Apple in this case. You really have to understand that the FBI director is exaggerating the need for this and is trying to build it up as an emotional case, organizing the families of the victims and all of that. And it’s Jim Comey and the attorney general is letting him get away with it.
…They want the precedent that the government can compel a computer device manufacturer to allow the government in.
…They’re (FBI and DoJ) not as interested in solving the problem as they are in getting a legal precedent.
Swift needed to happen. Objective-C had no future. I know this is a harsh statement, but this is the conclusion I came to this week after writing purely in Swift for a few months now. It is hard to admit, especially after spending most of my software development career writing in Objective-C. There is a chance that a lot of you will disagree with this statement, but let me mention two things I find lacking in Objective-C that are extremely important when it comes to writing good code.
Objective-C by its nature is a much forgiving language (and I am using this term loosely). It allows developers to get away with bad code. It does not impose requirements for handling errors. It allows for nil return type where a specific type is expected. It does not guarantee immutability. It requires extra work to declare true constants. Block syntax (should I say more)?.