February 28, 2006
Graph Library

NetBeans has a graph library to visualize graph structures. It has several features like drag-n-drop, zoom in/out etc.
Search Engine for Source Code
February 27, 2006
Linux and 497 days uptime
I use an old PC running an old Linux Kernel as a file server in my home LAN. Yday Found that the uptime has rolled over. I have read about this long back that the uptime jiffies will rollover bcos of 32 bit, but never thought that i will face it one day.
Looks like newer kernels has support for 64 bit jiffies and there are also patches available.
Looks like newer kernels has support for 64 bit jiffies and there are also patches available.
JoSQL

JoSQL is a framework to use SQL on a collection of Java objects, to perform search, sorting etc.
For e.g.
SELECT *
FROM java.io.File
WHERE name $LIKE "%.html"
AND lastModified BETWEEN toDate('01-12-2004')
AND toDate('31-12-2004')
Email Validations
Spam is the main issue with the current email systems. There are several ways to prevent/reduce spam at server level as well as at the email client level.
There are two IETF drafts which provides different methods to solve the same.
There are two IETF drafts which provides different methods to solve the same.
- SPF - Sender Policy Framework - to authorize, usage of domain names
- Domain Keys- uses public key cryptography
February 26, 2006
JDBC 4.0

The following are some of the new features in JDBC 4.0
- Auto loading of JDBC drivers
- Access to ROW ID
- SQL/XML support
Voice over Wi-Fi
VoWiFi is gaining great momentum in recent days.
- Nokia has 6136 phone which can do both GSM and WiFi
- Barablu has their client for Nokia 9500
- Microsoft has free internet voice service for mobile phones in their upcoming Microsoft Office Communicator
Hotsip

Looks like J2EE appserver vendors are getting into the VoIP area with Java based telecom services integrated with J2EE like SIP Servlets, JAIN, JSLEE etc.
BEA has Weblogic Communications platform and now Oracle has acquired Hotsip
FC-SATA

SATA - Serial ATA is a superior technology for Hard drives. Now Emulex has a technology where SATA can be tunneled over Fibre Channel.
Servlet 2.5
Following are some of the new features in Servlet 2.5 Spec- Annotations support for easier programming
- In web.xml, multi servlet mapping to filters using wildcard
- In web.xml, multi URL patterns mapping to servlet names
February 25, 2006
Design Patterns & RTOS
Programming for real-time systems is different than non real-time systems. Since every millisecond count in real time systems, the design must be very reliable and provide high performance. I got a chance once to work on real time systems using VxWorks.
Embedded.com has a nice article on different Design patterns for RTOS programming.
Part 1 Part 2
Embedded.com has a nice article on different Design patterns for RTOS programming.
Part 1 Part 2
Laptops & 3G
Most Laptops have inbuilt wireless (e.g. Centrino). Intel is going to embed 3G using SIM cards into the laptops. This is great since we can directly use any carriers 3G connections when being mobile without any need for Wi-Fi connections.
February 24, 2006
Y! & Web UI

Y! has published a list of UI design patterns. They also have an UI library with resusable components for AJAX based development.
Data Paging
Paging the Results of a Query is very frequent activity done with Data. What are the diff ways to do it?
public Query setMaxResults(int maxResults)
- If the Database supports paging directly, then its the most efficient way to do it. For e.g Oracle has a feature of returning rownum with the results. Using this a select query can do paging based on the total count of rows
- If the JDBC driver for the DB, supports Scrollable ResultSets (JDBC 2.0), then its more easier and DB independent
- If an ORM tool is used, it may take care of underlying database specific details. For eg Hibernate provides a more simplified usage using Query API (it still internally uses JDBC)
public Query setMaxResults(int maxResults)
- Last option is to just get the data and cache it in user`s session e.g HttpSession. This approach eats memory and may provide stale data
February 22, 2006
FireBug
AJAX is the most talked about technology. Firefox add-ons has a nice tool called FireBug, which will help debugging JS and AJAX code. It can also sniff AJAX XML requests.
February 21, 2006
SYS-CON Awards
SYS-CON has announced the Reader`s Choice Awards for SOA, Java, Linux, XML and few others.
I use Weblogic, JWSDP, NetBeans, XMLSpy, Oracle 10g, Sun`s JVM, RHEL and so it was great to see them as the winners in their respective categories.
I use Weblogic, JWSDP, NetBeans, XMLSpy, Oracle 10g, Sun`s JVM, RHEL and so it was great to see them as the winners in their respective categories.
Interview with XQuery co-inventor
XQuery is used to query XML using XPath expressions. Very useful to manipulate XML data, when rendering XML to other formats using XSL.
Here is an interview with Jonathan Robie, the co-inventor of XQuery.
Here is an interview with Jonathan Robie, the co-inventor of XQuery.
February 20, 2006
Berkeley DB

