Fusioncube

The online journey of a technophile, by Steve Brownlee

All that time wasted learning the .NET framework

Saturday
Jan 28,2012

It hit me tonight that all that time I spent learning the .NET framework starting way back in 2002 was mostly wasted. As much as I love the C# language and have come to appreciate F# (can’t say the same for WPF & WCF), it just hit me tonight that with Windows 8 and the Metro style of applications – in addition to Node.js being ported to Windows – that all I’ll need to know is two languages. On Windows 8, to build user applications, I’ll only need to know C++ and JavaScript.

That’s weird.

Recent reading:
Windows 8’s Metro UI Isn’t Very Good Without Touch, But That Doesn’t Really Matter

Windows 8 Metro: Now with mouse support

Tuesday
Oct 4,2011

I watched part of the Adobe MAX presentation yesterday in which Adobe said that they are acquiring Nitobi, the company behind PhoneGap. PhoneGap is essentially a competitor to Titanium. Not a complete competitor, but read on. This development is likely the harbinger of changing the game entirely. Here’s why.

Further reading: Ars Technica | Adobe Acquires Nitobi

Flash is back to being just Flash

Adobe Flash lost as a web application development standard, and Adobe knows it. They are spending tons of cash right now in a game of catch-up and expect to be the leader in web development again (they were just a short 5 years ago). After their initial, bitter battle with Apple and running Flash apps on iOS, they turned things around and you can now use Adobe tools to deploy apps on iOS. They already released a beta of a complete IDE for building HTML5/JavaScript5/CSS3 applications. It’s called Adobe Edge.

Adobe PhoneGap

With the power and capabilities of Edge growing with every release (because their customers are demanding it) it is most likely that PhoneGap will be tightly integrated as the de facto framework for building applications in the tool. Much like when Appcelerator purchased the Aptana IDE and converted it into Titanium Studio which allows us to code, build and deploy applications from one tool, Adobe Edge will be a complete IDE for HTML/JS/CSS application development.

Further reading: CNET | Adobe Sharpens Edge

Desktop

Now, if you are building desktop apps, PhoneGap is not an option because it is exclusively mobile. It’s the main reason that Titanium Desktop became so successful. Unfortunately, Titanium Desktop seems to be an abandoned, or at least orphaned, child in the Appcelerator roadmap. The few Appcelerator employees that I talked to at the conference two weeks ago did not have any answers as to how their desktop product fit into their future plans. They are currently focused 100% on their mobile application development tools. This is most likely because Appcelerator is resource strapped and simply giving all of its focus to what customers are demanding RIGHT NOW.

Adobe has no such limitations. Their AIR Runtime already allows developers to build HTML/JavaScript applications that can run on any desktop OS. Unfortunately, it could not run on every mobile OS, so it will most likely be abandoned and replaced with the eventual PhoneGap successor for mobile apps. I don’t see Adobe abandoning the desktop because they already have a dedicated presence there, and with the (finally) released information about the Microsoft Windows WinRT API in which you can author complete applications with JavaScript, it plays right into the hands of Adobe.

It’s highly probable that Adobe Edge has AIR integration for desktop applications before the official 1.0 release.

One Source

So what this gives us is more than one option for every environment. The source code for the GUI would continue to be in one language, but then could be built, or interpreted, to any platform. It will be interesting to see what Adobe does with the PhoneGap platform in the next year.

JavaScript

  1. WinRT for Windows applications
  2. Adobe AIR for Windows/OSX/Linux applications
  3. PhoneGap for mobile web apps with native capabilities
  4. Titanium for desktop and true, native mobile apps (and now web apps)

I find it interesting when I talk to developers who are focused on Java and .NET platforms about how JavaScript will soon replace a huge chunk of what they currently have to do when making applications with a user interface. I would think it would be a source of jubilation – no more worrying about cross-platform UI issues in compiled code – but I find there’s still a lot of resistance and denial even though the facts are all right in front of us.

