November 29, 2005

 

NIST Net

We were having issues for the past 1 week with Jumbo Frames on GigaBit Network. We use this network to test our SIP media stream flow. For some reason, we were seeing drastic drop in thruput at random points. We were not able to reproduce the issue consistently.

So I wanted to simulate several network scenarios, hoping that one will reproduce this error. Found this tool which exactly does what i want.

http://snad.ncsl.nist.gov/itg/nistnet/

November 28, 2005

 

Cisco Router in Space

Networking is one of my passionate areas of technology and Cisco (including the startups they acquire! (:-) ) is the company I mostly admire in this area. Came across an article in Cisco`s web site about their mobile router in space. WoW.

That really shows the power of IP networking.

http://www.cisco.com/web/strategy/government/space_next_gen.html

 

final keyword and JDK

Today at work we had a discussion and we came to a topic whether final variables can be changed via reflection. My vote was to the answer , "not possible" and i even confirmed it using 1.4 JDK. The other group also proved that we are wrong!!!

How? using JDK 1.5! Did a search in sun.com and came to this bug, which explains the behaviour.

http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=d307febaf1680b36e5795f816ed:YfiG?bug_id=5059911

Note: static finals cannot be changed via reflection in JDK 1.5

November 27, 2005

 

Wirefly`s Top 10 Cell Phones

Wirefly has released its top 10 selling cell phones. RAZR is at the top.



http://www.wirefly.net/articles/1105/1105-top-ten-cellphones.htm

As a owner of RAZR, was happy seeing the article. My phone has already gained lot of attention at my work!

November 24, 2005

 

Google`s Click-to-Call

Just came across Google`s Click-to-Call. Working in Telecom field, it was nice to see such a integration. It would have been nice if this is also integrated with Google Talk, so that i dont have to enter my number. This way the call atleast can ride on VoIP to some extent.


http://www.google.com/help/faq_clicktocall.html

November 23, 2005

 

open source DB comparison

DevX has an article on open source DB comparison. We are an Oracle shop, but it was nice to see the features available in current open source DBs. I have to do a proof a concept for a project and will try to use MySQL for that.

That will give me some exposure to the open source DBs.

http://www.devx.com/dbzone/Article/29480

 

J2SE 5.0

We have "officially" started using 5.0 in our development env. The top 2 features i like are

- new for-each loop: No more iterators, type casts to access the element in a collection

- enums: I used to wonder why this wasnt there in initial release of JDK. All these days i was using a perl script which will generate the enum style type safe class.I dont need this script anymore!

http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html

 

HPjtune

GC (Garbage Collection) is a very important concept in Java. If you are writing carrier grade server application in Java, its a must to do GC analysis to performance tune/optimize the application and also to avoid object leaks. I do have several GC toolkits and I just came across the following one from HP.

http://www.hp.com/products1/unix/java/java2/hpjtune/index.html

November 22, 2005

 

Servlet / HTTP Session Listeners

Most people who wants to do some cleanups when the user session gets destroyed, will first try out the HttpSessionListener interface (including me!). The API doc says "Notification that a session is about to be invalidated."

Later they will learn that eventhough the callback happens when session is about to be invalidated , you cannot access any of the session attributes. Doing so will throw an IllegalStateException.

If you do want to do some cleanups, say closing a network connection created for the user, the alternate is to implement the HttpSessionBindingListener in the session object itself.

http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpSessionBindingListener.html

November 21, 2005

 

Linux kernel boot time

When i was working on a Linux based storage appliance, we had issue with the time taken to reboot the appliance. After some investigation, one of the simple changes we did was to add "quiet" to the kernel boot command line, to reduce the output to the console.

http://tree.celinuxforum.org/CelfPubWiki/DisableConsole

November 20, 2005

 

"Candy bar RAZR" - the new L6



I own a silver RAZR (unlocked version) and it has gained significant attention at my work bcos of its sleek look.

I regularly use its inbuilt bluetooth and camera and iam very satisfied with it.

Now RAZR comes in candy bar style, the new L6. Need to see whether it has any new features which is not in RAZR.

November 19, 2005

 

AJAX mobile

AJAX is the latest buzzword eventhough the technology was available for a long time. Most Web 2.0 applications uses AJAX in one form or another.

Now AJAX framework is available for mobile phones using Opera`s SDK. This will help to provide a rich client UI experience for mobile phones similar to desktop.

http://www.opera.com/products/mobile/platform/

 

GPS tracked Car Insurance

Just came across this case study in IBM`s web site. GPS tracked car insurance

