As you may recall, we’re currently working on the cross-platform implementation of RDM. To give you some added insights on what’s happening behind the scenes, I sat down with Richard Markiewicz, our software architect working on the Mac and mobile version of RDM, at our new office in Montreal. I asked him to share some of experiences and thoughts about this exciting project.
Below are my questions, and Richard’s answers:
What’s your experience regarding Mac environment integration and mobile platforms? What projects have you worked on in the past?
I’ve been a staunch Mac user at home since the early nineties, when I received a Macintosh IIci as a gift. However, my first opportunity to develop professionally for an Apple platform didn’t come until 2008 with the launch of the iOS SDK. Since then I’ve worked on multiple successful iPhone and iPad applications targeting both enterprise and personal users, including the very popular Bixou.
On the desktop side, I’ve most recently been responsible for bringing an existing .NET enterprise application to Linux, Android and iOS while achieving over 90% code reuse between platforms.
Regarding RDM, what would you like to achieve in the next few months on the cross-platform implementation?
I’d like to get something with a useful set of features built, shipped and in the hands of users. RDM is an incredibly complex and powerful application once you start looking under the hood – the amount of functionality is mind-boggling. If we tried to ship a first version for Mac or mobile incorporating everything from RDM, it would take a very long time! So I’d like to start with an initial release incorporating some of the core functionality, which we can then build on over time. Certainly I’d like to get something out there within a few months.
What was the first thing you’ve worked on when you started the project? What’s your approach?
I’ve started with a lot of prototyping. RDM has a large existing codebase that is already stable and well tested. I want to tap into that as much as possible, so I’ve been investing design time upfront to make sure we can take as much of the existing code as possible and adapt it to reuse across multiple platforms. This will bring dividends down the road where we can focus on making a great native UI experiences, rather than spend time re-implementing existing functionality.
Of course we aim to get as close to 100% code reuse as we can, but it’s not always possible. So another benefit of a good prototyping stage is to identify where we will need to develop platform specific implementations up front.
Is integrating RDM from a Microsoft environment to a Mac environment and mobile platforms any different from any other projects you’ve worked on?
One of the biggest differences in this project is my workflow and the tools that I get to use. Despite being a long time Mac user at home and for personal projects, I’ve always worked chiefly on Windows. So this is the first time I’m able to use a Mac as my primary work environment – which makes me very happy.
How is it going so far? What’s your biggest challenge you’ve encountered?
So far, it’s going very well. One of the biggest challenges is getting the user experience right – for Mac OS X and iOS, Apple provides very strict guidelines for how interfaces should look and behave: first and many third-party apps are very good at following those guidelines. If an application doesn’t look or behave right, it instantly stands out. So a big challenge is achieving a balance between the powerful features and customization in RDM while providing an elegant, intuitive interface.
Traditional cross-platform toolkits follow a write-once / run anywhere model, where applications look alien on every device. The tools we’re using provide access to the native SDKs and UI controls of every platform, which allows us to re-use the important business logic of RDM while providing a high-performance, native application.
What tools do you use? What kind of coding (.NET, C#, etc…)?
My workstation is a retina display Macbook Pro, running the latest Mac OS X. I use Parallels Desktop to run Windows 8 in a virtualized environment – it’s a great setup that cleanly integrates the two platforms and allows for easy sharing of files and programs between the two.
RDM is written in C# and runs on the .NET Framework. To get maximum reuse of that existing code, I’m tapping the excellent open-source Mono project that provides a cross-platform, .NET compatible runtime. This also gives me access to some excellent additional tools including MonoMac, MonoTouch and Mono for Android – allowing us to bind our C# code to the native UI toolkits as well as package the application for their respective platforms.
Most of my coding, debugging and UI development is done on MonoDevelop and XCode on the Mac however, I also use Visual Studio on Windows. I’m also using a whole slew of scripting and command line utilities to make my workflow more straightforward.
Do you have a question or comment for Richard? Then please post a comment box below. Richard is very busy, but has assured me that he will answer everyone!
And if you haven’t already, please feel free to subscribe to our blog, so that you can receive the latest news on the cross-platform implementation. I will keep you all updated with the latest news!