Recent Articles

Windows Media Encoder »

Windows Media Encoder is a powerful tool for content producers who want to capture audio and video content using the many innovations in Windows Media, including high-quality multichannel sound, high-definition video quality, and support for mixed-mode voice and music content.

Popularity: 1% [?]

Open Source Project Management Tool »

dotProject is a web-based project management application, designed to provide project layout and control functions.

dotProject aims to provide the project manager with a tool to manage tasks, schedules, communication and sharing. But beware, dotProject will not be all things to all project managers – you may find that other FOSS tools are more appropriate to your particular requirements. You will need to do some investigation and testing to find the product that best suits your requirements.

dotProject assumes that you understand the basic concepts of project management and what it is that you are trying to achieve in looking for a project management tool.

dotproject

Popularity: 1% [?]

Open Source CRM – openCRX »

openCRX is an open CRM solution that meets the needs of organizations requiring multifunctional, enterprise-wide coordination of sales generation, sales fulfillment, marketing and service activities to customers, partners, suppliers or intermediaries.

  • Groupware
    openCRX features lots of groupware functionality enabling users to manage e-mails and calendars (shared and/or private ones). Calender information is available in a variety of formats including ICS/iCal, andFreeBusy so that users manage their calendars with their preffered calendar client. E-mails are accessible with any IMAP-enabled E-mail client. openCRX also features an LDAP Server.
  • Account Management
    openCRX’s account management provides a true 360° view of customers across contracts, activities, products, and status. Account management enables your employees to build tighter, more profitable relationships by understanding the status of each account.
  • Product and Price Management
    In addition to managing products, prices and price lists in multiple currencies, you can build complex products based on simple products. openCRX supports the whole range of advanced product structuring, e.g. product bundling and design of product offerings based on multiple product bundles. Extremely flexible pricing rules, which you can add/modify at run-time, allow you to implement any desired pricing algorithm.
  • Sales Pipeline
    openCRX allows your team to focus on profitable deals and close them faster by sharing consistent sales information, tracking deal progress, and recording all deal-related interactions. In combination with openCRX’s activity management you can customize your own sales processes. The sales pipeline gives marketing professionals the tools to manage prospects and existing customers. You can integrate the openCRX sales pipeline at any stage with your existing ERP application to provide your sales force with relevant real-time data like warehouse information, shipping status, etc.
  • ThunderbirdLightningAdvanced Activity Management and Issue Tracking
    Coordinate workflow in large projects, track and monitor all project-related incidents and activities, group and structure your activities with activity trackers, stay in control with advanced time-tracking and real-time reports – or simply use openCRX as a very sophisticated bug tracker.
  • Tools and Administration
    openCRX administrators can customize the openCRX application to fit unique business demands, from adding/removing attributes or changing the screen layout to designing advanced activity processes to enhance the information flow within your organization. Advanced access control allows you to share information or restrict access based on user profile, role or team. Finally, extend openCRX with additional business modules with the openCRX wizards, reports and workflow capabilities.

Popularity: 1% [?]

Microsoft Web Sandbox »

The Web Sandbox explores how to advance the Web Platform to improve security, isolation, and quality of service protections for your web site and users.

Here is an interesting overview of the Sandbox architecture at http://websandbox.livelabs.com/documentation/arch_overview.aspx

Popularity: 1% [?]

KDE on Windows »

The KDE on Windows project is aimed at native porting of the KDE applications to MS Windows. Currently Windows 2000, XP, 2003 and Vista are supported.

Popularity: 1% [?]

Theora Video Compression Format »

Theora is a free and open video compression format from the Xiph.org Foundation. It can be used to distribute film and video online and on disc without the licensing and royalty fees or vendor lock-in associated with other formats.

Theora scales from postage stamp to HD resolution, and is considered particularly competitive at low bitrates. It is in the same class as MPEG-4/DiVX, and like the Vorbis audio codec it has lots of room for improvement as encoder technology develops.

It is being developed by the Xiph.org Foundation as part of their Ogg project (It is a project that aims to integrate On2′s VP3 video codec, Ogg Vorbis audio codec and Ogg multimedia container formats into a multimedia solution that can compete with MPEG-4 format).

Theora is derived directly from On2′s VP3 codec; currently the two are nearly identical, varying only in framing headers, but Theora will diverge and improve from the main VP3 development lineage as time progresses.

Theora is targeted at competing with MPEG-4 (e.g., XviD and DivX), RealVideo, Windows Media Video, and similar lower-bitrate video compression schemes.

Popularity: 1% [?]

Management Software for J2EE and Java Application »

MC4J is a project to create management software for J2EE application servers and other Java applications. It is designed to utilize the JMX specification to connect to and introspect information within supported servers and applications. It provides the ability to browse existing managed beans (MBeans), update configurations, monitor operation and execute tasks.

