Brian Amerige on Mac development and Flow


Brian Amerige, the developer of the much-anticipated (but still unreleased) FTP / connection client Flow, was kind enough to undertake another interview, this time with a focus on more technical and developmental aspects.

Hi Brian, thanks for taking the time out to go through yet another interview.

Absolutely — I’ve got all the time in the world to answer everyone’s questions. That’s what I’m here for.

How’s the Flow development going? What sort of feedback are you getting from the private beta testers?

Flow development is going really well. As I’m sure any other developer could tell you, it’s just an amazing feeling to wake up everyday and be consistently amazed how far things have progressed in just a day. The private beta testers have been absolutely invaluable to Flow. While I know the topic is a bit controversial, I don’t believe in unit-testing. Wil Shipley made a great post (http://wilshipley.com/blog/2005/09/unit-testing-is-teh-suck-urr.html) a while back on it, which really hits the nail on the head. My private-testers are not only rigorously using Flow with the intention of breaking it (I always say, don’t test if a feature works, test if it can be broken), in addition to the fact that they all use it in a practical sense — they’re building websites and transferring files — because real world testing is irreplaceable.

So apart from Objective-C and web development, is there anything else you’ve tinkered with?

Hell yes!

Before I even learned Objective-C, I ran a small-hosting company named Extendmac. We did a bunch of things in unusual ways (giving users a Plesk Control Panel for $6 USD/mo.), and the customers we had absolutely loved us. Unfortunately, once education and software entered the picture, it became pretty clear that I couldn’t keep all three up at once. Web-Hosting was obviously the weakest link, so I was forced to give it up. That said, I have to say it’s really a shame the hosting services never saw much of the light of day. The hosting system, user control panels, Direct-Support (I had actually written an entire ticket-based support system, which to this day I consider one of my finer creations) were all really well done, all definitely things I’m proud of. If only I had the infrastructure or team behind me (at the time) to have continued, I believe it would have turned into something really phenomenal.

Aside from business, I’ve tinkered with lots of other things. I’ve hacked and modified Roombas and had ‘TiVoToGo’ on my TiVo long before it was ever publicly available (in a different way of course — I just wrote some backend to give me WebDAV access to the hard drive, which is particularly funny, because it’s the first thing I ever saw appear in Flow’s Bonjour -> WebDAV category.) As you might expect from a developer, I’m constantly making easier solutions to everyday things — just part of the lifestyle I guess!

How do you find the Xcode IDE?

What can I say? I feel right at home in Xcode, and I can’t imagine developing anywhere else. Apple’s done a great job with Xcode, but if I were to change one aspect, it’d be a few of it’s UI concepts. Then again, many of those (collapsable code. Xray) seem to be addressed in Xcode 3.0, so I can’t complain.

What are you looking forward to most in Leopard and why?

As you might expect, I’m most excited about Xcode 3 and IB. Obviously that’s because a large majority of my time is spent in there! Also, the addition of Core Animation opens us (developers) up to many new opportunities, and I can’t wait to see where others (and myself) will take that into their apps. I’m all about creating rich user experiences, and Core Animation is definitely going to help.

Anything else?

Aside from development additions in 10.5, I’m most excited about time-machine. I use subversion internally for keeping a running source-record of each progressive build of Flow, but it’s nice to know that in the event that I need it, time-machine can act as a “backup to my backup”.

How different is Objective-C to other programming languages that you’ve encountered? Do you like working with object-oriented languages or do you not worry about the technical aspects of the various languages?

I guess the best way to describe Objective-C is that it’s very very well-thought out. I love Cocoa, and have immense respect for those responsible for it at Apple; they’ve created a plethora of technologies which let me spend time developing new features rather than just getting things to work. While I tend not to look at the technical aspects of the languages (writing great code is very important, but in the end it needs to build a better product), I do prefer working with object-oriented languages.

You say you’ve worked a lot on little personal projects in various languages. When did you decide you were proficient enough to tackle writing public application, or did you just decide to tackle it and worry about the details later?

I’m not sure the issue was ever whether or not I was proficient enough to tackle a public-app, but whether or not the app could serve a larger audience than just myself. When I think back, there really wasn’t ever a question in my mind for Flow — knowing that the public could benefit from it just as much as I could, I don’t believe I even thought twice about keeping it private or not.

Writing your first public application must be a good lesson in itself. What’s one of the things you’ve found out by undertaking this project?

Writing software is less about programming and technology than it is about people. It’s surprising to me how many people still fail to realize it, but regardless of how technically challenging your app is, you’re writing for people, and they’ve got to be your focus. In the end, an app with less features that’s more enjoyable to use is always more valuable than it’s competition.

You obviously decided to write Flow when you found (like a lot of others before you) that something needed to be fixed in the FTP department on the Mac platform. Using an external text editor with an existing FTP client is one that you found needs improvement. Are there any other issues you’re trying to address with Flow?

Two words. User Experience. FTP clients don’t feel right today. Many people aren’t comfortable with them. That just blows me away — how has this been ignored? I whiteboard my ideas, workflows, and designs quite often, and in the upper right corner, it always says “Make it feel beautiful.” It’s just a core value to me. An app that doesn’t feel great isn’t one worth using, regardless of what it does.

In continuation of the previous question, I’ve spent a lot of time learning what feels natural, and maintaining user-comfort is always my topmost goal.

You obviously planned the application meticulously before you started developing it. How has Flow evolved and changed during its development?

Flow has changed dramatically since the original planning — but mostly in technical aspects. I’ve kept consistent with a large majority of the design and feature concepts because something that feels right 6 months ago still feels right today. So in a way, I’m tackling the same problems, but how I do so programatically is always flexible.

You say Flow is more of a connection client than an FTP client, as it handles a number of protocols. How do you decide which features are worth keeping and which ones would be bloat?

I’m so glad you asked this question. The ideology behind this is pretty much the same as that behind preventing piracy. I won’t spend massive amounts of time preventing piracy because that’s time that should be spent evolving the app for paying customers. In that way, the moment a feature becomes detrimental to the core features, it’s bloat and should be removed.

Am I correct in thinking Flow does not use Apple’s FTP framework? Could you elaborate on why you chose to go with Connection Kit instead?

Yep! I chose to go with the Connection Kit for a few reasons. First, I think those in charge of it are doing a terrific job with it. It’s powerful, robust, efficient, and clean. Equally important, however, is that I get the chance to work really closely with its developers (Greg Hulands, who I can’t thank enough for all his hard work), which ensures beautiful integration with Flow. There’s no way I could get that type of relationship with the Apple FTP framework, and as a result it would be foolish of me to pass up on it with CK.

Eye candy and GUI has been a very controversial topic in the Macintosh community in recent months. From a usability point of view, what is your stance on interface customizations? How much time do you spend designing and writing the interface in comparison with the bulk of the application?

Another great question. A while back when I was messing around with some phrases for Flow, I hit on “Sizzle, meet Steak.” I think that’s the very core of my perspective in this case. As I’m sure you’ve noticed, I absolutely support making applications beautiful and fun to use — but there are limits. Compromising the consistency of Mac OS X applications is dangerous water as Apple has worked very hard to maintain consistency in the past. At the same time, Apple is almost always the first to introduce new UI elements — so where’s the balance?

In my opinion, the HIG (Human Interface Guidelines) is dead. So if I were to choose a new golden rule, it’d succinctly state: “Make your applications look beautiful, compliment existing elements of OS X, and act even more intuitively.”

Where did you get your inspiration for the Flow interface, or did you design it from scratch?

Flow’s interface is very complimentary of the Mac OS and it’s applications. In some aspects, Flow’s interface was designed from scratch and yet if you look at it now, it’s friendly and recognizable. To me, this says that Apple and others got it right — and that’s a terrific thing.

Do you have any plans or ideas for development after Flow?

Absolutely. We’ll see where they take me ;-)

Any tips for budding developers?

Consistently remind yourself to think of your application in terms of a solution. Every feature, behavior, and action should be focused on that solution, and those that aren’t should be left out. Remember that applications are for people, and they should be engineered as such.

Brian Amerige, thanks again. Best wishes for your future development and endeavours. May the Force be with you ;).

Haha. It was my pleasure! Cheers!


Back to Top ↑

1 Comment so far

Leave a comment
RSS feed for comments on this post. TrackBack URI

Leave a comment

Comments may be edited for formatting.