27 April 2013

Let's Go Programming

Go is an evolutionary programming approach in which programmers can be more productive in making use of multicores and in process having more control and flexibility for concurrency. It is a language that has a mixture of both Java and C. Aspects of garbage collection are notable. The language even signifies less in coding lines compared to Java's verbosity. It feels like an interpreted language in dynamic mode and yet is compiled with static typing. It transcends what a lot of people would want in terms processing big data and working with intelligent algorithms. A programmer with the comparative speeds of C to the clean modularity, concurrency, and garbage collection structures of Java could only mean more productivity. Although, it can be also noted that Go is not as fast as either Java or C in benchmarks yet. However, the aspect of utilizing multicores makes for less of a wastage in a cloud computing environment. Where there is simplicity required, rapid prototyping for delivery, and less of an overshadowing engineering cycle, Go could be quite a suitable language. Go is still very new and does not facilitate much integration with other languages. It also does not seem to have the flexibility of rich open libraries yet like Java. However, in time as for all languages, new releases and community insights would add further to the road map. Go certainly seems like a promising language for the future prototyping. Perhaps, not just yet production ready.

A good reading guide to get started:

22 April 2013

The Ultimate Web API

The use of APIs have been around for decades from web, desktops, to mobiles, and everywhere from software to hardware. They are ubiquitous and pretty much everywhere these days. No doubt even the microwave and the washing machine uses some form of an API or a stack of APIs. Now as a result of REST and HTTP as well as cloud computing even more APIs have started to flourish. The value in an API depends on the usability and scalability of its design. Badly developed APIs are unnaturally designed and cause grief to developers both consumers and providers. Consuming applications often times built as mashups rely on such APIs to provide access to resources and with badly mapped functions and parameters it can impinge on quality of the application as a whole. One can explore a behemoth of APIs on the programmableweb. API development is a craft and an art which one can really only get right from exploring, learning and experience in understanding both the application as well as its users. Below are a few useful books for API design.

20 April 2013

Open Source Licenses

For the uninitiated and even for experienced developers software licenses can be a tricky terrain to walk on. Often times even leaving lawyers a bit misguided. There also are so many to choose from dictating different levels of propensity for open source. How does one decide on what open source software to use or even what open source license to apply to their own software? And, this process seems to be getting more and more complicated as more and more open source software is released on the web which eventually has a sponsored or commercial backing. For so many businesses certain licenses like LGPL can mean a very tricky territory. The following link attempts to bring a lot of clarity to the community license process.

open source initiative

Why Dart Will Never Replace JavaScript

Dart is a new type of client-side programming language to compete or potentially replace JavaScript. And, as I snicker with doubt on the prospect of any language on client-side trying to replace the dominance of JavaScript and the potential culpable replacements, I can only hazard at how miserably they will fail. Along came VBScript and with a quick demise. Henceforth, a new language has developed and entered the periphery called Dart. This language has been under the auspicious development at Google. The developers at Google have even admitted and rejected the idea of Dart as a replacement for JavaScript. Well, what are the goals of such a new language in prospect.

"Create a structured yet flexible programming language for the web". Aren't there already plenty of structured and flexible programming languages out there for the web? 

"Make Dart feel familiar and natural to programmers and thus easy to learn" If that is the case then isn't it always a drag to learn a new language? If the language is so familiar why not improve on the existing languages that programmers are so familiar with and put effort in improving them with the open source community? 

"Make Dart appropriate for the full range of devices". If it is such a fragmented market for mobiles, why fragment it further by creating another language? Going further, why setup separate tools just to support another language on a platform. It seems to me more like a wasted effort towards attaining simplicity by making things more complicated. 

"Provide tools that make Dart run fast across all major modern browsers". Here again it seems just to support the language there has to be so many other tools to develop around it. Further complexity and fragmentation. 

Dart appears to also be a replacement to GWT. Some of the developers on GWT project migrated to the Dart project. It seems like to improve the scripting one will obviously need to access JavaScript from time to time even while using Dart. If one already knows JavaScript, why create another layer of compiler complexity. JavaScript is almost ubiquitous and everywhere, even with its undulating quirks. It can be found on desktops, web, to mobile devices. Anyone, that tries to even hinder at the prospect of replacing such a language would need to convince the world about such an action for which adoption will be extremely slow perhaps even openly rejected by many. As the HTML5 emerges so has the mere importance of JavaScript and the many libraries that are brewing over the web. HTML5 has even relegated Flash/ActionScript to a certain degree especially for the mobile. Almost all web browsers support JavaScript today. Although, Google can be applauded for the continuous effort towards innovation and rediscovery. One cannot but wonder whether Dart will also be another Google project brushed aside by the large open community and business decision eventually meaning its demise.

6 April 2013

Python vs Ruby vs PHP

Programming Language wars have been going on for decades. And, yet when one searches the web they still continue comparing and contrasting through the vast array of their unique uses and externally distilled libraries. Each of them has a personality and a drive of their own with their own passionate community. But, as often functionality and speed to delivery precede the developers choice. As they say time is money but in this era of cloud computing and data consumption it is also about the wise language choice within the infrastructure verses the compromises that may come within the long-term maintenance risk. Often times the skills of the team, the open community, the customers, and the functionality of the application dictate the use of language. As the web continues to evolve around us so do the technology drivers that make it all happen.