Sunday, November 25, 2012

JavaScript Instance Diagram

For JavaScript code:

var obj = {};

[Note: __proto__ is available on Chrome and Firefox]

For JavaScript code:

function Rect(w, h)
    this.width = w;
    this.height = h;
Rect.prototype.area = function() {
    return this.width * this.height;
var rect = new Rect(2,4);

[Note: __proto__ is available on Chrome and Firefox]

Tuesday, October 30, 2012

Eclipse: Show all instances of implementors of selected Java Interface

UPDATE: Added support for showing instances of classes that have specified Annotations (e.g. @Resource) on them. Added support for not showing instances for a class if the number of instances is 0.

In this blog entry I talked about extension to Eclipse Java debugger to show all instances of selected Java Class in the Expressions view. Someone requested the support for showing all instances of objects that implement selected Java Interface. I have implemented that feature now. To fully understand the context see the original blog entry first. Then see the screenshots below:

You can install the plug-in from the plug-in's update site:


Wednesday, October 24, 2012

Windows 7: Thin Vertical Taskbar

With the widescreen monitors I like to have my Windows 7 Taskbar positioned on the left edge of the monitor with Auto-hide turned on. There are many benefits of this:

  • With widescreen monitor the horizontal space is plentiful
  • Having the Taksbar on the left keeps it out of the areas where you may do mouse based activity. Having it on the right edge interferes with mouse based scrollbar activity

But no matter how much I try I cannot make it thinner than this:

I can make it very short when the Taskbar is horizontal:

How I wish I could make it thinner like this:

I got annoyed enough that I went googling and figured out a way that works for me. I am going to show you how. Just follow these step:

  • Set the taskbar settings like so:

Right-click on the taskbar and select Properties menu to show the Taskbar and Start Menu Properties dialog.

  • Create a file ThinTaksBar.bat with content:

echo ThinTaskbar
net stop "UxSms"
net start "UxSms"

It basically restarts the service "UxSms". This needs to be run as administrator. You can run the script manually with as administrator using the runas command like this:

> runas /noprofile /user:administrator ThinTaksBar.bat
  • To automate this create a scheduled task using Task Scheduler. Configure to run it with highest priviledges approximately 2 minutes after login like so:

Next time you log in, after a minute or so you will have the thin Taskbar.

Thats all folks!

Sunday, October 21, 2012

Eclipse: Enhanced Cut Copy Paste Plus Plug-in

UPDATE: Now supports paste from history using (CTRL+SHIFT+Alt+V on Widnows and Linux, COMMAND+SHIFT+OPTION+V on Mac)

In this entry I blogged about the Cut Copy Paste Plus Plug-in. I have enhanced it to hook into Eclipse's standard paste command. The first paste invocation works as usual. If the General > Editors > Cut Copy Paste Plus > Quick Paste cycles through History is selected, the the quick successive invocation (within the delay specified by General > Editors > Cut Copy Paste Plus > Paste next delay(milliseconds)) of standard Edit > Paste command (CTRL+V on Widnows and Linux, COMMAND+V on Mac) will paste the strings from history.

This special behavior of paste can be toggled using the Toggle Quick Paste Cycles Through History command (CTRL+SHIFT+V on Widnows and Linux, COMMAND+SHIFT+V on Mac).

BTW this works in any StyledText and Text widgets.

You can install the plug-in from Eclipse Marketplace:


Saturday, July 21, 2012

Eclipse: Clone Remote Systems View Plugin

The RSE Plugin for Eclipse has the Remote Systems View which allows you to look at local file system as well as remote files system using SSH. I use this to view the file system of remote Linux machines from inside my Eclipse IDE on my development machine. This comes very handy for dragging and dropping files between Package Explorer to the remote machine's file system. However if you want to copy files from one remote machine to another it can get tricky because you may have to autoscroll to drag and drop the files due to the long expanded trees shown in the same view. Well, I thought let me just clone the Remote Systems View, place the original and the cloned views side by side, scroll to the right place in the trees in each view and then simply drag and drop  the files. Alas, the Remote System View does not support the cloning. Bummer... No fear....I wrote a small Eclipse Plugin which allows you to do just that. The Clone View feature lets you clone the Remote Systems View as many times as you like. You can further rename each view to your liking, e.g. the name of the remote machine on which you want focus in that view.

Here is the screenshot which shows the original and cloned views focused on different directories on the local file system, but you get the idea:

Get it from the update site here: 
As always feedback welcome. 

Thursday, July 19, 2012

Tip: Installing JDK RPM on linux and actaully using it

Oracle puts out JDK updates every now and then. The Linux update comes in the binary form (for install in any directory) and RPM form. I like RPM format because it plugs into OS's standard package installation mechanism. So I downloaded the RPM from here and installed it using:
> chmod u+x jdk-6u31-linux-x64-rpm.bin
> ./jdk-6u31-linux-x64-rpm.bin
and went to command line and typed:
> java -version 
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-48)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

