Introducing Icenium – an Integrated Cloud Environment for Hybrid Mobile App Development

Today is a day that my team and I have been looking forward to for a long time. Today I am happy to announce that Icenium, an Integrated Cloud Environment (ICE) for hybrid mobile app development, is now available to everyone!

Icenium Logo (1416x321, 54k)

The Story Begins

Back in July 2011, I left Microsoft and joined Telerik to take on an ambitious idea. In my time at Microsoft I had spoken with hundreds of developers and was able to witness first-hand the frustration that many of them felt working with Integrated Development Environments (IDEs) – they were big, bloated and most were designed with only one platform, or one platform vendor in mind (e.g. Visual Studio, xCode, etc.). For developers that targeted multiple platforms, using these IDEs meant downloading, installing and managing multiple platform SDKs and two or more separate development environments. For example, targeting the most relevant platforms in the world today – iOS and Android – meant using xCode with Objective C and Eclipse with Java, along with all the SDKs and tools that go along with them. Nearly 3 GB of downloads to install and maintain (not to mention, you have to have a Mac OS X environment, automatically excluding Windows-based developers). I was no different from the developers I talked to. I used these tools all the time. They took up a lot of my time to download and configure, they took up a lot of hard drive space, and they required a powerful development machine.

I also observed that while I was writing code, I was also listening to music from Pandora, saving documents in DropBox, and keeping notes in Evernote. Nearly everything I used daily was not only cloud-connected, but the cloud played a significant role in enabling the technology; that is, the technology wouldn’t have functioned without the cloud. Everything except my development tools (OK, maybe I’d deploy an app to the cloud, but the cloud didn’t aid me in my development efforts).

An ICE Age is Coming

The idea that a development environment required all of the SDKs and platform dependencies to be installed locally on a development machine with massive RAM and a big hard drive felt so antiquated compared to the other apps I used which were light-weight and used the cloud in a meaningful way. This made me want to redefine what a development environment was. I wanted to build something that enabled developers to build across a variety of platforms, and now that cloud connectivity was ubiquitous for developers, it was possible.

I left Microsoft in pursuit of a company that would allow me to chase my crazy idea, and Telerik is just that crazy (talking to you Forte). I didn’t want to build just another IDE. I wanted to build something different; I wanted to build an ICE – an Integrated Cloud Environment. I believed that we could improve cross-platform development by decoupling the gestures of writing code from the platform dependencies required when building apps. Specifically I wanted to decouple coding from the big, bloated SDKs that limited the development experience to one where the coding environment and the target environment required affinity.

The primary objective in building an ICE was to enable developers to build apps that targeted any relevant platform from any development. My theory was that we could extract the SDKs from the local coding environment and turn them into cloud-based services that could still function as part of an integrated workflow for developing apps. In other words, it still had to be an integrated development experience, and the cloud – not your OS and RAM – would become the enabling technology. The experience had to be functional, capable and simple. The age of having to master multiple complex development environments and SDKs is coming to an end. The new ICE age will usher in a new type of development tools, and the dinosaur IDEs will die off soon enough.

Welcome Icenium

Icenium™ is the realization of that vision. Icenium combines the convenience of a modern coding environment with the power and flexibility of the cloud to manage platform dependencies. Icenium enables you to build applications without being limited by the development environment having to be compatible with the run-time environment (e.g. Mac OS X to iOS). It enables you to focus on the content of your application without the headache of managing multiple SDKs and development environments. With Icenium you can use Windows, Mac OS X, Linux, or even device operating systems, like iOS on an iPad, to build hybrid applications that are distributable through the app stores, and run natively on iOS and Android devices.

I believe web developers are looking for ways to move from mobile-optimized web sites to building apps that run on devices, so we built Icenium with web developers in mind. We leverage Apache Cordova (aka PhoneGap) to enable you to use HTML, CSS and JavaScript to build your application. When your project is compiled, we build the iOS and Android native bits in the cloud, which means you don’t have to think about SDKs, Objective C or Java. Just focus on your app and leave the platform dependencies to us.

We also tailored the development experience to web developers. Most web developers (me included) prefer to work with capable, text-based code editors (and not WYSIWYG tools that modify your code without your consent), a browser and some debugging tools, such as WebKit Inspector, so we designed Icenium to work the same way. The Icenium coding environment is a simple text-based code editor, packed with advanced capabilities including syntax coloring and formatting, real-time error detection, refactoring, code navigation, and more.

Iterate quickly on your design with the integrated device simulator.

Each development client (Icenium Graphite for Windows and Icenium Mist in the browser) includes a device simulator that enables you to test your application much like you would test a web app in a browser. The device simulators include options for simulating iPhone, iPad, Android phone and Android tablet, including a geolocation simulator and the ability to rotate and flip the device. The device simulators expose the ability to use WebKit Inspector-based debugging tools – the tools you already know. We have tried to replicate the working style you already use for web apps, making the transition to mobile application development simple and intuitive.

