Brent Simmons is wrong

I think he’s being a bit myopic in his piece on why developers shouldn’t use, USE in his words, iCloud syncing. While it’s quite possible that developers would develop for more than just the iOS platform those that do concentrate on iOS have customers that will demand syncing via iOS. It’s built in to the platform and easy for customers. That isn’t to say there isn’t a broader issue here that Apple needs to address and that is the sad state of Core Data syncing making the rounds right now. But for developers who only used document-based sync it works quite well.

For developers who are developing for multiple platforms the issue is even worse and his suggestion to not rely on another company and roll your own seems pretty simplistic. If rolling your own sync service were so easy it wouldn’t have taken the Things guys two-plus years to get their service working. The Omni Group is another example of a company who has rolled their own and taken awhile to do so. Sync is not an easy problem to solve. I think I’d rather support a company, like Simperium, who is trying to solve the problem vs. trying to roll my own. Sure there is a risk there but I’m taking a risk just by spending time trying to develop software with no guarantee of success.

As an aside I hope Brett was kidding when he said:

You hope your app will be a hit. (If not, then quit writing it and choose something else.)

The application I am working on will never be a hit by the usual standards that word implies. I’m writing it to help people. Sometimes people do things for reasons other than money. Should I stop working on it because it won’t be a hit?

AppCode 2.0 released!

The fine folks over at JetBrains have released the next generation of the <a href=”http://www.jetbrains.com/objc/” title=”AppCode 2.0″>best Objective-C IDE available</a>.  If you’re doing iOS or Mac development and haven’t looked at this tool yet please give the trial version a spin.  You won’t be disappointed!

Xcode how I loathe thee..

I had missed this when it was originally posted but oh how right Matt Gemmell is…

You can only ever love Xcode in the sense that, after visiting the site of an ecological disaster, even your dilapidated, graffiti-covered, urine-soaked local park seems vaguely pleasant by comparison. A relationship with Xcode is basically abusive, but I have nowhere else to go

He goes on to say “I don’t like that Java-based IDE; I fear change” which I find amusing. “That Java-based IDE” is AppCode from JetBrains. It’s an excellent IDE based on the same framework used for the excellent IntelliJ IDEA Java IDE as well as their other language-specific IDEs for Python, Ruby, etc.

Software Development Interviews – A Sad State of Affairs

There have a been a ton of words written about interviewing programmers. After some recent experiences I’ve come to the conclusion that the whole thing is a pretty sad state of affairs. Keep in mind that as I say all of this I have absolutely no ideas on how to improve the situation. Is there really some generally acceptable way that a software engineer can be interviewed? I don’t believe so because every situation is so different that it is more of an art form than a science. The field is so varied that it’s hard to really know how to judge if someone is a good fit or not.

I have my own methods and I’ve had pretty good success with them. I’ve also had some really bad candidates squeak through because they talk well in the interview but when it comes down to actually doing the job they are poor performers. To make the situation a bit better I’ve taken to the web to get some help. There are tons of websites out there with questions to ask a prospective employee. Object-oriented design questions are a popular choice (tell me how to model the game of Monopoly). Another option are the trick questions that places like Google ask candidates. Both of these types of questions purport to help show how the candidate thinks.

Some places ask questions like “Write code to display the Fibonacci sequence up to the value of X”, or the “Fizz Buzz” question. I don’t find much use in these types of quesetions and I don’t use them when conducting an interview. If someone is right out of college and is used to solving questions like these, and its the only thing you have to judge their technical skills, by all means ask them. They’re useless for someone who has a lot of varied experience. These types of questions give you absolutely no clue as to how the person thinks[1]. Worse, if the person gets nervous you might lose a fantastic candidate.

True story: I was once asked both of the questions mentioned above in an interview. Two guys were in the room with me and wanted me to type the code in. As I tried to solve the problems I was not only under the stress of just being in a high-pressure situation but I had two people sitting there waiting for me to finish. It was extremely uncomfortable and ultimately showed nothing about my skills. I did the Fizz Buzz problem with a less than optimal solution (and unfortunately was on the right track for the best solution then second-guessed myself). I couldn’t do the Fibonacci solution. There was just too much pressure and my brain completely froze up. I was on the right track but never got it to work.

So how do we get the candidate to show their experience is really true beyond their resume? In my own experience being the interviewer I ask a lot of questions….some technical and some for “fit” of the person into the job and culture of the company. The technical questions are all easy but I’ve found that just having a conversation like that typcically weeds out the bullshitters. The method is by no means foolproof but it works well most of the time. Some people just aren’t good interviewers. The pressure of the situation just makes their brains stop working. I don’t want to miss a good candidate by giving them quizzes.


  1. Funny enough in the stackoverflow.com link provided one person answering the question does think that Fizz Buzz helps show a thought process. I completely disagree. It shows that the person remembers how to use a modulo operator properly. The solution to the problem is very short. It’s basically a three-liner.  ↩

AppleScript: System Events and file duplication doesn’t work

I’m learning AppleScript because, whether good or bad, it is the blessed way to script applications on Mac OS. I’ve found something kind of odd that I’d like to share because I haven’t found information anywhere else and somebody else may be having this problem.

Many examples out there use the Finder to do file manipulation. For various reasons (one being using POSIX paths) I don’t want to use Finder, I want to use System Events. As part of the “Standard Suite” in the System Events dictionary there is a duplicate command:

duplicate v : Copy object(s) and put the copies at a new location.
    duplicate specifier : the object for the command
    [to location specifier] : The location for the new object(s).
    [with properties record] : Properties to be set in the new duplicated object(s). 

