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.

Thursday, November 13, 2008

RJ-45-sized Linux server

This might not be a full blown PC/Server but it runs Linux and can be used by Electrical engineers to control their boards over a network (both Ethernet and Wifi) without too much work. I came across this a couple of years ago.


Imagine creating your own Centralized Traffic Light Control system. Any electrical engineer can design a board that will turn the lights red, yellow and green. Imagine adding the above shown Wifi or ethernet version of this device and then being able to control and monitor all the lights in your city from your Office room (there is a huge demand for this nowadays).

I am just hoping for a WiMax version of this connector. Here in Karachi we have a very good WiMax wireless network set up by Wateen. Being able to control remote devices over WiMax and GPRS is much easier to do than ethernet here.

Photoshop On Web Revisited

A lot of new Flash based image editing programs usable directly from your web browser have popped up since I last posted about Fauxto. I came across Pixlr recently which is way faster than anything I have tried before.

Fauxto has been renamed to Splashup. Its much more powerful than before.

Adobe has released its own version called Photoshop Express. It gives you web space for hosting your images and also allows you to post your final edited images to photo sites like Flickr.

So what good are these applications? They give you powerful image editing capabilities without having anything installed on your PC (except Flash).

These applications are also a living proof of the fact that full blown powerful and usable applications can indeed be developed using the web paradigm. AJAX and Flash have proven it. So don't be shocked one day to find out that all your applications run through your browser.

Technologies like Mozilla Prism will allow these web technologies based applications to also install on your PC so you can run them when you are not online. The face of desktop application development is being redefined.

Tuesday, November 11, 2008

Problems with BPM Platforms

A Business Process Management (BPM) platform allows businessmen to create flow charts of their business processes and translates them automatically into a running program. They come with visual designers that allows them to specify users of a process, design forms to be filled, choose the database and tables where the data should be saved, design reports etc. I have looked at a couple of BPM solutions like the uEngine, ProcessMaker and jBPM from jBoss.

I found their process designers to be wonderful. But the one thing I feel they have it wrong is the deployment aspect of their software. Each one them first gives an option to its user to initiate a "process" from a long list of available processes, displaying the path of the process to every user who has to do their part in it.

In the world of software development we know that majority of the users get confused by terms and options that they are not used to or do not understand. So we try to hide the things that might confuse them so that they may concentrate on what they are needed to do. Take the above screenshot for example which covers Order and Shipping of a product. Its currently waiting for a user to review the order. What do you think will go through the user's mind when he/she sees the above user interface (especially the options for Suspend this process instance).

I think he/she will be confused out of his/her mind. All the user wants to do is review the order. I think BPM solutions should give developers more control over the screens displayed to the end users or at least have some defaults which will not confuse the end users.

Monday, November 10, 2008

World's Smallest Projector ($511 only)

A projector that fits right in your pocket, for only $511, same size as an iPod. A resolution of 480 x 320 pixel means that the text on your presentations might show up a little fuzzy but for presentations with more graphics and big text, this is definitely going to work. And then there is also the WOW factor. Look here for details.

Thursday, October 23, 2008

Statistics for Developers

I have seen a lot of software developers not keeping up with whats happening around the world, unaware of the deployment landscape thus using development methodologies which will in the end make their software unusable by the end user. For example, I still meet a lot of web developers who test their websites only on the default IE installed, do not care about mobile browser display resolutions.