This next generation of application development is going to be fun, not only because we can reduce the amount of code we need to write, but also because the entire industry is moving away from the immobile desktop and towards the mobile device platform.

Wednesday
Sep 28,2011

On October 5th, Brian Cavalier will be presenting his work on Asynchronous Module Definition API and CommonJS modules. It will be a very interesting presentation and should generate some great conversation.

Event Link: AMD and CommonJS modules

On October 11th, we’ll be covering Appcelerator’s Titanium framework which is an open-source framework that allows you write an application in JavaScript and then build native apps for iOS and Android (and Blackberry soon). You can also deploy the application to the desktop – whether it be Windows, OSX or Linux. One source code library to deploy to 6 platforms!

Event Link: Appcelerator Titanium Framework

On October 25th, we’ll be discussing how to build a JavaScript application and deploy it in the Adobe AIR runtime. With Adobe AIR, JavaScript developers can use their existing skills and code to build responsive, highly engaging applications that combine the power of local resources and data with the reach of the web.

Event Link: JavaScript and the Adobe AIR runtime

Wednesday
Aug 31,2011

By popular demand, the next meeting for Pittsburgh JavaScript Developers will be about jQuery.

When jQuery Attacks!

Tuesday
Aug 16,2011

More of a personal post for future reference, but in case anyone else stumbles across this, let me know if you have a better way of doing this.

I’m writing an application with ExtJS 4 and when the user clicks on the close button a Window header, I simply want to close it and reset the state on the parent window. However, when the user clicks on the Save button, I want to perform some other actions and then close the child window and the state of the parent window’s controls will be something else.

My problem is that in the MVC architecture defined in ExtJS 4, I only had the child window’s close event on which I could listen – that event is fired when the user clicks on the header icon, and when I execute window.close() in the save method’s logic.

Anyway, the only way I could capture when the user clicked on the header close icon was to override the Ext.panel.Panel method initTools(). I simply copied the entire method from ext-debug-all.js and changed which method handles the header button click gesture. I then added the headerClose() method which is basically the close() method but with an added event being fired – headerclose.

Ext.define('MyApplication.Child.Window' ,{
   initTools : function() {
      ...
      if (me.closable) {
         me.addClsWithUI('closable');
         me.addTool({
            type: 'close',
            handler: Ext.Function.bind(me.headerClose, this, [])
         });
      }
      ...
   },

   headerClose: function() {
      if (this.fireEvent('beforeclose', this) !== false) {
         this.fireEvent('headerclose', this);
         this.doClose();
      }
   }
};

Now, in my controller I can handle that gesture specifically while handling the more general close event in a different way.

/*
 * Action handler for when the user clicks on the window close button
 * on the child window, while the general close event does nothing
 */
'childWindow': {
   headerclose: function() {
      this.resetParentState();
   },
   close : function() {
      // Just a stub to show nothing is done on close()
   }
},

'saveButton': {
   click : function(button) {
      doSomethingVeryCool();
      button.up('window').close();  // This will not reset the state of parent window
   }
}

About Steve

I am a technologist, and have been ever since 1980 when I got my very first TRS-80 and programmed it to do my math homework. I love to share the gift of technology with others and show them the wonderful things it can do for them, and how they should not fear it, but embrace it.

Latest Tweets

  • 56 Light & Clean Website Designs Using A Minimalist Color Scheme | SpyreStudios http://t.co/vbUBSJC2
  • Ok... stayed up way too late trying out website designs for my wife's new nonprofit. The kids will be getting me u... — http://t.co/QrKh5iBI
  • Am I the only one who likes Google’s new privacy policy? http://t.co/qwcym5wH
  • All that time wasted learning the .NET framework - Fusioncube - http://t.co/krANoWmg
  • @marcesher libraries like Less only do what you tell them. You can make a mixin to do that, but it doesn't assume anything (which is good)

Subscribe

Entries (RSS)
Comments (RSS)