Features

  1. Can connect to ten different server types from a single interface
  2. Multiple live connections to any combination of the supported servers
  3. Full MBean tree to view all the exposed information in a server
  4. View server configurations and statistics remotely
  5. Perform operations on a server
  6. Register and track notifications
  7. Monitor performance information from the JVM itself using JDK 5
  8. Dynamic charting for all numeric information
  9. Custom dashboards for specific features in a server
  10. Query the server to find specific MBeans by name or by their attributes

mc4j

MC4J supports the following servers

  1. JBoss
  2. JMX Remoting
  3. MX4J
  4. OC4J
  5. Tomcat
  6. Bea Weblogic
  7. IBM Websphere
  8. Apache Geronimo
  9. Sun JSAS
  10. Pramati

Popularity: 1% [?]

Natural Language Toolkit »

NTLK is a set of open source Python modules, linguistic data and documentation for research and development in natural language processing, supporting dozens of NLP tasks, with distributions for Windows, Mac OSX and Linux.

The NLTK project began when Steven Bird was teaching CIS-530 at the University of Pennsylvania in 2001, and hired his star student, Edward Loper, from the previous offering of the course to be the teaching assistant (TA). They agreed a plan for developing software infrastructure for NLP teaching that could be easily maintained over time. Edward wrote up the plan, and both began work on it right away.

Popularity: 2% [?]

eBook: Natural Language Processing -Analyzing Text with Python and the Natural Language Toolkit »

This book is freely available from

http://www.nltk.org/book

Popularity: 2% [?]

Alternative ORM Tool to Hibernate »

Here are some alternatives to Hibernate

OpenJPA

Apache OpenJPA is a Java EE persistence project of the Apache Software Foundation. It is a feature-rich implementation of the persistence part of Enterprise Java Beans 3.0, also known as the Java Persistence API (JPA), and is available under the terms of the Apache Software License. OpenJPA can be used as a stand-alone POJO persistence layer, or it can be integrated into any EJB3.0 compliant container and many lightweight frameworks.

EclipseLink

The Eclipse Persistence Services Project (EclipseLink) project’s goal is to provide a complete persistence framework that is both comprehensive and universal. It will run in any Java environment and read and write objects to virtually any type of data source, including relational databases, XML, or EIS systems. EclipseLink will focus on providing leading edge support, including advanced feature extensions, for the dominant persistence standards for each target data source; Java Persistence API (JPA) for relational databases, Java Architecture for XML Binding (JAXB) for XML, J2EE Connector Architecture (JCA) for EIS and other types of legacy systems, and Service Data Objects (SDO).

TopLink Essentials

The Enterprise JavaBeans (EJB) 3.0 specification includes an additional persistence specification called the Java Persistence API (JPA). It is an API for creating, removing and querying across lightweight Java objects and can be used both within a compliant EJB 3.0 Container and a standard Java SE 5 environment.

TopLink Essentials is the open-source community edition of Oracle’s TopLink product. It provides the JPA 1.0 functionality for the EJB 3.0Reference Implementation.

As of Oracle TopLink 11g, TopLink Essentials has been replaced with EclipseLink JPA. EclipseLink JPA implements JPA 1.0 and is responsible for delivering the persistence framework.

Popularity: 2% [?]

Open Source Diagramming Tool »

Dia is a GTK+ based diagram creation program for Linux, Unix and Windows released under the GPL license.

Dia is roughly inspired by the commercial Windows program ‘Visio’, though more geared towards informal diagrams for casual use. It can be used to draw many different kinds of diagrams. It currently has special objects to help draw entity relationship diagrams, UML diagrams, flowcharts, network diagrams, and many other diagrams. It is also possible to add support for new shapes by writing simple XML files, using a subset of SVG to draw the shape.

It can load and save diagrams to a custom XML format (gzipped by default, to save space), can export diagrams to a number of formats, including EPS, SVG, XFIG, WMF and PNG, and can print diagrams (including ones that span multiple pages).

dia

Popularity: 1% [?]

Alternative for Microsoft Journal »

Xournal is an application for notetaking, sketching, keeping a journal using a stylus. It is free software (GNU GPL) and runs on Linux (recent distributions) and other GTK+/Gnome platforms. It is similar to Microsoft Windows Journal or to other alternatives such as Jarnal, Gournal, and NoteLab.

xjournal

Popularity: 2% [?]

Tool for Easy Web Authoring »

KompoZer is a complete web authoring system that combines web file management and easy-to-use WYSIWYG web page editing.

KompoZer is designed to be extremely easy to use, making it ideal for non-technical computer users who want to create an attractive, professional-looking web site without needing to know HTML or web coding.