I came across some very good statistics websites which I want to share with the rest of the developer community. These statistics can also be of use to clients who need to get software developed but don't know what they should be asking for in terms of technical requirements.

  • Statistics for popular programming languages being used today. Look here and here. Java and C seem to be very popular but you need to keep in mind that these stats do not take into account the type of software being developed. For example you would not use C to make a website. But if you were to create a fast, native application for a mobile platform like Symbian or iPhone, you will have to use C or C++.

  • The most common browsers being used today can be seen here. Firefox has a huge user base. Safari and Chrome are also picking up.

  • Display resolutions statistics can be seen here. 1024x768 still rules but 38% of screens now use a much higher resolution. This list shows that some details of what kind of high resolutions are in use today.

  • Operating System statistics can be seen here. Some more OS stats can be seen here. Windows XP of course rules the desktop. But I am surprised to see that the Mac has a significant share of 5% to 8%. Just goes on to show that developers should spend some time testing their web applications on Safari as well. It also tells desktop application developers that they should invest time in learning cross-platform development technologies like Java, C++ or C.

  • I could not find a good statistics page showing whats going on in the Mobile Browser world at the moment. Its no secret that Opera Mini has a good market share. Webkit based browsers come built-in on most Nokia phones. iPhone's Safari browser is also Webkit based. I read that Blackberry's new mobiles will also use a Webkit based browser. If you want to target the mobile internet users' market, you should test your website using a Webkit based browser like Safari and at the same time use available emulators from Nokia, Apple etc. as the mobile versions have a cut down version of Javascript and CSS.

Thursday, October 16, 2008

Want to learn AJAX?

Just found a really awesome post "50 Excellent AJAX Tutorials". It covers AJAX examples for Pure Javascript, PHP, Java, ASP.NET etc. I need to use AJAX on my next upcoming assignment. Thought I would make note of this link.

For those who do not know what AJAX is, to the layman AJAX allows websites to look and feel like traditional software. Take Facebook for example, the site uses AJAX heavily. All those popups, dialog boxes, chat, photo upload, drag and drop etc. are done using AJAX.

A Petabyte sized database

Came across a very good article today about the Greenplum Database. Its an open source database which supports databases as big as a Petabyte or more (thats 1024 terabytes). All for free.

Who needs something like this? Its currently being geared towards data warehouses and Business Intelligence (BI) solutions. I might use it someday for the implementation of a BI solution as those database tend to get huge. For those unaware of what a BI solution does, suppose you have a company with multiple applications being used each with its own database, no integration. Now you want to make some analysis or generate some reports which require data to be read from these different databases, a BI solution can help you bring together all the data from each database, co-relate them, and then let you generate your report.

A BI solution actually ends up creating a database of its own which tends to get bigger as you try to integrate more and more databases together. Greenplum can help your BI solution save this newly acquired data.

A good open source BI solution is from Pentaho.

Inversion of Control (IoC) and Dependency Injection (DI) paradigms

Came across this very good explanation of Inversion of Control (IoC) and Dependency Injection (DI) paradigms. Thought I would make a note of it:
(click here for the complete article on Java Dev Journal)

The analogy people most often make when talking about IoC is called the Hollywood principle: "Don't call me, I'll call you." What this means is that you don't call the framework code, but the framework calls certain methods on your components. This isn't something new, for instance, when you look at the servlet interface, you can see that you must implement the init and destroy methods. These methods are called from the servlet container on startup and shutdown of your servlet. This concept is also used in Spring, among other things, for specifying which methods to call on construction and destruction of your POJO.

Besides IoC, another important concept to understand is Dependency Injection (DI). This term was coined by Martin Fowler and describes a pattern of how to perform wiring between beans. This means that any dependencies your POJO might have are injected into your component, instead of you having to retrieve them. In J2EE (at least until 1.5) when you required a resource (a data source, another bean, etc.) you had to use JNDI to pull that resource in. With DI you don't have to do that anymore. With DI your container will make sure you have the dependency pushed into your POJO using getters and setters. In the new J2EE specs much of the same concepts are used.

Thursday, October 9, 2008

The problems with Eclipse and why Netbeans will win in the long run

In the world of free (and open source) Java IDEs only 2 names come to mind, Eclipse and Netbeans. Eclipse was open sourced by IBM back in 2002 and spread like wild fire throughout the Java developer community. Thousands of plugins have been created for it and applications created using it as a base. Netbeans on the other hand is still relatively new and has a very small number of plugins compared to Eclipse.