Fantastic right? It’s not quite as robust as the Finder version:

duplicate v : Duplicate one or more object(s)
    duplicate specifier : the object(s) to duplicate
    [to location specifier] : the new location for the object(s)
    [replacing boolean] : Specifies whether or not to replace items in the destination that have the same name as items being duplicated
    [routing suppressed boolean] : Specifies whether or not to autoroute items (default is false). Only applies when copying to the system folder. 
    [exact copy boolean] : Specifies whether or not to copy permissions/ownership as is
    → specifier : to the duplicated object(s)

But the System Events version, despite being documented, doesn’t work. If I run a bit of code like:

tell application "System Events"
    duplicate file source to folder destination with replacing
end tell

I get the error:

error “System Events got an error: Files can not be copied.” number –1717

The interesting thing is that error 1717 means

The handler “identifier” is not defined.

I’m not using handlers. This almost makes me think that the command really hasn’t been implemented given the error text that it spits out.

I also did a bit more rearch and came across the book Learn AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X. In there they state:

One particularly annoying omission in System Events is that it can’t yet duplicate files and folders; if you need to do this, the Finder is your best bet. [1]

The 3rd edition is from 2010. It would seem that even in Mountain Lion this is still true.


  1. pg. 595  ↩

Adobe launches Edge Animate. Free for a limited time.

Yesterday Adobe launched it’s Edge Animate HTML 5-based animation tool. This is great news as it brings us even closer to a Flash-free future. And the best news? The pricing is set at $499 but for a limited time is free. The only requirement is the creation of a free Adobe Creative Cloud account.

Adobe really is pushing hard on the HTML 5 development tools (they also launched Edge Inspect, a mobile preview and debugging tool, as well as Edge Code, an HTML/CSS/Javascript editor). Along with the announcement of the Edge Fonts collection they are really doing some great work trying to move the web (mobile or otherwise) forward.

Exciting font news from Adobe (and Google)

Things just keep getting better and better for people creating websites or HTML5-based mobile web apps. A couple of exciting announcements from Adobe yesterday including a new feature called Edge Fonts. Per the Typekit blog this is a free service that will include all of the Google web font collection and two new open source fonts from Adobe. Adobe and Google will be working together to start cleaning up some of the open source fonts to improve them. It appears there will be over 500 fonts included. All of this will be free and run on the Typekit infrastructure.

Remembering 9/11

The clarity with which the mind can render a memory, especially a memory of an emotionally powerful event, is pretty staggering. This is where we get the “do you remember where you were when…” question and we can often recall with crystal clarity where we were and what we were doing.

Today is the 11th anniversary of the day terrorists attacked, and brought down, the World Trade Center buildings in New York City. I remember exactly where I was and what I was doing. I remember it so clearly it still feels like it happened yesterday.

My wife had already left for work. I was getting ready to leave for work. I was watching Good Morning America on ABC while I was ironing my shirt. When I had turned on the TV the first plane had already hit but the details at the time were pretty sketchy. They were showing smoke pouring out of one of the towers and the assumption was that there had been a terrible accident. A bit later those ideas were shattered when a second plane, clearly a large one, flew into the other tower on live TV.

At that point it was clear that I wasn’t going to work. I called in and most people had already called in. Those that hadn’t were glued to the TV there. In the hours that followed we all watched with horror as both towers fell and more reports of other planes followed.

I am thankful that nobody I knew died during the attack or in the aftermath. I hope we never have to experience something like that ( or worse ) again. The US became such a different place in the weeks ( and years ) that followed. I remember feeling a sense of loss and depression for weeks afterwards. It was definitely a moment in time in which to question our existence and wonder what the point of it all was if people could still be doing such ghastly things to one another.

Day One journaling app – no import?

I’ve been giving the Day One Mac application a spin for daily journaling. I’ve got a bunch of entries in MacJournal that I’d like to bring over but apparently that isn’t a possibility. Not only can you not select a range of files in the import dialog but import doesn’t work at all. For some reason Day One can’t import a text file. This is the result:

Guys, if you’re going to provide an import feature please put at least a bit of thought into it. It would be a common thing for someone to want to move journal entries from one system to another. One entry at a time is a bit much even if it did actually work.

Compiling Python’s Http-Parser Library On Windows 7

The other day I wrote about compiling http-parser on OS X. Little did I realize that there wasn’t a compiled binary for Windows either which lead to an interesting adventure in trying to get it to compile there as well.

I’ll skip the majority of the story other than to say that don’t bother with MingW or Cygwin. The distutils version shipping with Python 2.7 (most current and last of the 2.x branch) only supports older versions of MingW that I couldn’t get to work. There is a gcc option -mno-wingw that isn’t supported anymore. I didn’t bother trying Cygwin.

The solution was to download the latest copy of Visual C 2010 Express from Microsoft. It’s free. The two issues I did run in to is that it doesn’t come with a batch file called ‘vcvarsall.bat’. There is a ‘vcvars32.bat’ in the bin folder which I copied and renamed to ‘vcvarsall.bat’. Problem one solved.

The second problem was that the compiler was complaining about not being able to find ‘vcvarsall.bat’. That file doesn’t exist in the Visual C install. Some googling turned up this thread on stackoverflow which contained the answer.

For Windows installations:

While running setup.py for for package installations… Python 2.7 searches for an installed Visual Studio 2008. You can trick Python to use Visual Studio by setting

SET VS90COMNTOOLS=%VS100COMNTOOLS%

before calling setup.py.

In this case I wasn’t calling setup.py myself, I’m using pip but it calls setup.py. I did run the set prior to running pip and it solved the problem. Now http-parser is installed and working on Windows.