Berkeley DB is a carrier grade DB engine which provides high performance and it also supports reliable replication.
No Wonder, Oracle acquired Sleepycat software, the makers of Berkeley DB.
Here`s one more proof. The Big G uses it, for its SSO mechanism.
February 19, 2006
free VMware Server

Few weeks back vmware announced a free product called VMware player, which is a tool to run VMware images created by other VMware softwares.
Now they have one more free product called VMware server which can be used for server virtualization. Using this a single physical server can be partitioned into multiple virtual servers.
Red Hat & MacBook
Posted earlier that I would buy a MacBook pro as soon as i see Linux running without any issues on MacBook Pro.
Looks like it may happen soon. Red Hat plans a Linux distro for MacBook. Great!
Looks like it may happen soon. Red Hat plans a Linux distro for MacBook. Great!
Oracle 10g - TDE
TDE (Transparent Data Encryption) is a feature available in Oracle 10g, where the DB engine takes care of encrypting the data, transparent to the application. The encryption can be applied even at a column level.
February 18, 2006
Java Service Wrapper

Java Service Wrapper is a watchdog application for Java processes. It also has several other features like On demand restarts, Windows Service/UNIX daemon support etc.
Innovative Ad Idea!

RoofShout designs ads on roofs which will be displayed on web based maps, when the satellite picks up new images of those buildings.
Load Balancer & Server Health check
Load Balancers needs to know the health of the servers (nodes) in order to properly load balance the requests. The following are some of the ways it can be done.
SNMP , JMX can also be used for agent based Load Balancing.
- LB polling: In this method, the LB keeps checking the server IP/port, whether its up or not. This is a very basic health check
- Custom LB polling: A server application may still be down or hung, eventhough the IP/port is responding. To cover this case, most load balancers supports custom scripts to be executed. These scripts can contain application specific checks e.g. for SIP load balancing, it can issue a SIP request and check the response
- DFP (Dynamic Feedback Protocol) by Cisco
- SASP (Server Application State Protocol) by IBM
SNMP , JMX can also be used for agent based Load Balancing.
JAX-WS 2.0
JAX-WS 2.0 is an extension and enhancements to JAX-RPC 1.1. Could be called as JAX-RPC 2.0 too.
These are some of the new features and enhancements
These are some of the new features and enhancements
- Use JAXB for data binding. Earlier if u do need JAXB, the XML schema cannot be embedded in the WSDL itself, as JAX-RPC creates its own binding. One work around is to accept the XML as String and marshall/unmarshall it using JAXB
- support for new W3C WebService standards
- Annotations for Java<->WSDL mapping
- JSR 183 (WS Security)
- non-HTTP transports
core files
"core dumps" in Linux (or any UNIX) are very useful for debugging purpose. Here are few things about it
- If core files are not needed , set "ulimit -c 0", else set the required size using "ulimit -c <size>"
- To set destination dir/pattern for core files, use "sysctl -w kernel.core_pattern=<pattern>". Refer to "man proc" for more details on patterns
- To make a program purposely "core dump" , send SIGSEV signal to it , by using "kill -s SIGSEGV <pid>"
February 17, 2006
lighttpd

lighttpd is a small memory footprint webserver which claims to be faster than apache. It has most of the features a webserver need and also PHP support.
E9-1-1
Handling 911 calls is a major issue with VoIP Providers. NENA (National Emergency Number Association) has come up with an architecture to handle VoIP 911 calls.
February 16, 2006
Innovative WiFi idea!

FON is a community to share WiFi and get access to WiFi all over the world. They do this by having a custom software which needs to be downloaded to the router.
They also have nice names to the different types of User Profiles (Linus, Bills, Aliens) !
http://en.fon.com/
i18n / l10n
Internationalization: Making an application capable of handling different locales
Localization: The process of creating locale specific contents
In Java, locales are handled using Locale class. For a given locale, its specific content (e.g. translated strings) is stored and fetched using ResourceBundle class.
In Java case, Internationalization is the process of making an application to use Locales/Resource Bundles instead of hardcoding the messages.
In Java case, Localization is the process of creating Resource Bundles with locale specific content.
Localization: The process of creating locale specific contents
In Java, locales are handled using Locale class. For a given locale, its specific content (e.g. translated strings) is stored and fetched using ResourceBundle class.
In Java case, Internationalization is the process of making an application to use Locales/Resource Bundles instead of hardcoding the messages.
In Java case, Localization is the process of creating Resource Bundles with locale specific content.
802.11n
Following are the widely used wireless standards.
802.11a - 2.4 Ghz, 11 Mbps
802.11b - 5 Ghz, 54 Mbps
802.11g - 2.4 Ghz, 54 Mbps
At home, I use a Centrino based laptop which has 802.11g, connecting to Linksys 802.11g Router.
There is a new std emerging from IEEE called 802.11n. This can do 200+ Mbps.
802.11a - 2.4 Ghz, 11 Mbps
802.11b - 5 Ghz, 54 Mbps
802.11g - 2.4 Ghz, 54 Mbps
At home, I use a Centrino based laptop which has 802.11g, connecting to Linksys 802.11g Router.
There is a new std emerging from IEEE called 802.11n. This can do 200+ Mbps.
February 15, 2006
Search Engine for JARs

Most Java developers have faced the dreadful "ClassNotFoundException", but dont know where to fetch the Class or JAR. Now there is a search engine dedicated to find JAR files given a Class name. Its called Jarhoo. Very useful.
Linux ScreenSaver for Windows

developerWorks has an excellent hack on how to make Linux run as a Windows screensaver. This proves again the power of Linux and how flexible it is.
Article
ZFS
XFS is my favourite FS in Linux, for the following reasons
- Inbuilt ACL support
- Large FileSystem Capablity, 64 bit support
- Excellent backup programs (xfsdump/xfsrestore)
Here is a FS from Sun which is available in Solaris 10 with excellent features like
- Solaris container support
- Inbuilt Snapshots
- 128 bit support (WoW...)
- and lot more...
- Inbuilt ACL support
- Large FileSystem Capablity, 64 bit support
- Excellent backup programs (xfsdump/xfsrestore)
Here is a FS from Sun which is available in Solaris 10 with excellent features like
- Solaris container support
- Inbuilt Snapshots
- 128 bit support (WoW...)
- and lot more...
February 14, 2006
Popular Programming Languages
Based on TIOBE programming community index, Java is at the top for Feb 2006.
http://www.tiobe.com/index.htm?tiobe_index
http://www.tiobe.com/index.htm?tiobe_index
How to remove a JMS message?
Had a need to remove a JMS message from its Q based on an event. Looked thru JMS api and docs and I couldnt find a standard way to do it. Most suggested to consume the message as a way of deletion.
Since we use Weblogic 9.x , it has a vendor specific way to delete a JMS message, provided the Q is in paused state.
Since we use Weblogic 9.x , it has a vendor specific way to delete a JMS message, provided the Q is in paused state.
February 13, 2006
J2EE for Telecom Services
How J2EE model can be used for designing Telecom services?
SIP Servlets: JSR 116 defines an API for processing SIP requests in a way similar to HTTP servlets. Thus a J2EE container can provide a SIP engine to leverage J2EE based enterprise resources
BEA Weblogic SIP Server
JSLEE: "JAIN Service Logic Execution Environment" is a container spec for event driven communication applications. Its based on JSR 240. These specs define how components can be deployed and managed , similar to J2EE. JSLEE supports Connector architecture to integrate with J2EE apps
Open Cloud Rhino
mobicents - open src JSLEE container
Protocol stacks: In this method a protocol stack (SIP, H323) is integrated with J2EE apps either using JCA or just accessing the services as a J2EE client
NIST SIP stack
H323 stack
SIP Servlets: JSR 116 defines an API for processing SIP requests in a way similar to HTTP servlets. Thus a J2EE container can provide a SIP engine to leverage J2EE based enterprise resources
BEA Weblogic SIP Server
JSLEE: "JAIN Service Logic Execution Environment" is a container spec for event driven communication applications. Its based on JSR 240. These specs define how components can be deployed and managed , similar to J2EE. JSLEE supports Connector architecture to integrate with J2EE apps
Open Cloud Rhino
mobicents - open src JSLEE container
Protocol stacks: In this method a protocol stack (SIP, H323) is integrated with J2EE apps either using JCA or just accessing the services as a J2EE client
NIST SIP stack
H323 stack
February 12, 2006
Sun`s Founders reunite...

Scott McNealy, Bill Joy, Andy Bechtolsheim, and Vinod Khosla reunites to talk about Sun`s history and technology trends. An informative webcast to watch.
February 11, 2006
Grid Computing using Java
Grid Computing is one of the hottest technologies. Want to try out grid computing using Java.
First you need a Grid Engine. Sun has a open source Grid Engine project.
To submit jobs to the Engine, an API is needed. DRMAA (Distributed Resource Management Application API) is one such API specification and it has C,Java bindings.
Sun`s Grid Engine comes with a Java implementation of DRMAA api.
Now you can start coding and have fun with submitting jobs to the Grid using Java.
First you need a Grid Engine. Sun has a open source Grid Engine project.
To submit jobs to the Engine, an API is needed. DRMAA (Distributed Resource Management Application API) is one such API specification and it has C,Java bindings.
Sun`s Grid Engine comes with a Java implementation of DRMAA api.
Now you can start coding and have fun with submitting jobs to the Grid using Java.
February 10, 2006
Data Encryption (Storage)
Its been a while I blogged about Storage, so thought of writing about backup data encryption.
To safegaurd data stored on backup tapes/disks, encryption appliances are used. This way the data is safe, even when the tapes gets lost or stolen. Some even offer wirespeed encyption to live data stored on NAS/SAN storage.
These are some of the encryption appliance vendors
http://www.decru.com/
http://www.neoscale.com/
http://www.vormetric.com/
To safegaurd data stored on backup tapes/disks, encryption appliances are used. This way the data is safe, even when the tapes gets lost or stolen. Some even offer wirespeed encyption to live data stored on NAS/SAN storage.
These are some of the encryption appliance vendors
http://www.decru.com/
http://www.neoscale.com/
http://www.vormetric.com/
February 09, 2006
Service Data Objects
SDO (Service Data Objects) is a proposed programming model from BEA/IBM. This spec deals with having a common Data access layer and delegating data source specific stuff to mediators.
Next-Gen-Data-Programming-Whitepaper
Next-Gen-Data-Programming-Whitepaper
February 07, 2006
Run JDK 1.5 Code on JDK 1.4
JDK 1.5 has lot of nice features and we switched to JDK 1.5 and started using the features in our codebase. Suddenly we had a need to run this code on JDK 1.4.
Since this is just for testing purpose, we didnt want to change the code to remove 1.5 features.
Thats where Retroweaver comes to help. It provides runtime support for 1.5 features (not all of them) in 1.4.
It works great.
Since this is just for testing purpose, we didnt want to change the code to remove 1.5 features.
Thats where Retroweaver comes to help. It provides runtime support for 1.5 features (not all of them) in 1.4.
It works great.
Tuning Apache...Y! way
An interesting presentation from Michael J. Radwin, on how Y! tunes Apache to serve billions of requests. I have been thinking that I know almost all of the http tuning with apache, but this presentation showed there are many more to learn.
February 06, 2006
SIP Load generator

SIPp is a SIP protocol based Call generator. Very useful for automated testing of SIP applications , to evaluate "carrier-grade" SIP proxies etc.
Also supports Custom scenarios, RTP media traffic. Runs on Solaris and Linux. Great tool for any SIP applications developer.
February 05, 2006
auto restore of browser session
SessionSaver is a Firefox extension which restores the browser session including the tabs. One more reason why i love Firefox!
scanR
Came across this product, while surfing.scanR takes a picture of a document or whiteboard and enhances it to be more readable. This is a very innovative and useful service.
For example, not all conf rooms at work are equipped with the whiteboards with printer facility. Now i can take a pic of whatever we discussed and can get a readable format back.
Ofcourse there is issue of privacy and security. But its a innovative usage of camera phones.
Linux on GameCube

GameCube is a gaming system from Nintendo. The Power of Linux is proved once again with "Linux on GameCube" project.
AWStats / CLF
AWStats is the framework I use, to analyze web server access logs in my projects. It supports several log file formats including CLF (Common Log Format).
It generates various reports based on several parameters.
It generates various reports based on several parameters.
Popular Web Authoring Patterns
Google has published a study on popular web authoring techniques by analyzing their huge mine of HTML pages. Its very interesting to read and very useful for any Web GUI developer.
February 03, 2006
WSDL / which way to pass XML data ?
While designing WebServices to pass XML data , one of the questions that may arise is, In what way the XML should be passed?
There are 2 ways.
1) endpoint method accepts the XML as string argument
2) endpoint method accepts the XML as Schema defined type
Each has its own pros/cons. I usually decide based on the following.
Choose former, if more control over the mapping of XML to Java is needed (e.g. using JAXB) , if need to work on the Document object directly to do some activities and if the Data Schema frequently changes
Choose later, if WSDLs need to strictly enforce the XML types and the WS SDK`s Java mapping is enough.
There are 2 ways.
1) endpoint method accepts the XML as string argument
2) endpoint method accepts the XML as Schema defined type
Each has its own pros/cons. I usually decide based on the following.
Choose former, if more control over the mapping of XML to Java is needed (e.g. using JAXB) , if need to work on the Document object directly to do some activities and if the Data Schema frequently changes
Choose later, if WSDLs need to strictly enforce the XML types and the WS SDK`s Java mapping is enough.
February 01, 2006
VMware Player

VMware is one of the products, i cannot live without. I use it @ work for running Windows on Linux, for simulating clusters, to test s/ws on various OS etc etc.
Now they have come up with a free Player version (similar to Viewer versions for pdf, visio etc) to run the VM images. It cannot be used to create new VMs. But its very useful for me to use my work VMs at home.
Thanks VMware for this excellent product.