But even with the thousands of plugins available, Eclipse has always been a very difficult environment to set up. A lot of the plugins have long been deserted by their developers and given the way Eclipse is designed, the old plugins do not work on the new versions of Eclipse. In the past I would find a plugin that I really thought could help me improve my coding. I would try to install it and then eclipse would attempt to install all dependencies for it only to fail. Most of the times the dependencies have not been updated for the Eclipse version I was using.

This is not to put down the commercial versions of Eclipse like MyEclipse or Websphere. They are very well built and work great out of the box.

The problem is that going through all the Java websites, journals, magazines, RSS feeds, blogs etc. the Java Developer community feels that they are not able to keep up with the speed with which Java is progressing. A couple of years ago when JSP and Servlets were new, we all spent time and learnt it only to find out that EJBs were the new thing. EJB was then replaced by Struts and Hibernate and all new jobs required that the developer should know them. Now there is a lot of noise about Spring and JSF. (I think I have gone off on a tangent here but I will end this trail by saying that the Java folk should upgrade current in-use frameworks rather than creating something new every 2 years; Its driving us developers crazy).

Coming back to my Eclipse plugins problem. So there is a hell of a lot that we need to learn and fast. Paying money for something I am not sure I will make any money out of is not what Developers normally do. We look for the freeware or the open source stuff. Eclipse has really depressed developers from using open source plugins.

I came across the EasyEclipse distro that has multiple bundles based on Eclipse available for free download for Web Dev, Desktop Dev etc. It does take out the headache of installing plugins yourself.

Yoxos is also a good service but to use it you will need to be familiar with the plugins you need to perform your task.

But if you want to learn to develop like a real PRO using the Eclipse platform, your best bet is to go for MyEclipse. At $30 this is the cheapest you can go.

Coming back to Netbeans, its good right out of the box and has awesome editors and does most of what you actually need to do in the real world. But when that new framework comes out which you really need to use, don't expect a plugin for Netbeans to be ready anytime soon. But hey things are changing.

For now, I plan to create my next app using Netbeans as I need a good GUI designer, Hibernate support, some database tools and UML designer. And all these come built right into Netbeans by default. I do wish there was some support for GCJ but not found that yet.

Sunday, October 5, 2008

PostGIS, Geoserver and OpenLayers for a complete GIS solution

Open source GIS solutions have come a long way in the last couple of years. It is no secret that Google Earth put GIS into the hands of millions and created a huge market for GIS users. Now that people are familiar with GIS systems and are willing to use a GIS, what do you really need to make a GIS system.

What you need is a GIS database with all your geotagged information in it. The data is then served through a GIS server to a GIS client. If you wish to target web clients, you can create your own complete GIS solution using PostGIS as the GIS database, Geoserver as the GIS server and OpenLayers as an interactive web-based client.

Tuesday, September 30, 2008

GCJ, MingW and GNU Classpath

GCJ is an open source compiler for Java, part of the GCC compiler set. Whats special about it is that it can also compile Java code into a native executable file which does not require a JRE to be installed to run. This method also speeds up the application. Look here for a complete explanation.

The last time I checked out GCJ was back in 2003. Last month I decided to look it up again as I have a small project that I wanted to develop in Java. Now the application is supposed to be a small utility which will inetract with a Project Management software via websrvices. One of the main requirements is that the utility should load up fast as 40% of the PCs it will be run on are running on Pentium 3. A regular Java app takes ages to load on Pentium 3. GCJ gave me some hope that I might be able to use Java for the app.

I downloaded the latest version of MingW, installed the required iconv binary and compiled a "Hello World" on System.out example. Worked perfect. I moved on to a "Hello World" using a simple Swing frame with label. It compiled successfully, but when I ran the exe file I got an error "AWT Toolkit not found". After a lot of research I found out that although the GCJ developers claim to have merged their code with that of GNU Classpath, since GCJ is part of GCC, they have stayed clear of all GUI code from the codebase. In short GCJ will not allow me to run Swing or AWT apps.

