Sunday, January 25, 2009

A Tabbed Console for Windows

Ok, I forgot to mention one thing - there's a cool little open source project called Console ( that you just have to start using. Get the 2.0 development version - its pretty far along that you can use it without any major glitches. This little thing lets you create a tabbed Windows command shell or for that matter even a tabbed cygwin or powershell. Its what are you waiting for. Get it now, along with notepad++( if you didn't know about that either.....:)

For example you could load multiple cygwin windows as shown here by pointing to the cygwin.bat file -

Once you have cygwin setup, you could create tabs that spawn off an ssh shell to a server by creating a cygwin modified batch file for connection to that server -
(Example contents of this script)
@echo off
chdir C:\cygwin\bin
bash --login -i -c "export DISPLAY=localhost:0.0; ssh -X myuserid@remotesvrname"

- Amit

Thursday, January 15, 2009

Recommendations for hard economic times

Its been a while since I've blogged, partly because I've been busy on a JEE project with a pretty extensive scope. Lots of new technologies in use and its interesting to see how the Java enterprise landscape is shaping up with JEE 5 containers now getting adopted for mission critical systems in the enterprise. Here are a couple of observations worth mentioning:

While most people know more about the EJB3 features, very little has been mentioned about optional packages and their use. I've blogged about this before, and as I've seen on my project, optional packages is a worthwhile addition in JEE 5. Only problem here is the conversion of regular libraries to optional packages and I wrote code to automate that which I will post here soon.

Spring 2.5 with annotation support opens up all kinds of possibilities. I didn't like Spring before, but if you extend their annotation framework, sky's the limit to what you can do - like you could create your own code to inject service handles where the service protocol could be proprietary and not just RMI/IIOP as is the case with EJBs. Example would be some legacy services which you want to code to today, but maybe want to convert to EJBs down the line. In such a scenario, one could easily write a dynamic proxy and use Spring to inject it into say a Struts2 action or an EJB. Essentially here, you are converting a legacy service to have an interface that very well could look like an EJB interface and then providing ways to marshal data from the legacy service into Java objects in the dynamic proxy class.

Struts2 is maturing well and its overall quick adoption is making it the framework of choice again for web development ( besides JBoss Seam maybe ).

XStream is a really slick STAX xml parser that makes marshaling XML real easy and real fast to POJO objects. With a couple of tweaks to this library (which I'll post later), you can literally forget about the xml parsing piece in your app.

Finally, if your system requires a distributed caching mechanism, Terracotta may be a worthwhile addition to your enterprise suite. They have lots of good information on their site, and plenty of flexibility in implementation. However, they don't have a good implementation for Web Session offloading even though they state otherwise. Essentially, they support offloading web sessions only if your application doesn't have resources/pages secured via roles (which I just can't see any sense in - aren't all well architected apps in the enterprise secured by roles that limit access to information or pages based on the end user's role). Anyway, its still a great product for distributed caching even without the the web session offloading.

So I end my technology update here for now. Even though the times are hard, technologies abound and it maybe a worthwhile exercise to do your research on these new technologies. If you want to be adventurous, start learning a new language - the one I'm getting my feet wet in is Objective C. It would be useful skill incase your company decides to write an app for the iPhone. If you don't have a Mac (you can invest in it as the times start getting better), then you can play around with Obj C using GNUStep. I'm surprised Obj C doesn't get enough of a mention, because its a dynamic language as well.

Start preparing for better days ahead...

- Amit