Monday, January 19, 2009

OpenID - One login to rule them all

Imagine logging to your GMail and then browsing to your Facebook, Hotmail, MySpace, Wordpress, personal Blog etc. without needing to login at all. We are not there yet but the OpenID technology will be getting us there hopefully by the end of 2009.

No longer will you have to remember multiple usernames/passwords. You will have the freedom to use any 1 website to actually have your 1 username/password. Other sites will merely ask that 1 site to authenticate you. Lets say you really don't want to trust the likes of Google to have your username/password. No problem, you can run your own OpenID server by just installing a simple Php script (or this) and have Facebook, Gmail, Yahoo etc. ask YOUR server for authenticating you.

Already big names like Google, Yahoo, Microsoft, IBM are on board. But they still have to integrate OpenID into their own websites.

Similar solutions like Microsoft Passport and Single Sign-On solutions from various vendors like IBM, Oracle and Sun did not pick up any momentum due to their propriety and single vendor only nature.

For web developers, you will have to allow users to register and login themselves to your sites using OpenID. Since OpenID also allows for the server to send you profile information once the user registers on your site, this will also mean that your website registration will be a 1-click action. This equates to more users for your site.


Thursday, January 15, 2009

Run your Application/Database server from a CD/DVD

If you are into selling server based software and you have had to give demos to clients, you know how difficult it is to set up the environment perfectly so you do not end up looking stupid in front of the client. Most companies have laptops specifically kept for demos so nothing is messed up at the time of a demo. DWebPro allows you to set up your whole server on a CD or DVD which can be run directly on any running Windows PC.

It supports:
  • PHP
  • Perl
  • Python
  • Ruby
  • Rebol
  • Delphi Web Script II
  • ASP 3.0
  • ASP.NET 1.1 / 2.0 and Embedded
  • JSP/Servlet
  • Zope
  • Railo (CFML Engine)
  • ColdFusion
  • EXE/CGI/ISAPI
  • MySQL
  • SQlite
  • Microsoft Access
  • HSQLDB
  • Firebird *
  • PostgreSQL **
  • Microsoft SQL Server 2000 / 2005 / Compact Edition
  • Oracle XE


If you have a binary version of your application code, you could even give a time-limited version of the demo to your client on CD/DVD.

Free Educational Software for Kids

Being a father of 3 I am always looking for good educational software for my kids to learn new things. I came across the Educational Freeware website today which has a long list of FREE educational software for kids. Games for toddlers, learning to type, Math, reading but my personal favorite Programming.

There is also Babysmash which is "a free keyboard banger game for very young kids." Use it to let your newborn beat the crap out of your keyboard and see colourful symbols appear on the screen.

I already have my kids using Linux (Edubuntu) and GCompris. My 6 year old is using the free Lego Digital Designer to create 3D models himself.

Friday, January 2, 2009

Choosing an AJAX Platform

When looking around for a good AJAX platform to use for development of a new application I am working on, I came across many platforms each with its own strengths and weaknesses. I would categorize them as follows:
  1. Coding is done using a server side XML which in turn generates Flash or XHTML files (Open Laszlo)
  2. Coding is done using server-side Javascript which in turn generates client side Javascript based AJAX interface (Jaxer)
  3. Coding done using a server-side language (Java, PHP, ASP.NET) which in turn generates client-side Javascript based AJAX interface (ZK, MS AJAX, YUI.NET)
  4. Pure client-side Javascript AJAX libraries which can further be categorized into:
    1. libraries only providing multi-browser javascripting capabilities along with basic animations (prototype, jquery)
    2. libraries providing a complete set of user-interface widgets along with multi-browser scripting and animations (Dojo, YUI, Ext)
The cons of each method in the same order are as follows:
  1. Single vendor only, capabilities limited by what has been implemented leaving very little room for customization
  2. Single vendor only, capabilities limited by what has been implemented leaving very little room for customization
  3. Client-side Javascript coding limited by what has been implemented leaving very little room for customization
  4. For client-side libraries:
    1. User-interface widgets not available; the source code will be split into 2 languages, 1 on the server-side and 1 on the client-side
    2. The source code will be split into 2 languages, 1 on the server-side and 1 on the client-side
I like the last option the best as it gives me the most opportunity for customization of the user interface and also provides the most needed widgets out of the box. Yes I will have to work with both Javascript and a server-side language but then web development has always involved knowledge of more than one language.

There is also the question of the licensing cost of the platform you choose. Although almost all of the platforms I have mentioned above are open-source, some of them may cost you if you decide to develop a commercial product (ZK and Ext).

So I came down to deciding between Dojo and YUI. Dojo has a huge community supporting it and provides a lot of opportunity for customization but unfortunately its documentation is not that complete. YUI on the other hand has loads of documentation right out of the box to get a first time AJAX developer up and running in no time.

For my current project I have chosen to go with YUI but definitely in the future I will user Dojo.

