Archive for Development

Unicode Transformation Formats

Text formats and representing language character has ever been in the focus ever since computers were invented. For obvious reasons we wanted to interact with the computer in the language that we understand better rather than in the binaries. Clearly the focus initially was to build a representation method for the international language English. But as we evolved more sophisticated in the Internet space global applications are more looking at systems that can enable users to work in their specific locale (language, currency, date and time formats etc.). As far as language is concerned the old formats such as ASCII and EBCDIC will not help in representing the characters of languages around the world.

UnicodeThe Unicode Consortium, a non profit organization developed the standards Unicode Transformation Formats that help in representing the characters of any language in the world. The Unicode Standard defines three encoding forms that allow the same data to be transmitted in a byte, word or double word oriented format (i.e. in 8, 16 or 32-bits per code unit). All three encoding forms encode the same common character and can be efficiently transformed into one another without loss of data. UTF-8 (Unicode Transformation Format 8 ) is the standard format that is used for web applications that is applications that use HTML for visual representation of text. “The Unicode® Standard: A Technical Introduction” in the Unicode site gives an introduction to the technical details of UTF.

Blink this Unicode Transformation Formats at blinklist.com    Bookmark Unicode Transformation Formats at blogmarks    Bookmark Unicode Transformation Formats at del.icio.us    Digg Unicode Transformation Formats at Digg.com    Fark Unicode Transformation Formats at Fark.com    Bookmark Unicode Transformation Formats at Furl.net    Bookmark Unicode Transformation Formats at NewsVine    Bookmark Unicode Transformation Formats at reddit.com    Bookmark Unicode Transformation Formats at Simpy.com    Bookmark Unicode Transformation Formats at Spurl.net    Bookmark Unicode Transformation Formats with wists    Bookmark Unicode Transformation Formats at YahooMyWeb

Comments      Cosmos

Rails ActiveMessaging

ActiveMessaging is a plugin for Ruby on Rails to enable messaging between applications. This brings in the ability for Ruby on Rails to integrate with messaging systems like MQ, JMS and so on enabling application integration. ActiveMessaging also features enabling applications with event driven architecture. To get started with ActiveMessaging read the article “Introduction to ActiveMessaging for Rails“.

Blink this Rails ActiveMessaging at blinklist.com    Bookmark Rails ActiveMessaging at blogmarks    Bookmark Rails ActiveMessaging at del.icio.us    Digg Rails ActiveMessaging at Digg.com    Fark Rails ActiveMessaging at Fark.com    Bookmark Rails ActiveMessaging at Furl.net    Bookmark Rails ActiveMessaging at NewsVine    Bookmark Rails ActiveMessaging at reddit.com    Bookmark Rails ActiveMessaging at Simpy.com    Bookmark Rails ActiveMessaging at Spurl.net    Bookmark Rails ActiveMessaging with wists    Bookmark Rails ActiveMessaging at YahooMyWeb

Comments      Cosmos

Technical Writing

One of the important areas of software development is technical writing. Technical writing is documenting the software that has been developed. A technical writer is a person who is well versed in the business as well as understands the technical aspects of the system and has good written communication. What does it take to write good software documentation? Refer to this article “Writing Good Software Documentation” for more information.

Blink this Technical Writing at blinklist.com    Bookmark Technical Writing at blogmarks    Bookmark Technical Writing at del.icio.us    Digg Technical Writing at Digg.com    Fark Technical Writing at Fark.com    Bookmark Technical Writing at Furl.net    Bookmark Technical Writing at NewsVine    Bookmark Technical Writing at reddit.com    Bookmark Technical Writing at Simpy.com    Bookmark Technical Writing at Spurl.net    Bookmark Technical Writing with wists    Bookmark Technical Writing at YahooMyWeb

Comments      Cosmos

Representational State Transfer (REST) Architecture

Representational State Transfer (REST) architecture is a set of architectural principles that help in representing the state and the transition in web application in terms of application’s domain using standard Uniform Resource Identifiers (URI).  The URI’s represent the state of an application and is translated by the browser, server or application to the internal needs. For example traditionally a URL like http://www.somesite.com/orderdetails.jsp?user=xyz&order=1234 represents a request to the application to bring back the order details for the user xyz for the order number 1234.  This URL is more constrained to the internal methods of sending a HTTP request rather than a request representing an order request.  In REST the order detail state in the application for user xyz for the order number 1234 would be represented as http://www.somesite.com/user/xyz/order/1234. A significant advantage in such a representation and access mechanism is the easy to understand URL. This can be followed throughout the application including the transitions through hyper links.

REST was formally defined by Roy T Fielding in his work on Software Architectures. It is worth mentioning that Roy T Fielding was also one of the co-founders of the famous Apache HTTP Server. The Web 2.0 era has graciously welcomed REST with open hands and is one of the highlights of the web sites that apply it. The hot Ruby on Rails has built in capability of REST. Java/J2EE technology by default did not have support to REST but a lightweight framework like Restlet can be used to achieve this. The FAQ section has good information about Restlet and references to REST. For not so technical readers, take a look at this blog article by RyanHow I Explained REST to My Wife“.

