“RT @gchahal: Business is about relationships. If you know how to make,
keep and let them prosper - you'll always come out top.”  »

You are currently browsing posts under the .NET Web Dev category

The Cross-Platform Enterprise Lore

August 7th, 2009 § No Comments Yet

It’s a known assertion that software applications (desktop or distributed) are not truly platform agnostic. Even if a software application is developed as a cross-platform solution, it is very difficult to make it look and work identically across all platforms (operating systems). Hence, lately I’ve been thinking about the quest of cross-platform software applications in the enterprise landscape.

Brian Clapper recently wrote why C# is now a better programming language than Java, and yet, why he still prefers the JVM to CLR:

Sun and the Java community have allowed Java, the language, to stagnate to the point where, compared to C# and Scala, it is almost painful to use.

Brian’s viewpoint is a sign of the times. A lot of Java programmers consider(ed) C# to be an inferior replica of Java, and hiked Java to be enterprise-centric and cross-platform as opposed to C#. In fact, C# (like Java, and other object-oriented languages) is based on C++. For the past 8 years, I’ve been programming exclusively in C#. I’ve consulted in Java solutions before, but sooner than later I realized that C# is abundant and flexible enough. Back then, many Java developers sighted it as sheer marketing by Microsoft to lure developers. I agreed, it was, more so because Microsoft did a better job at designing a modern OO language and a decent IDE to go with it.

Behind the C# versus Java debate, also lies a ludicrous assumption for a programming language to serve enterprise application software in a cross-platform environment. It has to be the most common notion I’ve heard time and again from Java developers and evangelists. However, the lore in reality is quite different.

Enterprise Software

Let me ask you, have you ever developed a business application with the purpose of it being deployed in a multi-platform environment? How often do you think an enterprise application software is required to be implemented across platforms? Rarely, maybe less than 1% of the times, unless it’s a niche system for disparate platforms or legacy components. In context of an average enterprise application software, the fact is that cross-platform support is not a requisite. In a very large organization, the stakeholders don’t really care about the cross-platform aspect of an average software solution. With a few hundred or thousand seats in their dispersed infrastructure, enterprises formulate strict guidelines for their base software installations across the globe. Workstations and servers in these giant corporations run a rigid set of base software (including OS, database, Web etc.), so they already know their target platform. And, if you have a single base platform to support, whether it’s Windows or Linux, enterprise application software gets a bit easier. It’s a perplexed undertaking to build a cross-platform enterprise application, due to the complex nature of technical disparity across systems, and issues associated with cost, maintainability, testing, training, and of-course time.

Google released its new Chrome Web browser, but only for the Windows platform. For the past few months, they have been working on an “identical” version for Mac and Linux, but it hasn’t been a straight-forward approach. It’s just a Web browser. Think about a much more intricate supply-chain management system that must deal with external hardware interfaces, system API’s etc. In 99% of the cases, it’s just not feasible to build a cross-platform software solution in the enterprise. So, when cross-platform support is not an issue for enterprise developers, the architecture choices are suddenly simplified. For everything else, Web applications and SaaS model have already opened doors for business solutions to be ‘hosted once and run everywhere’.

Java is a mature language. Enterprise solutions in the yesteryear’s relied largely on Java and J2EE. Enterprise solutions today are increasingly being built on C# and the .NET Framework (or Mono). The whole idea of interoperability in enterprise apps is irrelevant in my opinion. What really matters in a programming language or technology stack is not its feature set, but its ability to produce results with minimum efforts.

Embrace the new .NET Logo

October 26th, 2008 § No Comments Yet

With PDC 2008 coming up, Microsoft’s .NET Framework gets a refreshing new logo.

Yesterday, Seth Godin also wrote about the importance of a good logo in branding. As much as I liked the simplicity of the old .NET logo, I do like the energy of the new one. Silverlight-ish?

Content, not Chrome

September 3rd, 2008 § No Comments Yet

Today, most of what we use the Web for on a daily basis aren’t just web pages, they are “applications”. These applications, which run inside our Web browsers, are increasingly becoming more advanced in their functionality and more interactive in their usability.

The Web browser acts as the core container for these applications, and it is critical to any Web application in terms of security, stability, speed, and operability. In the Web browsers space, the much speculated launch of a new browser from Google, called Chrome, marks a very important step in “remaking” the Web. I’m overwhelmed with what Google Chrome offers as a product, and excited too, because this will open up doors to even more advancements in the Web application space.

Google Chrome - Web Browser

So, what’s so special about Google Chrome, that’s not already there in existing (and time-tested) Web browsers like Firefox, IE, Opera, Safari etc. I downloaded Chrome (it is open source) and played around with it for a bit, and let me put it this way – Google Chrome is not about what’s there, but about what’s not there. For the Google team, the mantra became “Content, not chrome,” which is sort of weird given the name of the browser. It’s incredible that something as potentially game-changing as a Google browser has stayed under wraps for two years.

With Chrome, the Google team has really worked on two most crucial aspects in any piece of computing software: simplicity, and speed. The interface is darn simple, a true minimal design, and streamlined for power usage as well. In terms of speed, Chrome outperforms any modern Web browser. See, today’s Web applications are powered by client-side scripting and asynchronous client-server operations, all utilizing the JavaScript engine (pretty much). Scripting engine performance benchmarks have indicated that Chrome is at least 10 times faster than Firefox and Safari, and a staggering 50+ times faster than Internet Explorer. Chrome’s V8 scripting engine (written by a small team in Denmark) actually complies the JavaScript code to machine code for faster execution. Moreover, every tab or window in Chrome runs isolated (sandboxed) in its own process (not thread), which means that even if a web page crashes, the rest of the web pages in view are not affected. Chrome is secure too. It is based on the Webkit rendering engine, which powers Apple’s Safari browser.

Google amazes me. I sit here and wonder, isn’t this how it all should have been in the first place. Having looked at Chrome for just a few hours, I can easily say that even in its infancy, it is the most promising Web browser aimed towards the future of Web applications.

Mono on the iPhone

March 11th, 2008 § No Comments Yet

It’s been a while since I’ve posted anything related to the Mono project, the open source (and cross-platform) implementation of Microsoft’s .NET. But something really interesting came up today. Mono has been ported to the iPhone. Last year, parts of the Mono Project, were also made available for the OpenMoko Neo1973 phone.

C# 3.0 Tutorials

March 4th, 2008 § No Comments Yet

As I’ve been using C# 3.0 with VS.NET 2008 at work on a production project, I thought it would make sense to mention the great tutorials posted by Michael Sync on the subject. One of the most appealing aspects of VS.NET 2008 for me has been the in-built Ajax support (basically post-back’s are processed as Ajax calls with dynamic updates within an UpdatePanel, giving a much more seamless client-server interaction).