Varonis’ VP of Engineering David Bass shared his thoughts and opinions on the Mac development ecosystem and how it compares to Windows and .NET. David and his team recently developed a Mac client for the company’s popular new DatAnywhere product – a secure, private cloud file syncalternative to Dropbox.
Q: Why did Varonis decide to develop a Mac client for DatAnywhere?
DatAnywhere is an application for business users, and as we’ve all seen, there’s been a big shift within enterprises – employees want secure access to data from any place, from any device. We want to give our customers what they need and we heard them loud and clear about the importance of Mac, iOS, Windows and Android support, so we’re committed to building on each of these platforms.
Q: What was your overall experience like in developing on the Mac platform?
Since Mac OS X is based on the NeXTStep operating system which is a UNIX-like operating system based on the Mach Kernel and BSD, you might expect that the development environment would be very barebones. The opposite is true – we have been extremely pleased with the maturity and robustness of OS X, Xcode, Objective C and Cocoa. The developer community is really active and passionate, too. We have everything we need to build the kind of applications our customers have come to expect from us.
Q: What should someone coming from .NET development expect from Cocoa?
Cocoa is at least as powerful as .NET, if not more powerful in some aspects. As in .NET, support for common things like UI, file management, localization and multi-threading are built into the framework and are very easy to make use of. However, with Objective-C, should you wish, you have greater control on the underlying framework – you can manage your own memory and easily change existing interfaces’ (Objective-C terminology for C++/.NET classes) functionality using categories. Additionally, the dynamic nature of Objective-C—everything you do is essentially sending a message between objects—makes it a very powerful language and certain programming tasks are easier than with .NET.
For instance, with Cocoa’s method swizzling you can easily replace the function of an existing method with a new implementation. This technique is particularly useful in cases where you don’t own the interface or don’t have the source code of the interface method for which you would like to change implementation.
Q: What are some of the resources your team used when developing DatAnywhere for Mac?
Our development team is multi-disciplinary and can adjust quickly to any language. In the end, writing code is writing code—regardless of the language.
A great resource we found very useful is the Objective-C Guide for C++ programmers by Pierre Chatelier (PDF here).
Q: How would you rate the API documentation?
The docs were very good for the most part (CoreData could use a little more documentation, though).
Q: How would you rate Xcode as an IDE?
Xcode is very good. I’d consider it to be on par with Microsoft Visual Studio. It’s very full-featured and has everything a developer needs.
Q: Apple has a reputation for not wanting to let software developers compromise or change the Apple experience (e.g., no flash on the iPhone). Did you run into any road blocks or annoyances because of this?
Since DatAnywhere does drag-and-drop file synchronization between your Mac and your organization’s file servers, we had to integrate with the Finder app.
Our goal was to provide the user everything they need without having to leave the Finder or open an external app. For that we needed to add icon-badging (similar to MS shell icon overlay functionality in Explorer) and context menu options, which required a few workarounds.
Q: What does your Mac developer setup look like? What hardware do you use?
We use Mac Minis for development with the latest OS X Mountain Lion 10.8.2 and Xcode 4.5.2.
In our QA environment we use OSX VM’s on VMWare ESX infrastructure.
Q: How can someone check out DatAnywhere? Is there a free trial?
Just visit http://www.datanywhere.com and click on the big “Join the Beta” button. Our engineers will help you or your IT department install the server component (it takes about 15 minutes) and then you can download any of our clients and start syncing data across Mac, iOS, Windows, or Android.