Blink this Representational State Transfer (REST) Architecture at blinklist.com    Bookmark Representational State Transfer (REST) Architecture at blogmarks    Bookmark Representational State Transfer (REST) Architecture at del.icio.us    Digg Representational State Transfer (REST) Architecture at Digg.com    Fark Representational State Transfer (REST) Architecture at Fark.com    Bookmark Representational State Transfer (REST) Architecture at Furl.net    Bookmark Representational State Transfer (REST) Architecture at NewsVine    Bookmark Representational State Transfer (REST) Architecture at reddit.com    Bookmark Representational State Transfer (REST) Architecture at Simpy.com    Bookmark Representational State Transfer (REST) Architecture at Spurl.net    Bookmark Representational State Transfer (REST) Architecture with wists    Bookmark Representational State Transfer (REST) Architecture at YahooMyWeb

Comments      Cosmos

Daylight Saving Bug

If you are a developer working on applications that is using calendaring, date/time operations then check out this news “Daylight-saving bug could foil computers” in CNN. You might want to do some tests to make sure your application works OK before it is too late to react.

Blink this Daylight Saving Bug at blinklist.com    Bookmark Daylight Saving Bug at blogmarks    Bookmark Daylight Saving Bug at del.icio.us    Digg Daylight Saving Bug at Digg.com    Fark Daylight Saving Bug at Fark.com    Bookmark Daylight Saving Bug at Furl.net    Bookmark Daylight Saving Bug at NewsVine    Bookmark Daylight Saving Bug at reddit.com    Bookmark Daylight Saving Bug at Simpy.com    Bookmark Daylight Saving Bug at Spurl.net    Bookmark Daylight Saving Bug with wists    Bookmark Daylight Saving Bug at YahooMyWeb

Comments      Cosmos

Linux Desktop Based Development Environment

Note:- If you are a .Net developer you can straight away skip this post.

At Compassites we have projects getting developed using Ruby on Rails, Java/J2EE and .Net technologies. The development environment for the projects on Ruby on Rails and Java/J2EE are all open sources that can run on any operating system. Gone are those days when UNIX/Linux environments were only suitable for production environment. The main reason given by the software engineers who were addicted to the Microsoft environment was the usability of the system and the difficulty in using a command line based environment. But now Linux has penetrated the desktop environment and is making significant improvement. The level of usability and ease of use is on par with what Windows offers. The biggest plus is they are open source, free or with a very nominal fee.

UbuntuWe decided that we have to leverage this and slowly started migrating development environment to Linux desktop environment. While a Google search will give you links to several Linux desktop environments, we decided to go with Ubuntu as our desktop OS because of the simplicity in installation, configuration and very good usability. The following is a typical development environment setup that our developers on Ruby on Rails or Java/J2EE projects. All of them are open source and is available for almost all major operating environments.

Sun Java SDK - Java Runtime support
Ruby on Rails - Ruby and Rails programming environment
Eclipse IDE - Open Integrated Development Environment
RadRails Eclipse plugin - Rails Coding on Eclipse IDE
Subclipse - Subversion management from within Eclipse
Apache Ant/Maven - build and deployment automation
Apache web server - serve static contents of web application
Apache Tomcat application server - run J2EE applications
JBoss application server - run J2EE applications
WEBrick (Ruby library no separate installation required) - run Rails applications
Open Office (comes with Ubuntu) - Office applications
Firefox browser - Web application testing

A dedicated Linux box runs the following and is used by all the projects.

MediaWiki - Project documentation
Subversion - Version control system
Mantis - Bug tracking tool
Luntbuild - Continuous Integration management

Apart from the above we have few more Linux boxes that run the applications for development testing and QC.

One caveat that we faced was the developers testing the web applications on Internet Explorer (IE). Since IE is still a major browser used by the internet community, testing the applications for compatibility is a must. A Google search on IE on Linux will result in the top sites that mainly talk about the open source software IEs 4 Linux and/or Wine. Wine is an Open Source implementation of the Windows API on top of X and UNIX. It basically cheats the windows based software to think that it is running on a windows environment (you can see folders like drive_c/program files/internet explorer/ etc being created under the installation directory). We tried using Wine and installed IE 6 on Ubuntu. But we were not happy at all because it was not close enough to how the application looked on a real IE on Windows. Finally we resorted to dedicating couple of Windows boxes that were enabled with remote login. Using the Terminal Service Client program in Ubuntu, developers were able to login to the windows systems virtually and test the applications on Internet Explorer. This has been working quite well and we are happy.

The other caveat is importing the existing mails from Outlook. This was a problem for only the developers who started with Windows and had to be migrated to Ubuntu. New joiners straight away started with Evolution or Thunderbird. Evolution or Thunderbird does not import the CSV/tab separated file exported from Outlook. If any one has any insights on this please do send a mail to me.

