Introduction: Ever since the dawn of the Internet Application Service Providers have developed internet based applications for which they can charge through a subscription based business model. Earlier there was no standardization across these online service offerings, but web services emerged to create various standards for providing these online services: SOAP, UDDI, etc. Internet businesses adopted web services quickly and started introducing pay-to-use services on the Internet. Many companies even made publishing web services through a subscription model as their core business (weather services, financial data, etc.).
When you are developing a windows application, it is necessary to have an updater strategy built-in. We all know that enhancements and fixes are a part of the software development process. Best practices and frameworks exist for creating application updaters services, and integrating them in your windows application. Microsoft provides ClickOnce technology which makes it very easy to package your application so that it can easily updated whenever there is an update in the application. Another approach is the Updater Application Block (UAB) which is a bit more difficult to implement, but also offers a great deal more flexibility in what you can do with it.
Scalability and robustness
Since a very compelling business reason for using cloud computing is the ability to scale on demand and when needed, using the best practices and guidelines for designing large scale distributed systems is a good starting point. While academia has a preference for distributed transactions, ACID properties, and all kinds of consensus protocols, you are better off with loosely coupled systems where nodes will eventually reach a consistent state (as opposed to waiting for all nodes in a very large system to reach a consistent state before proceeding). Considering the state of existing systems, loosely coupled self healing self regulating systems should be preferred over system with exotic distributed transactional properties and consensus protocols. Continued »
Enterprise Application Integration
You need to consider how your system integrates with other systems in your organization. Clouds are good but one-off systems that use cloud but do not integrate with existing systems will diminish the payoffs of using a cloud.
You need to consider how your system and its data get integrated with existing data. This may need to be done both ways. Without access to existing data or data created and maintained by your cloud based system, you will again limit the potential of your system under design. Continued »
Definitions and architecture
I am not a big fan of using definitions as a starting point. In technology many useful and successful concepts have escaped definition. People still argue about what exactly is an object in an object-oriented system. There is no scarcity of definitions for software architecture. The internet cannot be pinned down to a simple definition. A definition, however, it is still useful in certain contexts. Continued »
We have all heard the usability spiel: that technology is more or less a commodity, that ease of use – and in fact “delight of use” – should be paramount. We have also heard the horror stories of expensive enterprise and consumer applications that failed miserably because they were just too “kludgy” to use. Yet even today, for every wonderfully user-centric design (think iPhone) there are dozens of desktop or web applications that are boring at best, and simply unusable at worst.
Why is this so? Perhaps the problem is that when you are early in the SDLC, there are so many other challenges and moving parts that you have little time to worry about usability. You worry that bringing the “naïve” users in for design discussions will just derail the project or send it off on a tangent. On the other hand, if you wait till you are through with version 1, you have been compromised as well – it requires great courage to admit at this point that usability is poor and that major elements of the application have to be re-designed.
These are formidable challenges. Yet we at Nagarro recently had a very positive series of usability-related discussions with a major client, which may be useful to recount in this context.
Continued »
I am a big fan of .NET reflection. However most often you will hear more of critics than praise. The biggest of all “It’s slow.” Web is full of cautions and warnings telling you not to use it. Some will go as far as saying that if you care for performance, do not even think about using reflection. If you go on and read beyond the highlight points, you will realize that a large percentage of these warnings and cautions are discussing a particular scenario where some developer failed to get what s/he was trying to achieve. And while being judgmental with the experiment a generalized statement like this comes up as an end result. Continued »
Google recently released a Java runtime environment for their App Engine platform. As a software development organization, this offering is of special interest to Nagarro, as it offers several advantages over competing cloud hosting environments. Hosting a Java application on Google’s infrastructure provides automatic scaling and load balancing, a feature that is of interest to a number of our software product development ISV customers. To better understand the issues and risks, we conducted an internal exercise to assess the technical effort required to port an existing application to the Google App Engine for Java (GAE-J). Continued »
A large number of applications today have some kind of a notification mechanism built-in. More often than not, an email is used to send these notifications. Typically, while developing these applications, developers use their own inbox to send notifications to. Or they setup some dummy account to send test emails to; or sometimes they might send test mails to real users (it’s been known to happen). Continued »
One of the first places where the ActiveRecord pattern first appeared, was in the book Patterns of Enterprise Architecture by Martin Fowler. The ActiveRecord pattern embeds the knowledge of how to interact with the database directly into the class performing the interaction. Continued »
Recently, I have been working on porting a Struts and uPortal based legacy application to GWT. This work was initiated a year ago to replace an unappealing, non-responsive and slow user interface of the legacy application. Another key requirement was to make the client side technology stack lighter. Use of multiple client side technologies (Struts, uPortal, JSP, Tag libraries, Java Script, configuration files, CSS, XSLT) made it difficult to make even simple UI changes. Continued »
Computer chip manufacturers cannot keep on increasing the clock speed indefinitely to make their processors faster. They seem to have already reached the limit (on clock speed) and have started putting multiple Continued »
Exception Logging is always an interesting problem to solve. Depending on your needs you may have a simple log statement which writes to a text file, or you may need to have a full-fledged exception management module which Continued »
It’s not that we don’t have enough people offering opinions on what is a better language. It’s just that some of us never tire of discussing it. There are so many perspectives, so many arguments, and so many people willing to Continued »
Ward Cunningham is well known in the software engineering community and was famous in his own right for his work on WyCash and the development of CRC Cards, Extreme Programming, and Programming Patterns, even before his Continued »
