Wednesday, December 06, 2006

Finding the simpler problems to solve and focusing on the right things.

This is one of those common sense things where most big corporations and even many smart people go wrong. It is not good enough if you found a tough problem and then solved it. Many smart people often fall in this trap because they love solving tough problems.
It is more important to find the simpler problem and then solve it. Quite often, simpler problems would have simpler solutions and in the end the everyone including the product, the customer and the company wins.
Another related thinking is to focus on what you are offering your customer, the focus should be on the core strength your company is bringing to the customer. All other peripheral stuff shouldn't be where the bulk of the energy gets spent.

These are seemingly simple things, but people still keep getting them wrong. eg. a banking application developing a cross platform UI framework because the generic solutions out there are 'buggy' or not 'good'. Google went about building a 'super secret' server farm because they wanted to be outrun competitors by building muscle on the server side. Now, why don't you think about that a bit more while I get out of my philosophy mode?

Sunday, November 19, 2006

Web 2.0 companies

Signed for accounts at some of the promising Web 2.0 startups, Omnidrive looked useful and had rave reviews. Unfortunately, it seems to have starting troubles. This weekend I tried to drag and drop my photos over and it failed without copying even one file after some kind of wierd xml error message. Moreover, it always keep complaining about not being able to contact the server. Even if it is beta quality, these are basic things that shouldn't have been overlooked before a public release. Sharpcast seems to have gotten the basics right. Rich client backed by effective synchronization is their goal. And hey, the upload of over 300 photos using their XP client seems to be working fine so far. But, the web UI was well hidden, probably because it didn't work properly yet? TimeBridge was useless at least to me. iScrybe might be more useful as an organizer(Flash + offline is interesting), but seems vaguely similar to 37 signals software.

Monday, September 18, 2006

Ruby on Rails

The good - quick and easy way to develop a basic db application, esp with InstantRails.
The bad - No i10n, no EJB, UI code looks a bit like ASP 1.0 after a while.

Grails - has EJB support using Groovy, screenshots looked good. But, the .x download didn't match tutorial onsite and hence probably won't be ready for a while.

Friday, September 15, 2006

These links matter if you are serious about Java/J2EE.
Jvmstat is pretty cool, but similar to some of the excellent tools which was already available in .NET world.

Tuesday, September 12, 2006

Predicting the future...

Writing some personal thoughts on what happens after 5 years, so that I can check back later!

- .NET has more penetration, still everyone hasn't switched to Vista/.NET 3.0. But WPF/E is getting popular, even though Flash is still strong due to better cross platform support.
- Java/J2EE is for server side development, as a way to reduce costs in distributed server farms running Linux. The innovation curve is down for the language and it is in a stage similar to what C++ is today.
- Linux is no longer seen as a desktop OS, open source continues to thrive but the quality & innovation of open source contributions is debated more as the good stuff get polluted by mediocre contributions.
- Virtualization & multicore CPUs are ubiquitous and is used to provision such farms in real time with zero downtime. Xen & Linux forms the basis of many such servers in the cloud. Some users have started to subscribe to personal virtual machines. Corporations widely use Windows virtualization.
- Google continues to be the leader in Search, but has failed(relegated to small pockets) in the application wars with MS on the enterprise land. AJAX has good device support, but is getting replaced by RIA/Smart Clients running in the browser. Advertisements still makes money, but the apps would move to desktop/RIA beyond AJAX.
- Running as a non administrator is the norm thanks to Vista, thus reducing a class of attacks. But, still malware and spam and other evils continue to exist.

Monday, July 10, 2006

Troubleshooting memory issues.

If private bytes continue to grow without leveling off, then you probably have a private bytes leak.

If private bytes levels off while while virtual bytes continue to grow then you probably have a virtual memory leak or fragmentation.

If the committed bytes counter follows the virtual bytes counter, then you probably have a virtual bytes leak.

If the virtual bytes grow at a faster rate than committed bytes, then you will need to verify if this is virtual memory fragmentation.

NOTE: Virtual memory leaks where the caller is committing memory will also cause private bytes to grow. Hence privates bytes could increase due to both NT heap leaks or virtual memory leaks.

Thursday, June 22, 2006

Creating a symbol server

1. Share out a folder eg. \\mymachine\symbols
2. symstore add /r /f [path-to-symbols] /s \\mymachine\symbols /t "[app-name]" /v "[version]"

Replace [path-to-symbols], [app-name] & [version] as appropriate.

Tuesday, June 20, 2006