Why a Linux based desktop environment? The following are the advantages a Linux desktop based development environment brings.

  1. The ultimate production environment is a UNIX/Linux environment and it is better the environment be similar from the development. When I mean environment I mostly mean about the file system. This already solves indifferences like the file separator (Windows \ vs. UNIX /) problems and the text encoding (PC by default in Windows and you can see ^M characters for end of line when transferred to a UNIX system). Usually there will be images folder that contains the images used by the web application. In a windows environment if a developer opens this folder in explorer’s thumbnail display mode, windows creates a file called Thumbs.db. Windows uses this to cache information about the images so that it can display the thumbnails fast next time you open the same folder. This can be disabled through the folder options but usually is unnoticed by a developer because it is a hidden file. I have seen this file go all the way into the source control and up to the production environment. Of course all these are really not showstoppers and the application would run in the production but I think it is a matter of discipline and keeping the production environment clean.
  2. The strength of a UNIX/Linux system is the file system and the security. The chances of a UNIX/Linux based system getting affected by virus is almost zero. This means there is no need for an anti virus software. That means added cost savings apart from the operating system license costs.
  3. The third key advantage is to get used to working on UNIX/Linux environment. Working on a UNIX/Linux environment is fun. It could be hard initially to work with particularly if you are addicted to Windows but as you keep working you will know what I mean and it is difficult to get away from it. This also helps in working in a production environment and handling hosting and maintaining the application in the production environment.

Blink this Linux Desktop Based Development Environment at blinklist.com    Bookmark Linux Desktop Based Development Environment at blogmarks    Bookmark Linux Desktop Based Development Environment at del.icio.us    Digg Linux Desktop Based Development Environment at Digg.com    Fark Linux Desktop Based Development Environment at Fark.com    Bookmark Linux Desktop Based Development Environment at Furl.net    Bookmark Linux Desktop Based Development Environment at NewsVine    Bookmark Linux Desktop Based Development Environment at reddit.com    Bookmark Linux Desktop Based Development Environment at Simpy.com    Bookmark Linux Desktop Based Development Environment at Spurl.net    Bookmark Linux Desktop Based Development Environment with wists    Bookmark Linux Desktop Based Development Environment at YahooMyWeb

Comments (2)      Cosmos

Apache ab - Benchmark Web Server Performance

One of the key performance tests is to benchmark the number of requests that your web server can handle given the environment in which it is installed.  Apache ab is a web server performance benchmarking tool that helps in determining the number of requests that the web server can receive per second. Apache ab is a simple program that comes with the apache installation and should be available in the bin directory. If you are in a *nix environment most likely it should be in the path and just typing ab will show the help using the command.  For usage of this simple yet effective stress testing tool, refer to the apache ab documentation page.

Blink this Apache ab - Benchmark Web Server Performance at blinklist.com    Bookmark Apache ab - Benchmark Web Server Performance at blogmarks    Bookmark Apache ab - Benchmark Web Server Performance at del.icio.us    Digg Apache ab - Benchmark Web Server Performance at Digg.com    Fark Apache ab - Benchmark Web Server Performance at Fark.com    Bookmark Apache ab - Benchmark Web Server Performance at Furl.net    Bookmark Apache ab - Benchmark Web Server Performance at NewsVine    Bookmark Apache ab - Benchmark Web Server Performance at reddit.com    Bookmark Apache ab - Benchmark Web Server Performance at Simpy.com    Bookmark Apache ab - Benchmark Web Server Performance at Spurl.net    Bookmark Apache ab - Benchmark Web Server Performance with wists    Bookmark Apache ab - Benchmark Web Server Performance at YahooMyWeb

Comments      Cosmos

Regular Expressions

Regular Expressions are way of matching patterns of string in another string.  This standard notation helps extremely well to find patterns of string within another string rather than traditional way of searching the pattern in all permutations and combinations. Regular Expressions are supported by most of the programming and scripting languages. For history and theory behind regular expressions look at this link in wikipedia but if you want to know the patterns and the explanation for example how to use in JavaScript here is the reference to it - “Regular Expression Patterns“, though this is applicable in  most of the languages.

Blink this Regular Expressions at blinklist.com    Bookmark Regular Expressions at blogmarks    Bookmark Regular Expressions at del.icio.us    Digg Regular Expressions at Digg.com    Fark Regular Expressions at Fark.com    Bookmark Regular Expressions at Furl.net    Bookmark Regular Expressions at NewsVine    Bookmark Regular Expressions at reddit.com    Bookmark Regular Expressions at Simpy.com    Bookmark Regular Expressions at Spurl.net    Bookmark Regular Expressions with wists    Bookmark Regular Expressions at YahooMyWeb

Comments      Cosmos

Next entries » · « Previous entries

Creative Commons License  This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.