Main Content RSS FeedRecent Articles

A Multiplatform Programming Language »

haXe (pronounced as hex) is an open source programming language.

While most of the other languages are bound to their own platform (Java to the JVM, C# to .Net, ActionScript to the Flash Player), haXe is a multiplatform language.

It means that you can use haXe to target the following platforms :

  • Javascript : You can compile a haXe program to a single .js file. You can access the typed browser DOM APIs with autocompletion support, and all the dependencies are resolved at compilation time.
  • Flash : You can compile a haXe program to a .swf file. haXe can compile for Flash Players 6 to 10, with either “old” Flash<8 API or newest AS3/Flash9+ API. haXe offers very goodperformance and language features to develop Flash content.
  • PHP : You can compile a haXe program to .php files. This enable you to use a high level strictly-typed language such as haXe while keeping full compatibility with your existing server platform and libraries.
  • NekoVM : You can compile a haXe program to NekoVM bytecode. This can be used for server-side programming such as dynamic webpages (using mod_neko for Apache) and also forcommandline or desktop applications, since the NekoVM can be embedded and extended with some other DLL.
  • C++ : Currently in testing, with the right build of haXe from Hugh Sanderson, you can now output your haXe applications to pure C++ source code, complete with makefiles.

The idea behind haXe is to let the developer choose the best platform to do a given job. In general, this is not easy to do because every new platform comes with its own programming language. What haXe provides to you is :

  • a standardized language with many good features
  • a standard library (including Date, Xml, Math…) that works the same on all platforms
  • platform-specific libraries : the full APIs for a given platform are accessible from haXe

Java: Develop Rich Client Application using UIDL and Applino »

The UIDL (User Interface Description Language) project was created through the realisation that the browser model was very good for application deployment but that HTML was not suitable for complex applications, resulting in low developer productivity and a poor end user experience. The project proposes that the browser needs to be extended to support an alternative syntax aimed specifically at user interfaces rather than layering complex technologies on top of HTML.

The main features of a UIDL page are the ability to create complex user interfaces (using Swing based widgets) and to communicate asynchronously with server based objects (using the JSON-RPC protocol).

Whilst this may sound similar to AJAX, the implementation is much cleaner thanks to the ability to natively instantiate complex UI components within the browser and the ability to transparently present server based objects via their JavaScript proxies.

The Applino project was designed to allow multiple Java applications to be run within a single JVM (Java Virtual Machine) thereby reducing resource consumption and significantly reducing start up delay.

  • An applino is to the desktop what a servlet is to the server.
  • Applino provides and environment for running multiple Java desktop applications within a single JVM.
  • The Applino environment runs as a taskbar icon and starts when the user logs into their computer.
  • Applini (Applino applications) are similar to servlets in that they contain runtime descriptors and have their life cycles dictated by the Applino container.

Multiple Purpose Windows Launcher »

Executor is a multi purpose launcher and more advanced and customizable freeware windows run replacement.


  • Keywords have properties like shortcuts, and you can for example drag-drop a shortcut/file/folder/favorite to add it as a keyword.
  • Auto-completion for keywords, file system and history (can also be configured).
  • Url detection, Enter URLs directly (like,, or
  • Keywords support parameters. Example “google latest executor” “wiki nirvana”.
  • Besides keywords Executor can also optionally and dynamically add matching start-menu items, control panel items and other handy items to the drop-down/list.
  • Ability to add your own paths to scan for user defined file extensions.
  • Keyword “find [text]” for using Windows Instant Search (Vista) feature or Windows Desktop Search (WDS for XP etc.).
  • Can add keyword integration with popular services like GMail, Twitter, GCal, RTM and many others (see forums for howto’s, tutorials and tips).
  • Optional show icon for current keyword/input.
  • Optional show drop-down box for current keyword/input (auto-completion).
  • Optional drop-down box can be set to auto-open (like windows run) displaying auto-completion suggestions.
  • Optional Vista like list displaying matching items.
  • Layout can be customized. Set colors, font, dimensions, position, transparency and more.
  • Skinable. Supporting alpha blending effects and free positioning of all elements.
  • Each keyword can be assigned a hotkey, so Executor can also perform like many popular hotkey managers.
  • Many settings to customize the program as you like.
  • Can be launched from an user defined hotkey.
  • One keyword or text input can start multiple keywords/urls/programs/documents/files etc. Example one keyword opens three websites and/or programs.
  • Each keyword have properties like optional group (to organize into groups), customizable icon and other properties.
  • A number of special commands (like for example pause and replace tag with parameter).
  • Optional windows context-menu integration (as another way of easily adding new keywords).
  • Optional show title for the current input.
  • Can import keywords from windows start-menu.
  • All file-paths can be auto-completed (also when file-path is a parameter).
  • Keywords to manipulate the current active window (center, resize to specific size, maximize width or height etc).
  • Special keywords to list (and open) running applications, text previously copied to clipboard and recent documents.
  • Many special keywords like for example lock computer, restart, shutdown, standby, turn off monitor, mute sound, show date/time/week number etc.
  • Shortcut keys for faster navigation.
  • Integrated calculator.
  • Import/Export keywords.
  • Option to override windows run hotkey (Win-R).
  • Optional sounds.
  • Integrated Windows context-menu (for example when right-clicking list items).
  • At startup a number of keywords/commands optionally be launched.
  • Several hidden experimental/minor settings to play with (Example show time/date/other stuff when idle).

Open Source Web Service Framework for C »

WSO2 Web Services Framework for C (WSO2 WSF/C) is a standards compliant, enterprise grade, open source, C library for providing and consuming Web services in C. WSO2 WSF/C is a complete solution for building and deploying Web services, and is the C library with the widest range of WS-* specification implementations, including MTOM, WS-Addressing, WS-Policy, WS-Security, WS-SecurityPolicy, WS-Reliable Messaging and WS-eventing. It provides the best interoperability- all the Web services specification implementations are tested for interoperability with Microsoft .NET, WSO2 WSAS and other J2EE implementations.

WSO2 WSF/C is released with Apache License V2.0, and is based on the family ofApache open source projects, including Apache Axis2/C, Apache Rampart/C,Apache Sandesha2/C and Apache Savan/C. The key advantage of using WSO2 WSF/C is that it seamlessly integrates the multiple Apache Axis2/C projects together, which is tested and ready to be used. It also comes with additional features such as XMPP transport and a command line tool for consuming Web services, named wsclient.

WSO2 WSF/C provides the basic framework on which other scripting language bindings such as PHP, AJAX, Perl, Python and Ruby could be built, for providing and consuming Web services in those respective scripting languages. It can also be easily embedded in other software systems where full Web services stack support is required.

Good Read: Developing a Mobile Web Portal »

Here are some reading on how MIT develop the MIT Mobile Web.

MIT Vision for Mobility

Developing the MIT Mobile Web

Detect Wireless Devices using Wireless Universal Resource File »

The WURFL is an “ambitious” configuration file that contains info about all known Wireless devices on earth. Of course, new devices are created and released at all times. While this configuration file is bound to be out of date one day after each update, chances are that the WURFL lists all of the WAP devices you can purchase in the nearest shops.

Interesting fact quoted from the website,

The WURFL is based on the concept of family of devices. All devices are descendent of a generic device, but they may also descend of more specialized families. A device which identifies itself as (user-agent) “SAMSUNG-SGH-T100/1.0 UP.Browser/5 (GUI)” is an implementation of the GUI browser by Openwave and, of course, also a descendent of the generic browser. As a consequence, as soon as such a device is released (or, we should say, as soon as someone detects its user agent hitting a site), we can safely add it to the WURFL and state that it is a descendent of the “upgui_generic” family.
This will let that phone inherit all of the capabilities of the family of the Openwave GUI browser even before that device is actually tested by anyone.
This mechanism, called ‘fall_back’, lets programmers derive the capabilities of a given phone by looking at the capabilities of its family, unless a certain feature is specifically different for that phone.
To further clarify, here is a concrete example. Nokia shipped several subversion of the 7110 model. Some of those did not support WML tables. Some did. The WURFL models this knowledge elegantly thanks to the fall_back mechanism.
First, the generic family specifies a capability called “table_support”:

<device fall_back=”root” id=”generic” user_agent=”">
 <group id=”ui”>
   <capability name=”table_support” value=”true” />

you can read this as “Generic WAP devices support WML tables”
As a WURFL default, Nokia phones support tables because of fall_back on generic. This is modelled here:

<device user_agent=”Nokia” fall_back=”generic” id=”nokia_generic”>
 <group id=”ui”>
      value=”false” />

When it comes to table support, the line above implies that for a generic Nokia device the same value as generic should be used.
Two interesting device families follow:

 <device user_agent=”Nokia7110/1.0 (04″
 <group id=”ui”>
   <capability name=”table_support” value=”false” />
 <device user_agent=”Nokia7110/1.0 (04.67)”
         id=”nokia_7110_ver1_sub467″ />
 <device user_agent=”Nokia7110/1.0 (04.69)”
         id=”nokia_7110_ver1_sub469″ />
 <device user_agent=”Nokia7110/1.0 (04.94)”
         id=”nokia_7110_ver1_sub494″ /> 

<!–  7110 new-age   –>
 <device user_agent=”Nokia7110/1.0 (05″
  <group id=”ui”>
    <capability name=”table_support” value=”true” />
 <device user_agent=”Nokia7110/1.0 (05.00)”
         id=”nokia_7110_ver1_sub500″ />
 <device user_agent=”Nokia7110/1.0 (05.01)”
         id=”nokia_7110_ver1_sub501″ />

When it comes to table support, this can be read as “there is a family of phones subset of the 7110 for which tables are not supported and there is a family for which they are supported”. All known 7110 devices are contained in the list, but each one falls in one or the other subfamilies. This lets you model if a given device supports tables or not.

Open Source Java PDF Generation and Renderer »

For PDF generation, iText is a good choice.

You can use iText to:

  • Serve PDF to a browser
  • Generate dynamic documents from XML files or databases
  • Use PDF’s many interactive features
  • Add bookmarks, page numbers, watermarks, etc.
  • Split, concatenate, and manipulate PDF pages
  • Automate filling out of PDF forms
  • Add digital signatures to a PDF file
  • And much more…

For PDF rendering, PDF Renderer can be used.

The PDF Renderer is just what the name implies: an open source, all Java library which renders PDF documents to the screen using Java2D. Typically this means drawing into a Swing panel, but it could also draw to other Graphics2D implementations.

CSS Framework »

Blueprint is a CSS framework, which aims to cut down on your CSS development time. It gives you a solid CSS foundation to build your project on top of, with an easy-to-use grid, sensible typography, and even a stylesheet for printing.

Gradle: Another Java Build System »

Gradle is a build system which provides:

  • A very flexible general purpose build tool like Ant.
  • Switchable, build-by-convention frameworks a la Maven (for Java and Groovy projects). But never lock you in!
  • Powerful support for multi-project builds.
  • Powerful dependency management (based on Apache Ivy).
  • Full support for your existing Maven or Ivy repository infrastructure.
  • Support for transitive dependency management without the need for remote repositories and pom.xml or ivy.xml files (optional).
  • Ant tasks as first class citizens.
  • Groovy build scripts.

Free EBooks from Oreilly »

O’Reilly has published a number of Open Books–books with various forms of “open” copyright–over the years. The reasons for “opening” copyright, as well as the specific license agreements under which they are opened, are as varied as our authors.


Apache XBean »

The goal of XBean project is to created a plugin based server analogous to Eclipse being a plugin based IDE. XBean will be able to discover, download and install server plugins from an Internet based repository. In addition, we include support for multiple IoC systems, support for running with no IoC system, JMX without JMX code, lifecycle and class loader management, and a rock solid Spring integration.

   1: <beans xmlns:p=“java://org.apache.xbean.spring.example”>
   3:   <p:PizzaService id=“pizzaService” topping=“Salami” cheese=“Edam” size=“17″/>
   5: </beans>

maps to

   1: public class PizzaService {
   3:     private static final Log log = LogFactory.getLog(PizzaService.class);
   5:     private String topping;
   6:     private String cheese;
   7:     private int size;
   8:     private double price;
  10:     public void makePizza() {
  11:“Making a pizza with topping: “ + topping + ” cheese: “ + cheese + ” with size: “ + size);
  12:     }
  14:     public String getCheese() {
  15:         return cheese;
  16:     }
  18:     public void setCheese(String cheese) {
  19:         this.cheese = cheese;
  20:     }
  22:     public double getPrice() {
  23:         return price;
  24:     }
  26:     public void setPrice(double price) {
  27:         this.price = price;
  28:     }
  30:     public int getSize() {
  31:         return size;
  32:     }
  34:     public void setSize(int size) {
  35:         this.size = size;
  36:     }
  38:     /**
  39:      * @org.apache.xbean.Property alias=”myTopping”
  40:      */
  41:     public String getTopping() {
  42:         return topping;
  43:     }
  45:     public void setTopping(String topping) {
  46:         this.topping = topping;
  47:     }
  49: }

Log File Monitoring Tools »

Here are some alternatives or platform port for the Unix tail utility


BareTail is a Log File Monitoring tool that you can leave running all the time and it will refresh file changes without ever locking the log files. It has a tab for every log file you would like to monitor and it can be set up for files that don’t yet exist; it will start monitoring the file once it is created. Combined with Launchy, it becomes very handy to monitor log files.



Tail XP

Tail XP  has multiple types of monitor , including : eventlog , syslog , file monitor and more.



logview4net is a log viewer/log monitor for data created by various sources. It can listen to UDP, tail a file, tail a SQL table, monitor the eventlog and watch RSS and Atom feeds. It requires the Microsoft .NET Framework 2.0


Swatch started out as the “simple watchdog” for activly monitoring log files produced by UNIX’s syslog facility. It has since been evolving into a utility that can monitor just about any type of log.


Logfmon monitors a set of log files and processes messages based on a set of regexps. When a message matches, a command may be executed or the message may be ignored. Messages that are unmatched are batched together and emailed every so often.


Open Source/Free Desktop Publishing Software »

Other than open source office suite, like StarOffice, AbiWord, and OpenOffice, here are some other alternatives.


Scribus is an open-source program that brings award-winning professional page layout to Linux/Unix, MacOS X, OS/2 and Windows desktops with a combination of “press-ready” output and new approaches to page layout. Underneath the modern and user friendly interface, Scribus supports professional publishing features, such as CMYK color, separations, ICC color management and versatile PDF creation.



LyX is a document processor that encourages an approach to writing based on the structure of your documents (WYSIWYM) and not simply their appearance (WYSIWYG).

LyX combines the power and flexibility of TeX/LaTeX with the ease of use of a graphical interface. This results in world-class support for creation of mathematical content (via a fully integrated equation editor) and structured documents like academic articles, theses, and books. In addition, staples of scientific authoring such as reference list and index creation come standard. But you can also use LyX to create a letter or a novel or a theatre play or film script. A broad array of ready, well-designed document layouts are built in.



PagePlus is the software that enables you to create stunning documents for your home, school, business or club - no experience required!

With PagePlus you can create outstanding greetings cards, flyers and posters with easy-to-use Templates or create your own amazing designs for any occasions.

Open Source Database Refactoring Tools »


LiquiBase is an open source (LGPL), DBMS-independent library for tracking, managing and applying database changes. It is built on a simple premise: All database changes (structure and data) are stored in an XML-based descriptive manner and checked into source control.

While there have been many attempts to provide a similar tool, LiquiBase aims to provide a solution that:

Supports merging of changes from multiple developers

  • Works well with code branches

  • A Database Refactoring IDE-Plugin (short demo)

  • Isn’t DBMS-specific

  • Allows you to manage production data as well as various test datasets

  • Works in an environment where multiple machines will be attempting to migrate the database concurrently

  • Supports automated change-applying or generation of SQL scripts that can be approved and applied by a DBA

  • Supports rolling back changes

  • Can create database ”diff“s and can generate change logs from them

  • Can auto-generate database change documentation

  • Data extraction for generating test datasets

  • Unit testing infrastructure

  • .Net support


openDBcopy is a universal database utility to migrate data from and to any database given a JDBC driver.

  • Standard filters are included
  • Custom plugins can be added and/or developed
  • Complete migration project saved as XML for easy re-use
  • Run with GUI or as batch process


dbdeploy is a Java-based database refactoring tool. It has been created by Graham Tackley, Nick Ashley with some help by Sam Newman. It is based on real-world experiences of software development in ThoughtWorks - who also support it’s development.

dbdeploy supports the following DBMS:

  • Oracle
  • MS SQL Server
  • Sybase
  • Hypersonic SQL
  • MySQL

Open Source X Window System »

Here are a list of open source X Window System for Windows



Xming is the leading free unlimited X Window server for Microsoft Windows (XP/2003/Vista). It is fully featured, small and fast, simple to install and being standalone native Microsoft Windows, easily transported portable as a Pocket PC X server.


Cygwin/X is a port of the X Window System to the Microsoft Windows family of operating systems. Cygwin/X runs on all recent consumer and business versions of Windows; as of 2003-12-27 those versions are specifically Windows 95, Windows 98, Windows Me, Windows NT 4.0, Windows 2000, Windows XP, and Windows Server 2003.

Cygwin/X consists of an X Server, X libraries, and nearly all of the standard X clients, such as xterm, xhost, xdpyinfo, xclock, and xeyes. Cygwin/X, as the name implies, uses the Cygwin project which provides a UNIX-like API to Xlib and X clients, thereby minimizing the amount of porting required.

Cygwin/X is licensed under an X style license; Cygwin is licensed under a modified GNU General Public License that specifically allows libcygwin1.a to be linked to programs that are licensed under an Open Source compliant license without such linking requiring that those Open Source programs be licensed under the GNU General Public License (see the Cygwin licensing page for more information). Source code and binaries for both projects are freely available.


Other interesting things you may want to know


WeirdX is an X Window System server in pure Java under GNU GPL.

It is derived from WiredX-Lite and will run on any platforms which support Java 1.1. This X server will not be suitable to exec heavy x clients, but you may find that twm, xterm, etc. will run fine on it. enables access to unix applications from Windows machines via web browsers.

Open Source Data Warehouse on Map Reduce »

CloudBase is a data warehouse system for Terabyte & Petabyte scale analytics. It is built on top of Map-Reduce architecture. It allows you to query flat log files using ANSI SQL. The current code has been developed to Hadoop’s map-reduce implementation.

Open Source Data Integration Framework »

SnapLogic is an Open Source Data Integration framework that combines the power of dynamic programming languages with standard Web interfaces to solve today’s most pressing problems in data integration.


  • Improved Designer and Explorer
  • New SnapLogic API (SnAPI)
  • Independent Server and Component Containers
  • New Component API
  • Improved Data Formats
  • WSGI support
  • Installer support for virtual environments

Open Source Installation and System Management Tool for Linux »

YaST is the most powerful installation and system management tool in the Linux environment. It is an open source project sponsored and actively developed by Novell.


YaST stands for Yet another Setup Tool.

Open Source OS Kernel from Microsoft »

Singularity is a research project focused on the construction of dependable systems through innovation in the areas of systems, languages, and tools.

Advances in languages, compilers, and tools open the possibility of significantly improving software. For example, Singularity uses type-safe languages and an abstract instruction set to enable what we call Software Isolated Processes (SIPs). SIPs provide the strong isolation guarantees of OS processes (isolated object space, separate GCs, separate runtimes) without the overhead of hardware-enforced protection domains. In the current Singularity prototype SIPs are extremely cheap; they run in ring 0 in the kernel’s address space.

Singularity uses these advances to build more reliable systems and applications. For example, because SIPs are so cheap to create and enforce, Singularity runs each program, device driver, or system extension in its own SIP. SIPs are not allowed to share memory or modify their own code. As a result, we can make strong reliability guarantees about the code running in a SIP. We can verify much broader properties about a SIP at compile or install time than can be done for code running in traditional OS processes. Broader application of static verification is critical to predicting system behavior and providing users with strong guarantees about reliability.



Yahoo BrowserPlus is Open Source Now »

BrowserPlus is a technology for web browsers that allows developers to create rich web applications with desktop capabilities.

The most unique attribute of BrowserPlus is its ability to update and add new services on the fly without a browser restart or even reloading the page! As a user, this means no more installers to run or losing your place on the web. For developers, you can check for and activate new services with a single function call, pending user approval - we handle the complexity of software distribution and updates for you.

Another smiliar technology is Google Gears.