Tuesday, December 23, 2008

Make your own Enterprise Software - NO Coding - for FREE

Rapid Application Development platforms like MS Access and FileMaker Pro have allowed non-programmers to create simple database driven applications with drag and drop editors for ages now but there were always limitations to what you could do. The biggest limitation was I feel their inability to handle a multi-user environment. With the popularity of the internet and companies looking into having web-based client/server applications, these tools feel short.

A couple of weeks back I talked about Oracle Application Express which allows you to create web-based applications without any coding using an Oracle XE database for free with the only limitation being that the database size can be a maximum of 4 GB. You are restricted to the Oracle XE database and the options available for creating your web application are very minimalistic.

This week I came across the free
WaveMaker Visual Ajax Studio. Now this is a complete Drag Drop development environment which allows non-programmers to visually design and create a web application:
  • with AJAX capabilities (uses Dojo)
  • using any database (Postgres, MySQL, Oracle, MS SQL Server etc.)
  • based on Enterprise Java capabilities (uses Spring, Hibernate, Web services)
  • deployable to any Java based server
  • that works on all major browsers (Internet Explorer, Firefox, Safari)
  • which is secure (using LDAP, Active Directory, POJOs etc.)

[Wavemake IDE running on Safari]

Since its based on open source technologies and is open source itself, you never have to worry about the product to go out of existence or costing you an arm and a leg in the future. Similar commercial products in the past have been dumped by their companies leaving the customers who have based their software on the platform in the lurch. This cannot happen with open source software.

Since its based on Java and can be deployed to any Java server, it can take advantage of Java Enterprise features. It can also make use of Grid and Cloud technologies.

Definitely consider using it for your next Enterprise ready software development project.

Monday, December 22, 2008

Run Multiple Operating Systems and Servers on a Single Machine - For FREE

Virtualization allows you to run multiple operating systems simultaneously on a single physical machine. This can allow you to use a software that was meant for UNIX on Windows. It can allow you to test that operating system you have been hearing about (e.g. run Linux or Mac OSX on top of your Windows). You can also use it to run multiple servers (Linux, Mac OSX, UNIX, Windows) simultaneously on the same machine. Today's hardware is powerful enough to achieve this.

VMware has been selling hardware virtualization software for over a decade now. They are currently giving away their VMware Server and VMware Player products for free. The Server can be used to create and run multiple operating systems. The Player can be used to only run an existing VMware image. They also have a huge repository of free ready-to-use servers and operating systems called the Virtual Appliance Marketplace where you can download any server you like and run it using the Player or Server product.


[Windows running inside Linux]



[Windows running inside Mac OSX]

There are various other free alternatives available (e.g. Qemu, Virtual Box) but I like VMware for its products' maturity. Non-free software like Parallels (Mac only) and MS Virtual PC (Windows only) do not come close to VMware's performance and available options.

Personally I only use virtualization to test and learn to use new operating systems and software. I am against the use of server virtualization due to its overhead and performance issues. It might make sense to use it:
  • for people stuck with using legacy software
  • for software QA and testing (use a clean machine everytime you test)
  • if you want to run a server on a Cloud or Grid where your server does not have the capability to use the Cloud's/Grid's power but the host operating system does.







Thursday, December 4, 2008

Free Oracle Development Tools

When you hear of Oracle, software with high price tags come to mind but in the last couple of years Oracle has been distributing some of their software out for free with no strings attached.

You can use the famous Oracle database engine for free, called Oracle XE (download here). Whats the catch? It only allows you a maximum of 4GB for your database size, which is ok for most small and medium sized business' applications.

Oracle also gives you their Oracle Application Express (Oracle APEX) for free (download here). It allows a non-developer to automatically create a small/simple web-based application that can have data entry forms, reports, charts etc. It can only use Oracle databases though but you can use the Oracle XE database.

   


Another good free (please read below) tool is Oracle JDeveloper aimed at Java developers (download here).

A couple of years ago the above tools would cost you an arm and a leg. Due to immense competition from Open Source products and free offerings from companies like IBM, Microsoft etc., Oracle has also chosen to give out some of its applications out for free.

But do note that each one of their free software is designed to work with their own propriety technologies. This means that if in the future you needed more than 4GB for your database you will have to buy a license for a standard or enterprise version of Oracle database. The JDeveloper tools also rely heavily on Oracle based technologies like Oracle ADF. Chances are that you will have to buy a license for the Oracle Server when the time comes to deploy your application.

They are still trying to tie you into their products and make you dependant on Oracle. I do still recommend the use of
Oracle Application Express for small businesses. It will make their lives easy as it allows them to create small applications themselves.

Edited 23 Jan 2009: Although JDeveloper is free to download and use, its license is not meant for commercial use of an application built using JDeveloper. You will need to get commercial licenses from Oracle to distibute or sell commercial software.