Recent Articles

OpenSTA: Free Web Load and Stress Testing Tool »

OpenSTA is a distributed software testing architecture designed around CORBA, it was originally developed to be commercial software. The current toolset has the capability of performing scripted HTTP and HTTPS heavy load tests with performance measurements from Win32 platforms. However, the architectural design means it could be capable of much more.

image

As quoted from the website, the applications that make up the current OpenSTA toolset were designed to be used by performance testing consultants or other technically proficient individuals. This means testing is performed using the record and replay metaphor common in most other similar commercially available toolsets. Recordings are made in the tester’s own browser producing simple scripts that can be edited and controlled with a special high level scripting language. These scripted sessions can then be played back to simulate many users by a high performance load generation engine. Using this methodology a user can generate realistic heavy loads simulating the activity of hundreds to thousands of virtual users.

Popularity: 1% [?]

Detect Wireless Network using NetStumbler »

NetStumbler is a tool for Windows that allows you to detect Wireless Local Area Networks (WLANs) using 802.11b, 802.11a and 802.11g. It has many uses:

  • Verify that your network is set up the way you intended.
  • Find locations with poor coverage in your WLAN.
  • Detect other networks that might be causing interference with your network.
  • Detect unauthorized “rogue” access points in your workplace.
  • Help aim directional antennas for long-haul WLAN links.
  • Use it recreationally for WarDriving.

image

Popularity: 2% [?]

SysInternals Suite »

If you are a Windows user, then SysInternals utilties should be in your daily toolbox. It is extremely useful to help you manage, troubleshoot and diagnose your Windows systems and applications.

There are many utilities available, e.g. Process Explorer, AutoRuns, DebugView, TCPView, Process Monitor, RootkitRevealer, etc. However, you can download the SysInternals Suite which bundles everything into a single download.

Popularity: 1% [?]

Deploy Application in Any Platforms using IzPack »

Normally I used NSIS to create installer on Windows. There are times I need to package my Java application to be installed in any platforms. In this case, I normally used IzPack.

image 

As quoted from the website, IzPack is a one-stop solution for packaging, distributing and deploying applications.

It is fully cross-platform and generates a single installer. As such, it is an alternative to native solutions such as platform-specific installers and package managers.

IzPack-generated installers only require a Java virtual machine to run.

IzPack is used in many open source and commercial applications, including JBoss.

Popularity: 1% [?]

Searching for a Better Version Control System »

Git is another version control system that I am experimenting now since it has been mentioned by many others.

As quoted from the website, Git is an open source version control system designed to handle very large projects with speed and efficiency, but just as well suited for small personal repositories; it is especially popular in the open source community, serving as a development platform for projects like the Linux Kernel, Ruby on Rails, WINE or X.org.

Git falls in the category of distributed source code management tools, similar to e.g. Mercurial or Bazaar. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Still, Git stays extremely fast and space efficient.

There is an interesting Version System Comparison available at http://better-scm.berlios.de/comparison/comparison.html to compare various SCM tools, e.g. CVS, Subversion, Git, Bazaar, ClearCase, Codeville among the rest.

Also, another Git and Subversion comparison available at http://git.or.cz/gitwiki/GitSvnComparsion

Popularity: 1% [?]

HylaFAX: Open Source Fax Server »

HylaFAX is an enterprise-class system for sending and receiving facsimiles as well as for sending alpha-numeric pages.

The software is designed around a client-server architecture. Fax modems may reside on a single machine on a network and clients can submit an outbound job from any other machine on the network. Client software is designed to be lightweight and easy to port.

HylaFAX is designed to be very robust and reliable. The fax server is designed to guard against unexpected failures in the software, in the configuration, in the hardware and in general use. HylaFAX can support multiple modems and a heavy traffic load.

HylaFAX supports:

  • sending facsimile
  • receiving facsimile
  • polled retrieval of facsimile
  • transparent shared data use of the modem
  • sending alpha-numeric pages

Popularity: 2% [?]

Asterisk: Open Source PBX and Telephony »

Most of us should have heard or used Asterisk.

Asterisk is the world’s leading open source telephony engine and tool kit. Offering flexibility unheard of in the world of proprietary communications, Asterisk empowers developers and integrators to create advanced communication solutions…for free.

Asterisk can be configured as the core of an IP or hybrid PBX, switching calls, managing routes, enabling features, and connecting callers with the outside world over IP, analog (POTS), and digital (T1/E1) connections.

It can also be built out as the heart of a media gateway, bridging the legacy PSTN to the expanding world of IP telephony. Asterisk’s modular architecture allows it to convert between a wide range of communications protocols and media codecs.