Icenium Graphite™

Icenium Graphite with real-time syntax error detection.

Icenium Graphite is an installable development tool for Windows operating systems. It is a WPF app that provides you with the ability to build a cross-platform mobile application, test it in a device simulator, build the app (in the cloud of course) and deploy it to multiple devices at once. When you are ready, you can switch to a “release” build setting, add your icons and splash screens and package your app for publishing to the Apple AppStore or Google Play.

Icenium LiveSync™

Icenium LiveSync is one of the truly magical features of Graphite. With LiveSync you can build and deploy your app to one or more iOS and Android devices with nothing more than the click of a button. Your app is built in the cloud, and then delivered back to Graphite where it is pushed over USB to all connected devices.

Icenium integrates Apache Cordova to enable cross-platform mobile application development for iOS and Android devices.

I usually have 10 or 11 connected at once, including iPhone 4S, iPhone 5, iPad 1, iPad 3, Google Nexus, Google Nexus 7, Galaxy S2 Skyrocket, Galaxy S3, Galaxy Tab 8.9”, Galaxy Note 10”, HTC One X, and the Kindle Fire.

After the app is on the devices you can test it out and see how it works on different screen sizes and pixel densities (e.g. Retina display), not to mention different form factors (phone and tablets). If you want to make a change, simply add, edit or remove the HTML, CSS or JavaScript in your project and click “Save.” When you do, the changes are saved (in the cloud of course) and immediately pushed down to the running app on all connected devices. That means you can work in rapid iterations and see your changes on the devices in real-time, as you make them.

Icenium Mist™

Icenium Mist is a browser-based development environment..

Icenium Mist is the browser-based sister of Graphite. Mist provides nearly all of the same functionality as Graphite, and works on a variety of platforms. I use Mist on my MacBook Air, and even on my iPad, when I am away from my office. Mist also includes the modern conveniences of Graphite, such as syntax coloring, statement completion, and version control integration, as well as a browser-based device simulator that can render your app on an iPhone, iPad, Android phone and Android tablet.

Since Mist is browser-based, it doesn’t have access to deploy apps to devices via USB. Instead, you can build your app and deploy it to a device by downloading the app and pushing it to your devices manually, or simply scan the on-screen QR code and the app will be downloaded to your device.

LiveSync On-Demand

Whether using Graphite or Mist, we’ve included the option to use LiveSync in an “on-demand” way. If your app is on a device and either you’ve disconnected it from USB (when using Graphite) or you deployed the app manually or with a QR code, you can request an app update easily and the content of the app will be refreshed based on your latest saved changes in either Graphite or Mist. If it’s an iOS device, simply press three fingers to the screen for a couple seconds and you will see the download begin. If it’s an Android device, simply press the context menu and the download will begin. LiveSync on demand means you can see your changes on any device, anytime, anywhere.

Icenium Ion™

Icenium Ion enables you to forget about device provisioning during development.

If you’re familiar with Apple’s iOS development model, you know that in order to deploy an app onto an iOS device you need to first provision that device through the Apple Developer Center. Icenium fully supports working with provisioned devices – in fact Icenium can aid you in creating the Certificate Signing Request required when requesting a device provision. However, if you want to try out your app without provisioning your phone, or you want a stakeholder or beta tester to try out your app and give you feedback, then Icenium Ion is the tool you need. Ion is a development and testing utility (downloadable for free from the AppStore) that enables you to load your app onto any iOS device regardless of whether or not it has been provisioned. Simply scan a QR code provided by Icenium and the app will download and launch inside Ion. Of course, LiveSync on demand works perfectly with Ion too.

Version Control

Icenium Graphite Code Editor with Version Control-Diff Window
Integrated version control means your code is safely stored and versioned in the cloud.

Of course a development tool wouldn’t be complete without integrated version control, and a cloud-based tool better integrate with popular cloud-based version control systems, so we did just that. By default all Icenium projects are connected to an integrated Git repository in the cloud, and you can optionally configure your project to use any URL-based Git repository, including GitHub and BitBucket. Both public and private projects are supported, enabling you to collaborate and version your code safely.

Kick the Wheels (for a while)

As I mentioned, today we have released Icenium for everyone to use. In fact, I don’t want there to be any barrier in your way to trying out Icenium, so I decided to make it free for the next 6-months. We won’t begin charging anyone for Icenium until May 1, 2013. So go to Icenium.com, create an account and start building cross-platform mobile apps today. I’ll bet you can build an app faster than it takes to download xCode.

My Mac Life

I admit, I brought this on myself, and it’s up to me to solve this problem. This is my attempt at doing that. After reading this, if you are one of the few dozen people that scolded me for not following up on my post about switching the a Mac, please consider this my retribution.