Next I tried to use the regular rt.jar file distributed with Sun JDK to compile the executable as GCJ has an option for choosing the base classes jar file path. The compiler started giving a "... zero-length 'gnu.gcj.gcj-compiled' attribute ..." error. I then understood how GCJ actually works. The GCJ developers have already compiled all their Java base classes into a native library. When creating the exe the compiler links this library to your exe. If I try to use a jar file like the one provided with the Sun JDK or if I recompile GNU Classpath and use it with GCJ, the compiler will first need to compile that jar file into a native library. Although this seems plausible, I really did not have time to try this out.

I also looked into using other Java GUI toolkits. First I went with Thinlet and lwvcl but then I realized that they are based on AWT and thus will not work. Then I looked into using SWT which is not based on AWT and I came across this page. Here you can download a complete MingW, GCJ and SWT environment that allows you to compile native executables with GUI support for Swing. It uses the SwingWT package which allows you to write Swing code to use SWT. The SwingWT package is not production ready though.

Another possibility is to write the app's GUI in pure SWT. I still have to run some more testing on this. I have successfully compiled a "Hello World" example but am still unable to execute it. I found very good and detailed directions here. Will probably try it again next week.

Saturday, September 27, 2008

Awesome list of Free Photoshop Tutorials

I just came across this really awesome list of photoshop tutorials and just thought I would spend the word:


Some of the samples are given below:

Water Effect:

Water Effect:

Wednesday, September 24, 2008

Free University eLearning from MIT

I just came across MIT Open Courseware which gives away free video, audio lectures to most of the courses that are actually being taught at MIT. They are also giving away course syllabus, handouts and lecture notes as PDF files. All free, under the Commons Public License.

So why should you be interested?? Have you ever been interested in attending the MIT "Introduction to Algorithms" course but could afford it. Now you can attend the course for free, from anywhere in the world. Of course you cannot ask the professor any questions but you can have him repeat the lecture over and over again.

This material is also beneficial for universities who can adapt their curriculum to that of MIT.

The material is not only limited to Computers. They have material from all their departments:

Definitely a good source for those stuck in their working lives not able to attend a university to learn something new.

Monday, September 22, 2008

Transferring posts from Blogsome to Blogger

I was successfully able to transfer all my posts from Blogsome to Blogger using ScribeFire. I will still have to transfer the images. ScribeFire also helped me set the dates of the posts to their original post dates.

Maybe in the future someone can use the scribefire code to automatically transfer posts from one blog site to another painlessly.

All I had to do was Add both my blogs to ScribeFire. Then I would select a post from oldBlog so it would load inside ScribeFire. Then I would select newBlog in the Blogs tab and then click the Publish button. I would select "Publish as new ..." in the popup.

Ok, so it was a manual work but it cut down on at least 3 steps. One thing to note is that the names of both my old and new blog was the same (just in case if someone wanted to use the same procedure).

Sunday, September 21, 2008

My New Blog

After spending ages blogging on blogsome, I realized that using Wordpress was not that essential to me anymore. I will attempt to transfer my blogs from blogsome to blogspot hopefully in the next 1 week and hope to make weekly posts here and keep this blog alive.

Thursday, April 24, 2008

Windows Customization

Every once a year I tend to return to see whats going on in the world of Windows GUI customization. This week when that time came I was surprised to see all the free tools and applications now available which were previously only available commercially. I also saw the evolution of all the free software that has been around for a while.

One new tool on the market is RocketDock. In the words of their developers "RocketDock is a smoothly animated, alpha blended application launcher. It provides a nice clean interface to drop shortcuts on for easy access and organization.".
screenshot1 sc2

The litestep project has also come a long way. The new themes people have created are awesome and the number of themes available is huge. I am having a hard time deciding on what to install and use.