Asterisk is primarily developed on GNU/Linux for x/86 and runs on GNU/Linux for PPC along with OpenBSD, FreeBSD, and Mac OS X. Other platforms and standards-based UNIX-like operating systems should be reasonably easy to port for anyone with the time and requisite skill to do so.

Popularity: 1% [?]

Java: Deliver Your Application In One JAR File »

Here are 2 open source tools that you can use to package you Java application and the dependant libraries in one SINGLE jar file.

Jar Jar at http://code.google.com/p/jarjar/

One-Jar at http://one-jar.sourceforge.net

Popularity: 1% [?]

Network Tracing in HP-UX »

Commands

  • nettladm – network tracing and logging administration manager
  • nettl – control network tracing and logging
  • nettlconf – configure network tracing and logging command subsystem database
  • kl – control kernel logging
  • netfmt – format tracing and logging binary files

HOW TO TAKE A NETWORK TRACE ON HP-UX

Wireshark (formerly Ethereal)

TcpDump

Popularity: 1% [?]

Open GPS Tracking System »

The “Open GPS Tracking System” s the first available open source project designed specifically to provide web-based GPS tracking services for a “fleet” of vehicles.

image

OpenGTS™, a companion project to OpenDMTP™ (http://www.opendmtp.org) , was developed from the need for a simple web-based platform that can provide GPS tracking for entry-level commercial fleet enterprises, however OpenGTS is highly configurable and scalable to larger enterprises as well.

Popularity: 2% [?]

iBATIS Plugin for IntelliJ »

This is a good iBATIS plugin for IntelliJ available at http://code.google.com/p/ibatis-plugin/

It features

  • Code completion and navigation
  • Goto symbol
  • Code inspetion
  • Find usage and rename refactor
  • Database integration
  • Code generation
  • Abator support

image

This plugin complements Abator.

Popularity: 1% [?]

Vorbis: Open Source Audio Encoding and Streaming Library »

Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit, polyphonic) audio and music at fixed and variable bitrates from 16 to 128 kbps/channel. This places Vorbis in the same competitive class as audio representations such as MPEG-4 (AAC), and similar to, but higher performance than MPEG-1/2 audio layer 3, MPEG-4 audio (TwinVQ), WMA and PAC.

It has been designed to completely replace all proprietary, patented audio formats. It is a lossy codec. Lossy compression algorithms discard data in order to compress it better than would normally be possible. Examples include JPEG, Vorbis, and MP3 compression.

Popularity: 1% [?]

iLBC: Open Source Speech Codec Library »

iLBC (internet Low Bitrate Codec) is a FREE speech codec suitable for robust voice communication over IP. The codec is designed for narrow band speech and results in a payload bit rate of 13.33 kbit/s with an encoding frame length of 30 ms and 15.20 kbps with an encoding length of 20 ms. The iLBC codec enables graceful speech quality degradation in the case of lost frames, which occurs in connection with lost or delayed IP packets.

It features

  • Bitrate 13.33 kbps (399 bits, packetized in 50 bytes) for the frame size of 30 ms and 15.2 kbps (303 bits, packetized in 38 bytes) for the frame size of 20 ms

  • Basic quality higher then G.729A, high robustness to packet loss

  • Computational complexity in a range of G.729A

  • Royalty Free Codec

Popularity: 2% [?]

Speex: A Free Codec for Free Speech »

Speex is an open source/free software patent-free audio compression format designed for speech. The Speex Project aims to lower the barrier of entry for voice applications by providing a free alternative to expensive proprietary speech codecs. Moreover, Speex is well-adapted to Internet applications and provides useful features that are not present in most other codecs.

image

Speex is based on CELP and is designed to compress voice at bitrates ranging from 2 to 44 kbps. Some of Speex’s features include:

  • Narrowband (8 kHz), wideband (16 kHz), and ultra-wideband (32 kHz) compression in the same bitstream
  • Intensity stereo encoding
  • Packet loss concealment
  • Variable bitrate operation (VBR)
  • Voice Activity Detection (VAD)
  • Discontinuous Transmission (DTX)
  • Fixed-point port
  • Acoustic echo canceller
  • Noise suppression

One of the simplest things you can do to get involved in Speex is by using it in your application; Speex is well-suited to handle VoIP, internet audio streaming, data archival (like voice mail), and audio books. Currently, LinPhone, Ekiga, and Asterisk are some of the projects currently using Speex.

Popularity: 3% [?]

Indy: Open Source Socket Library »