Features

  • WYSIWYG editing of pages, making web creation as easy as typing a letter with your word processor.
  • Integrated file management via FTP. Simply login to your web site and navigate through your files, editing web pages on the fly, directly from your site.
  • Reliable HTML code creation that will work with all of today’s most popular browsers.
  • Jump between WYSIWYG Editing Mode and HTML using tabs.
  • Tabbed editing to make working on multiple pages a snap.
  • Powerful support for forms, tables, and templates.
  • The easiest-to-use, most powerful Web Authoring System available for Desktop Linux, Microsoft Windows and Apple Macintosh users.

Popularity: 1% [?]

Sync Files Between Different Computers using Windows Live Sync »

Using Windows Live Sync, you can mirror your most important folders – like your Favorites, Pictures, and Documents – so they’re the same on all your computers.

Sharing with friends, coworkers, and family is easy when you add and update files in a shared folder. Large files? Not a problem – Sync can handle files up to 4 GBs in size. And it works on both PC and Mac (support for Mac is available in English only).

Popularity: 2% [?]

Speeding Up Your Website »

  1. Make Fewer HTTP Requests
  2. Use a Content Delivery Network
  3. Add an Expires or a Cache-Control Header
  4. Gzip Components
  5. Put Stylesheets at the Top
  6. Put Scripts at the Bottom
  7. Avoid CSS Expressions
  8. Make JavaScript and CSS External
  9. Reduce DNS Lookups
  10. Minify JavaScript and CSS
  11. Avoid Redirects
  12. Remove Duplicate Scripts
  13. Configure ETags
  14. Make Ajax Cacheable
  15. Flush the Buffer Early
  16. Use GET for AJAX Requests
  17. Post-load Components
  18. Preload Components
  19. Reduce the Number of DOM Elements
  20. Split Components Across Domains
  21. Minimize the Number of iframes
  22. No 404s
  23. Reduce Cookie Size
  24. Use Cookie-free Domains for Components
  25. Minimize DOM Access
  26. Develop Smart Event Handlers
  27. Choose <link> over @import
  28. Avoid Filters
  29. Optimize Images
  30. Optimize CSS Sprites
  31. Don’t Scale Images in HTML
  32. Make favicon.ico Small and Cacheable
  33. Keep Components under 25K
  34. Pack Components into a Multipart Document

From http://developer.yahoo.com/performance/rules.html

Popularity: 2% [?]

Java: Alternatives for Log4j »

Here are some alternative logging APIs for Log4j, other than the JDK Logging APIs.

LogBack

Logback is intended as a successor to the popular log4j project. It was designed by Ceki Gülcü, the founder of log4j. It builds upon experience gained in building industrial-strength logging systems going back as far as 1999.

Logback’s basic architecture is sufficiently generic so as to apply under different circumstances. At present time, logback is divided into three modules, logback-core, logback-classic and logback-access.

The logback-core module lays the groundwork for the other two modules. The logback-classic module can be assimilated to a significantly improved version of log4j. Moreover, logback-classic natively implements the SLF4J API so that you can readily switch back and forth between logback and other logging systems such as log4j or java.util.logging (JUL).

The logback-access module integrates with Servlet containers, such as Tomcat and Jetty, to provide HTTP-access log functionality. Note that you could easily build your own module on top of logback-core.

log5j

log5j is a modern logging facade built on top of Log4j.

It is no long required to give log4j the category when creating a new class level logger. Log5j just figures it out from the call stack, and it provides sprintf support for logging messages

Popularity: 2% [?]

Apache JDO, JPOX, SDO, DAS and SCA »

Java Data Objects (JDO) is a standard way to access persistent data in databases, using plain old Java objects (POJO) to represent persistent data. The approach separates data manipulation (done by accessing Java data members in the Java domain objects) from database manipulation (done by calling the JDO interface methods). This separation of concerns leads to a high degree of independence of the Java view of data from the database view of the data.

Interfaces are defined for the user’s view of persistence:

  • PersistenceManager: the component responsible for the life cycle of persistent instances, Query factory, and Transaction access
  • Query: the component responsible for querying the datastore and returning persistent instances or values
  • Transaction: the component responsible for initiating and completing transactions

Java Persistent Objects (JPOX) is designed as a heterogenous tool for storage of data, using accepted standard APIs. JPOX 1.0 supports persistence using the JDO 1 standard (JSR 0012). JPOX 1.1 additionally supports persistence using the JDO 2 standard (JSR 0243). JPOX 1.2 will additionally support persistence using the JPA 1 standard (JSR 0220).