Linux or Windows

Just reminding myself again that I should not install Linux in my home machines.
HP PSC 1510 - linux drivers are present but I was forced to do a source compile.
Macromedia or Adobe design tools doesn't work.
Cannot download pictures from my Canon powershot. Again, these may be present somewhere in some form.
I am just not a Linux fanatic to work harder to use things I paid for.
But, Linux is good as a server or on VMWare for my experiments. Can run all kinds of servers for free.
More RPC debugging tips without special configuration.

!rpcexts.thread & !rpcexts.obj - debug stuck rpc calls.
!rpcexts.stubmsg & !rpcexts.rpcmsg - stack based debugging.

I believe this is the only way to debug in Win2k since built-in rpc debug support is present only in XP or above. No time to blog all the details of using them, maybe later when I have more time.

Wednesday, May 24, 2006

RPC Debugging

To use the dbgidl interface introduced in XP, the sytem hosting RPC services must be configured to maintain RPC troubleshooting state information.
The 'RPC Troubleshooting State Information' GPO must be enabled, typically in the LGPO using gpedit.msc.
"Computer Configuration->Administrative Templates->System->Remote Procedure Call."
Then you can use rpcexts!* in windbg or dbgrpc.exe

Tuesday, May 23, 2006

Memory leak detection tools

"gflags -i foobar.exe +ust" to enable stack tracing.
"set _NT_SYMBOL_PATH= SRV*c:\symbols*" to set the symbol path.
Download umdh tools from Microsoft.
"umdh -p:124 -ffoobar.log" to take multiple snapshots.
""dhcmp foobar1.log foobar2.log" to compare the snapshots ie. leaks.

And, then there is PSS/Tools/Developer%20Support%20Tools/LeakDiag/leakdiag125.msi - this can also be used to take debug dumps of any process.

Monday, May 08, 2006

Kernel debugger essentials

.cache forcedecodeuser or .thread /p to translate PTEs to physical addresses.
.process # | .thread to switch context to a specific process
!process 0 0 to get list of processes.
and of course, !analyze -v to get a quick summary of a crash dump.

Tuesday, April 18, 2006

Larry Ellison on open source

The reasons for not buying JBoss/opensource is interesting read.
FT interview with Larry Ellison

Saturday, March 04, 2006

Java/J2EE - so many choices, but do you want all of them?

Geronimo - no EJB3 support. With BEA's donation of Kodo it might change soon.
JBoss - Usable J2EE server, just be careful not to tread on non-standard stuff.
Glassfish - Sun never had good servers which you can run with limited resources. The beta builds looked ok.
BEA - They 'had' an advantage a few years ago. What are they upto nowadays - Beehive?
Oracle - They seems to be getting their stuff together with Project Fusion, but still noone wants to use their J2EE server. ADF Faces seemed good.
Sun enterprise system - Free, but is anyone using it? Never trust any software which requires 1GB to work.

Hibernate - Works, though there are complexities associated with getting it to work properly in a disconnected scenario. Has good tool support. Opt for EJB3 since it is based on standards.
SCA/SDO - Good stuff in theory, I doubt if Tuscany or anyone can come up with an efficient implementation though. Dynamic model doesn't coexist well with JSF components etc.
MDA - Andro MDA was barely there, got closer.
Seam - Using EJB3 in UI is easy, but proprietary JBoss stuff lingers around too much for comfort. I'd just pick up conversation support from somewhere else.
ADF Faces - Good UI components for free. More AJAX might have been a plus.
Laszlo - Not bad, but lacks the sophistication of Flex wrt look and feel.
Eclipse - good productive IDE, JDeveloper seems good if you are inclined to JSF.
Axis - Seems like they are lost now, Axis2 was promoting a custom model. It was good at one time. XFire seems promising now.
Spring - ok if you want the basic stuff. But, if you find yourself starting to build a J2EE server using spring and Tomcat, maybe it is time for you to switch to a real J2EE server.

Summary: Be careful of the choices you make. Historically, any technology tied to POJO has succeeded in the Java world. So, that might be a safe bet into the future as well.

Monday, February 13, 2006

Building and running Jboss from CVS

cvs co jboss-head
cd jboss-head\build
cd jboss-head\build\output\jboss-5.0.0alpha\bin

Thursday, January 26, 2006

Oracle donates ADF Faces to Apache

The first drop of ADF Faces including over 100 components and their source code is available at

The PPR support aka AJAX, process scope variables and the skinning support is the highlight of ADF Faces.