http://www-1.ibm.com/services/ondemand/norwichunion.html

This is one more proof that location based real-time services using GPS, RFID , Wi-Fi and mobile computing are going to be huge in the future.

November 18, 2005

 

Automatic toString() of a Class

We have a standard in our project that all Classes must implement the toString() outputting the current state of the Class , including the values of all member variables. This has been useful to debug several production issues.

But most developers tend to keep this task as last activity. So was searching for a framework class which can do this automatically using reflection and came across the following.

http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/builder/ToStringBuilder.html

Ofcourse there is performance penalty in using reflection, but anyway these info are part of "FINER" level debugs, which will be enabled only during issues in production.

November 16, 2005

 

DTrace Scripts

If you have read my previous posts, u may be aware that iam an ardent fan of DTrace. Here is one other reason. A set of useful scripts using DTrace to monitor I/O, Network, Memory etc.

http://www.opensolaris.org/os/community/dtrace/scripts/

 

HTTP authentication schemes

The following are the the types of authentication schemes that I have used in web based applications.

- Basic : Using HTTP 401 code, the web server validates the userName and password. The password is passed as clear text. A web server may support validating the userName and password using a flat file , Database or even LDAP.

- Digest : This is similar to the above but has higher security since the password is not passed at all. Instead a Digest of several params including the userName/password is passed. Any CGI program can customize if Digest Authentication Protocol is correctly followed. This is needed in cases where u want to validate the password using an external system , say for example RSA SecurID. The high level flow is as follows

- HTTP request
- Send 401 back with type as "Digest" with other Digest params like nonce etc
- Get the password for the userName passed (from DB, LDAP or external systems)
- Validate the Digest with the calculated Digest

For more info refer to http://www.ietf.org/rfc/rfc2617.txt?number=2617

Custom: Custom Login pages are used and no HTTP comes into picture for authentication. Just using CGI, the params are passed and its upto the backend program to do whatever it wants.

SSL Client Certificate:Basically each client will present a certificate and it will be validated against a cert store.I didnt get a chance to use this method yet in production deployments.

November 11, 2005

 

DTrace Inventor

When Solaris 10 came out, I was impressed with all its new features, especially DTrace. Just saw that the inventor of DTrace has been named one of world`s top innovators.



Congrats, Bryan Cantrill !

November 10, 2005

 

Socket Server models

I have written several socket servers in C/C++ as well as in Java, running on various UNIX platforms. This post is to summarize the various ways of handling requests in a socketServer.

- sequential : This is the simplest approach but does not scale well

- multi-processing : Create a process (fork()) to handle each client. I have used this approach in the 90s when threading wasnt available on all systems

- multi-threading: Create a thread (eg POSIX threads) to handle each client. Light weight compared to the above. I prefer this if I use Java

- asychronous handling: Basically using Non-Blocking IO on sockets. e.g. select() calls. Mostly prefer this when i code in C/C++. Recently Java also has support for NIO

November 08, 2005

 

XML Generator

I had a need to load test a web service. Was looking for a tool which can generate random XML instances for a given Schema. Found one from Sun. Looks like it does what i want.

Will try it out and post about it.

http://www.sun.com/software/xml/developers/instancegenerator/

November 03, 2005

 

BeanShell

Scripts are very helpful in any computing environment. We run several scripts in production to do various jobs. My Fav is bash followed by Perl

How about a "Java Shell", where we can execute Java commands without any need for class files, compilation etc. Basically writing shell scripts in Java.

http://beanshell.org/intro.html

One more great thing is the support of BeanShell in OpenOffice. It can be used to write custom actions using the OpenOffice API.

http://framework.openoffice.org/scripting/scriptingf1/developer-guide.html

 

RegEx / Tester

RegEx is a very useful tool. Several complex parsing can be done using RegEx in a few lines of code. I always wanted a tool to verify my RegEx patterns in an easy way. The following is one such.

http://www.quanetic.com/regex.php

Here is a simple example, how RegEx is useful in doing complex String Tokenizing in Java.

String input = "RegEx     ##  is    #  great!";
String pattern = "( )*#( )*";
String[] tokens = input.split(pattern);



Gives 4 tokens back.

November 01, 2005

 

PHONifier

This free service converts a web page , on-the-fly , to mobile device friendly format.

This reminds me of a appliance based product used for the same need. But it was more advanced and had wizards, rule engine editor, device specific support , custom templates etc.

For a simple web site, which needs mobile view, PHONifier would help.

http://www.phonifier.com/

This page is powered by Blogger. Isn't yours?