Ok, I’m being dramatic. The truth is that quite a few of my friends and Readers™ honestly wanted to know how my transition from Windows to Mac OS was gong. Do I like the Mac? Was it hard? Am I still using it?

apple-logo1Yes. Yes. Yes.

My move to the MacBook Air was a slow process. In the beginning, I was excited to join the ranks of the cool kids with a MacBook Air. Reading the previous post on the topic, you’d think I was all in and this was a closed book. In reality, it took longer than I expected to make the transition. The MacBook Air was sexy. It was hip. It was alluring. What I discovered was, most importantly, it just works. I turned it on, set up my profile and was up and running quickly. I hit the Mac Store and downloaded some apps, set up my email using Mail. I was ready.

While it just worked, it worked differently, and my enthusiasm quickly went away. Windows was like an old girl friend that was just waiting for me to come back, and she was there with a gin and tonic, and a smile to greet me at the door.

In the early days of using the Mac, I almost dreaded it. I loved how reliably it worked and how quickly it booted up, but I didn’t feel productive. It took me a while to figure out how to do very basic things. I didn’t know how to navigate the file system. I couldn’t get in to the Windows network that Telerik uses. I didn’t have the apps I was accustomed to – most notably Microsoft Office. So I found myself using the Mac a little, then switching over to my Lenovo X220.

Ah, the feeling of productivity.

I was not only trying to see what life as a Mac user was like, I was also trying to see what life as a Mac developer was like, so I forced myself to use the Mac a little every day. I would do a little iOS development in xCode. I would do a little web development in Dreamweaver. Occasionally I would open up Eclipse (and then quickly shut it down out of frustration because it sucks). Over the weeks I found myself using the Mac more and more. In between writing code on the Mac I would do a little work…on the Mac (even with the Lenovo sitting right there). Mostly this was because I only had one monitor, and didn’t want to keep switching it back and forth (although I did buy an HDMI switch just for this reason).

As time past I realized that the Mac OS X Lion touch gestures were becoming second nature. They were incredibly intuitive, and easy to learn without thinking about it. It dawned on me that they had become part of my muscle memory when I found myself trying to use the two finger swipe on the Lenovo (and I was constantly using the mouse wheel and scrolling in the wrong direction).

The MacBook Air had taken hold of me.

In November I went on vacation with my wife and kids, we rarely go anywhere without at least one computer, and since this was a vacation, I decided I would bring only the MacBook Air. This was a huge step for me. I always have a computer with me, just in case something needs immediate attention. Even if I am not doing work, it’s like a security blanket – I feel uncomfortable without it. Now I was going to be traveling across an ocean, far away from my home office, with nothing but a MacBook Air. I was nervous, but if there is the right time to try this, it’s on vacation, when the computer is much less critical. The vacation was great, and the MacBook proved useful (I took a bunch of photos and used iPhoto to do some quick touch-ups before posting them for friends and family).

self_portrait

In January the transition was complete. I had purchased a Thunderbolt display and a MagicMouse, and the MacBook (now with Office for Mac, and a Windows 7 BootCamp partition) was my primary machine. I still used my Lenovo daily, mostly for network stuff at work, but the time spent on it was rapidly diminishing. I spent a week at Telerik’s office in Boston, and only brought the MacBook Air with me. And the world didn’t end.

As I write this, I am on a plane traveling from Sofia, Bulgaria to Paris, and eventually to Seattle (the photo below is from the airplane, over Sofia). I am writing this on my iPad. My MacBook Air is close by (I thought I was going to watch a movie on the iPad, but decided I didn’t have enough time). I have replaced the DLink router in my house with an AirPort Extreme, and I am back to using an iPhone pretty regularly.

IMG_0016 1

I’m not trying to be a Mac fanboy, but there are some things that simply work better. The MacBook Air is small, light and easily fits in the seat back pocket on an airplane. It boots fast, and the battery is decent. The iPad is far and away better than the Lenovo K1 Android Honeycomb tablet that i have. I had reluctantly given up my iPhone a couple years ago, and now I am back where all the good apps are.

I replaced my DLink router because it was failing, and several reviews I read pointed to the Airport Extreme as the best router for mixed Apple/Microsoft environments.. I took it out of the package and plugged it in, and within minutes a setup wizard had guided me through cloning my existing wireless network. Our total downtime of the wireless network could be measured in seconds, and the entire setup took only a clue minutes. I was impressed.

If anything has lured me to use Apple products it has been the simplicity and reliability of them. Everything just works, and rarely requires any technical expertise. I was reminded of this yesterday when I booted my Lenovo and it took 10-minutes to go from cold to a useable state. All I wanted to do was boot up, Skype a colleague and tell him where to meet me in 10-minutes. By the time it was booted, I was late to meet him and he didn’t know where we were meeting. I have yet to have this experience with the MacBook Air.

Of course, I still use Windows, but mostly I use it in my BootCamp image running in VMWare Fusion (that way I can three-finger swipe between Mac OS X and Windows). Of course, Mac OS X continues to frustrate me from time to time (for example the other day I was using some software that required me to press the right-control key…there is no right-control key on the MacBook Air). I don’t yet feel like a Power User and that is uncomfortable. It’s like when I bought my first car that had electronic fuel injection and an on board computer. Suddenly I went from being able to work on anything in it to not even understanding how it all works. I don’t like that.

I’m still learning, but I am much more comfortable with the Mac now. My fingers are getting trained to use the Command key, and I’m getting used to the significantly lower profile of the Magic Mouse.

Here are a few things I love and hate:

  • The screen on the MacBook Air is beautiful.
  • The screen on the Thunderbolt display is even better.
  • The backlit keyboard is a very nice touch.
  • Fast boot time. Fast shut down time.
  • The power cable allows you to switch out the plug with a European compatible plug (and others).
  • I can drag and drop between the Mac OS and the Windows OS in VM Ware Fusion
  • I can boot to Mac OS X, boot to Windows, or boot to Mac OS X and run the BootCamp image as a VM (I love choice)
  • Full screen apps are awesome – this is the way apps should run
  • The switching between Command+C/V/X/A on Mac OS X and Control+C/V/X/A on Windows is a productivity killer.
  • So is Commend+Tab vs. Alt+Tab
  • Compatibility with my Windows domain sucks.
  • As a general rule, developing on the Mac sucks – the tools are terrible.
  • The MacBook Air needs more RAM (especially if you are going to run Windows on it)

D7

[Ed. Note: In full disclosure, I posted this to my blog as a draft, then edited it on my BootCamp Windows 7 partition with Windows Live Writer – I simply haven’t found a better blog editor for the Mac.]

My (New) Life as a MacOS X User

Now that I no longer work at Microsoft, I have the opportunity to try new things. Today I begin a journey to see what life on the other side of the pendulum looks like. Today I begin my life as a non-Microsoft web developer. Don’t get me wrong, I still love Microsoft, but I want to see what life on the other side is like. Don’t worry Ballmer, this isn’t permanent. I’ll be back…after all, the company I work for makes its business building and selling tools, controls and extensions to Microsoft products.

Today I start a two-week trial using non-Microsoft platforms and tools. I’ll use the Microsoft software that I need to for my job (e.g. we use Exchange, so I’ll use that, and we use Skype, so I’ll use that too). At the end of the two week I will be attending the Build conference, and I’ll be coming into it with a better understanding of life on the other side, and hopefully be able to be more objective about the announcements being made.

But that’s not why I am doing this. It has been over 8-years since I owned a MacBook, and I’ve forgotten what its like to work on anything other than Windows, and use tools other than Visual Studio for development, and for the past year, using only a Windows Phone as my phone/device. I spent this morning setting up my new MackBook Air with all of the apps and tools I want, and getting my email configured, etc. I have my iPhone 4 set up with my work AT&T account, and an iPad one one side of my desk, and a Android 3.1. tablet on the other side. I’ve installed Eclipse and Adobe Creative Suite 5. It’s safe to say I am ready to shut off my Microsoft life (temporarily). Goodbye Lenovo – I’ll be back (OK, I have the Lenovo K1 Android tablet, so I am not really leaving).

My goal over the next two weeks is to use Eclipse and Adobe tools to build a website and PhoneGap to build a device extension to the site (e.g. an iOS and Android app for the website). I’ll post my experiences over the course of the next couple weeks. I expect some frustrations along the way, because its been a long time since I lived in this world, and the tools and technologies have changed. This will be a learning experience for me.

Day 0

As for Day 0 – it was easy. The new MacBook Air is ridiculously simple to set up, and I’ve gotten most everything I need installed and running in a couple of hours. My iPhone is synced, and my email accounts are set up. I’ve installed FireFox and Chrome. I’ve set up Evernote and DropBox. I registered for Trillion, and installed Skype.

The biggest issue so far is the slight learning curve switching from

Windows to MacOS X Lion. It has taken me a bit to remember how Mac OS works (I came into the Windows world after years as a Mac user). The muscle memory is coming back.

  • I LOVE the new TrackPad gestures. It is amazing how quickly the three-finger scroll became an unconscious reaction – its actually very natural.
  • I had to enable Tap to Click because that muscle memory (from Windows laptops) is not going away anytime soon.
  • The thumb-finger pinch is awkward, but I’ll keep at it.

After Build I will set up a Windows environment on this machine so I can switch between environments, but until then I am a Mac OS user.

Here we go.