Indy Sockets is an open source library which supports clients and servers of TCP, UDP and RAW sockets as well as over 100 higher level protocols. Some of the supported protocols include: SMTP, POP3, NNTP, HTTP and many more. Indy.Sockets FCL build is a managed assembly and is compatible with the Microsoft .NET framework, and Mono.

image

Indy Sockets is available for the following development platforms:

  • C#
  • C++
  • Delphi / Kylix
  • Visual Basic.NET (and other .NET languages)

Popularity: 1% [?]

Windows: Virtual Desktop Manager »

VirtuaWin is a virtual desktop manager for the Windows operating system (Win9x/ME/NT/Win2K/XP/Win2003/Vista). A virtual desktop manager lets you organize applications over several virtual desktops (also called ‘workspaces’). Virtual desktops are very common in Unix/Linux, and once you get accustomed to using them, they become an essential part of a productive workflow.

VirtuaWin is designed to be simple and elegant to use yet still be highly configurable and extensible.

image

Popularity: 1% [?]

Understanding Variable Scope »

Once in awhile, I came across bugs like these in applications.

This piece of code has concurrency issue in a multithreaded environment with Java RMI.

public class RMIServer extends UnicastRemoteObject implements Remote{
 
    private String stringVar;
 
 
    public RMIServer () throws RemoteException {
    }
 
    public RMIServer (int port) throws RemoteException {
        super(port);
    }
 
    public boolean process(Map<String, String> context) throws RemoteException {
       stringVar = context.get("value");
    }

The variable stringVar will have concurrency issue since the process method can be called by many threads at the same time.

This code suffered has memory leak issue

public class ReadBinaryFile {
    private byte[] byteArray;
    
    public void readFile(String fileName) {
       if (byteArray == null)
            byteArray = new byte[len];
       
}

The buffer is never released because it is always reachable by the program until the ReadBinaryFile object is garbage collected.

Popularity: 1% [?]

Develop Event Based Applications using Esper »

As quoted from the website, Esper is an Event Stream Processing (ESP) and event correlation engine (CEP, Complex Event Processing). Targeted to real-time Event Driven Architectures (EDA), Esper is capable of triggering custom actions written as Plain Old Java Objects (POJO) when event conditions occur among event streams. It is designed for high-volume event correlation where millions of events coming in would make it impossible to store them all to later query them using classical database architecture.

It is available for Java as Esper, and for .NET as NEsper.

The Esper engine has been developed to address the requirements of applications that analyze and react to events. Some typical examples of applications are:

  • Business process management and automation (process monitoring, BAM, reporting exceptions, operational intelligence)
  • Finance (algorithmic trading, fraud detection, risk management)
  • Network and application monitoring (intrusion detection, SLA monitoring)
  • Sensor network applications (RFID reading, scheduling and control of fabrication lines, air traffic)

Developing event-driven application is not hard using Esper.

  1. Define the mission of your application by analyzing your business domain and defining the situations to be detected or information to be reported
  2. Define your performance requirements, specifically throughput and latency
  3. Identify where events are coming from
  4. Identify lower level event formats and event content that is applicable to your domain
  5. Design the event relationships leading to complex events
  6. Instrument your sources of events
  7. Design how you want to represent events: as Java classes, as Maps, or as XML events
  8. Define EPL statements for patterns and stream processing
  9. Use the CSV adapter as an event simulation tool, to test situations to be detected, or to generate to load
  10. Test against your performance requirements: throughput and latency in your target environment

Popularity: 1% [?]

Aardvark Firefox Extension »

Aardvark is a Firefox extension that can be used to

  • Clean up unwanted banners and surrounding “fluff,” especially prior to printing a page
  • See how the page is created, block by block
  • View the source code of one or more elements

image

Popularity: 1% [?]

Java: Batch Processing using Spring Batch and Quartz »

Combined Spring Batch and Quartz and you should be able to develop a very flexible and powerful batch processing framework or application.

As quoted from the website, Spring Batch is a lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. Spring Batch builds upon the productivity, POJO-based development approach, and general ease of use capabilities people have come to know from the Spring Framework, while making it easy for developers to access and leverage more advance enterprise services when necessary.

image

Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advance technical services and features that will enable extremely high-volume and high performance batch jobs though optimization and partitioning techniques. Simple as well as complex, high-volume batch jobs can leverage the framework in a highly scalable manner to process significant volumes of information.

 

image

Quartz is a full-featured, open source job scheduling system that can be integrated with, or used along side virtually any J2EE or J2SE application – from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components or EJBs. The Quartz Scheduler includes many enterprise-class features, such as JTA transactions and clustering.

You can read more on the features here.

Popularity: 4% [?]