Monday, March 29, 2010

Introduction

My names is Robert Burke, and I am a computer programmer. I have worked for Turner Broadcasting in Atlanta, GA for nearly 10 years.

My degree is in Mathematical Programming, which was basically solving math problems in C and Fortran. In school I learned Pascal, BASIC, Fortran, COBOL, Visual Basic, HTML, C, and C++. In my working career, I have primarily worked with C++, C#, JavaScript, and ActionScript. I am also proficient in XML, XSL, BATCH file scripting, WSH scripting, Apache Ant, etc. I have worked a little with Java, primarily writing custom Ant tasks.

Most of my experience is in front-end programming, though only a small part of that is actual UI coding. I consider myself more of a framework programmer, creating frameworks used by others for front-ends.

At my current job at Turner, I have primarily worked on the Turner CMS used by various websites owned or produced by Turner to publish the website - cnn.com, si.com, nascar.com, nba.com, etc. I have worked on a few other projects, notably the Pipeline Video Player for CNN.com (a down-loadable .NET app), and the web-based Video Player used for a few years by CNN (this was a large JavaScript framework). But most of my work has been around the Turner CMS. I have worked on three major versions of the Turner CMS, with the imaginative names of CMS1, CMS2, and CMS3.

I inherited the front-end of CMS1. This was a C++ CORBA back-end, Oracle DB, and an MFC front-end. My first task at Turner was to rewrite the front-end to dis-entangle the MFC UI logic from the CORBA business logic.

CMS2 was the next and current version. The back-end is Weblogic EJB and Oracle DB. The front-end is a complex C++ framework on top of MFC and ATL. There is also Java code running on the front-end, using a product called JIntegra to run a JVM within our C++ process, and wrap Java classes in COM proxies. The front-end application is deployed on Citrix terminal servers, so that our Windows and Mac users can both use it.

CMS3 is the future version we are working on now. The current plan in is an Adobe AIR front-end and REST services as the back-end, with CouchDB as the data store.

Coming from Visual Studio and .NET, I have some pretty strong opinions about ActionScript, Flash Builder, etc. From a developer's standpoint, Adobe is light-years behind Microsoft in terms of runtimes, frameworks, IDEs, etc. However, Adobe is ahead in terms of creating skinable, cross-platform desktop apps. Our new app must run on both Mac and Windows, since we want to stop using terminal servers (particularly important for all our video editing requirements - you cannot scale terminal servers if users are doing CPU-intensive stuff like watching video).

We considered Silverlight. I love C# programming and the .NET framework, and Expression Blend is far superior to Catalyst. However, we need the power of a desktop app, and Silverlight running out of the browser is in the same security sandbox as when it does run in the browser.

We also do not want an in-browser app, because of the security sandbox, the problem of staying on the right page, the browser's chrome (which is just confusing) and the fact you cannot have any keyboard shortcuts for power users since the browser has mapped most of them.

We also briefly considered Eclipse RCP, thought we did not look too much. We are very impressed by the OSGI plugin architecture of Eclipse, and we need our app to be modular in a similar fashion. However, most RCP apps look like IDEs. The big problem is the lack of declarative GUIs like XAML or MXML. This allows for cleaner separation of developer and designer concerns. I have heard the next version of RCP will have declarative GUIs, but I believe the UI will still be form-based (SWT wrappers around OS Native windows), instead of the vector-graphic UI of WPF/Silverlight or Flash. I am not a big believer in app chrome that does not match the OS chrome, but it is great in WPF or Flash to be able to easily create very custom UIs and animations.

We also considered a .NET desktop app that could run on Mono on Macs. However, Mono has not ported WPF and probably never will, and we want the nicer UIs.

So, the logical choice is Adobe AIR, though I am still somewhat blah about the decision. C# is a better language, .NET is a better framework, Visual Studio is a better IDE, Expression Blend is a better designer tool, and on and on. Unfortunately, Microsoft does not want to play in the cross-platform desktop app arena.

Enough for tonight.

No comments:

Post a Comment