SOA creates an environment where different types of data must work together. This makes application development complex. Service Data Object(SDO), provides a very simple programming model that addresses this issue. The key high level advantages of SDO are:

  • Uniform access to data from heterogeneous sources which could be XML, RDB, POJO, SOAP, etc.
  • SDO provides both a static (or strongly typed) programming model and a dynamic (or loosely typed) programming model. This provides a simple programming model without sacrificing the dynamic model needed by tools and frameworks.
  • Provides Meta-data for easy introspection of data types
  • Supports a disconnected model, whereby data can be retrieved from a data source via Data Access Service. The data can be modified by a client with change tracking, and applied back to the data source.
  • SDO programming model is language neutral

Data Access Service (DAS) simplifies handling of data when interacting with the back-end data source and frees application developers from dealing with tedious and error-prone transformation between end source types and SDO Data Object Types/properties.

SCA is a programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.

SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.

Popularity: 2% [?]

Java: Optimize Logging for Better Performance »

Logging is necessary for troubleshooting purpose but excessive logging impacts performance. In most application, if you need high performance, you have to reduce the amount of logging.

If logging cannot be avoided, then you should try to output as much information as possible during a single logging operation, instead of logging multiple times consecutively.

E.g., avoid this pattern

logger.info("logging information")    ;
logger.info("logging information again");

Join them in 1 single line instead

logger.info("logging information. " + "logging information again");

Also try to avoid logging inside a loop. If possible, log after you exit from the loop.

E.g.

// Lookup table
Map<String, String> lookup = new HashMap<String, String>(1);
lookup.put("key1", "value1");
lookup.put("key2", "value2");
lookup.put("key3", "value3");
 
 
Map<String, String> nameValuePair = new HashMap<String, String>(1);
nameValuePair.put("key1", "");
nameValuePair.put("key2", "");
nameValuePair.put("key3", "");
 
// Lookup by keys
for (String key: nameValuePair.keySet()){
   String value = lookup.get(key);
   logger.info("key: " + key + " value: " + value);
   nameValuePair.put(key, value);
}

Instead of logging inside the loop, log the information outside the loop.

// Lookup table
Map<String, String> lookup = new HashMap<String, String>(1);
lookup.put("key1", "value1");
lookup.put("key2", "value2");
lookup.put("key3", "value3");
 
 
Map<String, String> nameValuePair = new HashMap<String, String>(1);
nameValuePair.put("key1", "");
nameValuePair.put("key2", "");
nameValuePair.put("key3", "");
 
// Lookup by keys
for (String key: nameValuePair.keySet()){
   String value = lookup.get(key);
   nameValuePair.put(key, value);
}
 
logger.info(nameValuePair);

 

Read also various performance articles here.

Popularity: 2% [?]

JTRunner: Another Java Testing Framework »

The JTR Framework is aimed at fastening the development of both functional and stress-test suites for verifying the requirements and robustness of both JSE and JEE projects. The JTR Framework supports you in writing components meant for testing:

  1. standard JSE components / applications

  2. EJBs conforming to both J2EE 2.x and JEE specifications

  3. MOM-based JSE and JEE systems (JMS)

  4. web-services (both document-based and rpc-like)

The JTR Framework has been written following the principles of IoC (Inversion of Control). Following this approach it lets developers focus exclusively on the test-logic, bereaving him/her of the burden to think about dealing with a great number of issues generally related with resource retrieval, multithreading management, tests parameterizations, error handling and so on.

The JTR Framework lets you concentrate solely on the testing logic, leveraging on the JTR Runtime to deal with other important tasks on your behalf.

The JTR Runtime provides you with the following features:

  1. multiple runner instances management (runners-multithreading and scheduling)

  2. runner instances parameterization

  3. scripted parameters initialization (only with JTR 5)

  4. built-in statistical functions for parameters initialization (only with JTR 5)

  5. transparently run JUnit 4 test-cases (only with JTR 5)

  6. management of JMS resources

  7. stub-less (or dynamic) webservices invocation

  8. automatic error handling

  9. test results collection and inspection via the JTRConsole

  10. effortless distributed testing

Popularity: 2% [?]

Java Toolkit for Subversion »

SVNKit is a pure Java toolkit – it implements all Subversion features and provides APIs to work with Subversion working copies, access and manipulate Subversion repositories – everything within your Java application.

Features

  • Repository access over http(s), svn, svn(+ssh) and file protocols.
  • Working copy operations – all are supported.
  • Repository administration: create, load, dump and replay operations.
  • Additionally to its own API, SVNKit implements JavaHL API.
  • SVNKit is reported to work on Windows, OSX, Linux, BSD and OpenVMS.
  • SVNKit does not require native binaries, it works out of the box.
  • Native Subversion configuration files are used by default.
  • Java Subversion command line client is part of SVNKit.
  • Latest SVNKit supports Subversion 1.5.2.

Popularity: 2% [?]