Huh? I had presumed that installing the RPM will do the right thing. Uh uh.
Sure enough:
> ls -l /usr/bin/java lrwxrwxrwx 1 root root 22 Apr 13 11:35 /usr/bin/java -> /etc/alternatives/java
> ls -l /etc/alternatives/java lrwxrwxrwx 1 root root 30 Apr 13 14:13 /etc/alternatives/java -> /usr/lib/jvm/jre-1.4.2-gcj/bin/java
revealed that java command was linked to  jre-1.4.2-gcj java.
Apparently you have to run the following commands to make the newly installed  java and javac as available alternatives.
> update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_31/bin/java 3000
> update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_31/bin/javac 3000

Now to see what all Java alternatives are available you can run:
> update-alternatives --display java
java - status is manual.
 link currently points to /usr/lib/jvm/jre-1.4.2-gcj/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420
 slave keytool: /usr/lib/jvm/jre-1.4.2-gcj/bin/keytool
 slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
 slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj
 slave jre: /usr/lib/jvm/jre-1.4.2-gcj
/usr/java/jdk1.6.0_31/bin/java - priority 3000
 slave keytool: (null)
 slave rmiregistry: (null)
 slave jre_exports: (null)
 slave jre: (null)
Current `best' version is /usr/java/jdk1.6.0_31/bin/java.

And finally to select which java to use - use the command:
> update-alternatives --config java
There are 2 programs which provide 'java'.
  Selection    Command
 + 1           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
*  2           /usr/java/jdk1.6.0_31/bin/java
Enter to keep the current selection[+], or type selection number: 2 

Select the one from the list and type ENTER. Then do:
> update-alternatives --config javac

and viola! Now the system will use the Java you selected.
Hope this helps you!

Wednesday, July 04, 2012


Here are some
I made recently

Tuesday, June 26, 2012

Oops sculpture

Whimsical Oops Sculpture
made from from 
Birch wood slice

Saturday, June 23, 2012

Dancer Sculpture

Dancer Sculpture
 made from from 
Birch wood slice
I tried to use the slope of
the Birch wood slice
to give a sense of 
the Dancer

Wednesday, February 01, 2012

Eclipse: Cut Copy Paste Plus Plug-in

The Cut Copy Paste Plus Eclipse Plug-in enhances the cut, copy functionality by recording the history of the text that was cut or copied. It enhances the paste functionality by allowing you to paste the text from the history. To use the cut and copy history functionality you do not have have to do anything special. To access the special paste functionality you have to invoke Paste Plus command which is by default bound to Ctrl+Shift+V on windows and linux and Command+Shift+V on mac. You can change the keybindings to liking using the Preferences > General > Keys preference page. When you invoke this command the text that was last copied is pasted. If you re-invoke the same commands within a short period of time (default 1 second) - the text from the history is pasted.

The behavior of the plug-in can be configured in the Cut Copy Paste Plus preference page:

In the following example I copied the words three, four and five. Then I invoked the Paste Plus command. The first time it pasted five :


Then I invoked the same command quickly and it pasted four :

Ctrl+Shift+V (within 1000 millisecond)

  Then I invoked the same command quickly again and it pasted three :

Ctrl+Shift+V (within 1000 millisecond )

BTW this works in any StyledText and Text widgets.

You can install the plug-in from Eclipse Marketplace: