Posts

Showing posts from 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 n
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.
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.
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. http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming http://java.sun.com/performance/jvmstat/
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
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.
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.
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.
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
Memory leak detection tools "gflags -i foobar.exe +ust" to enable stack tracing. "set _NT_SYMBOL_PATH= SRV*c:\symbols* http://msdl.microsoft.com/download/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 ftp://ftp.microsoft.com/ PSS/Tools/Developer%20Support%20Tools/LeakDiag/leakdiag125.msi - this can also be used to take debug dumps of any process.
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.
Larry Ellison on open source The reasons for not buying JBoss/opensource is interesting read. FT interview with Larry Ellison
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&#
Building and running Jboss from CVS set CVSROOT=:pserver:anonymous@anoncvs.forge.jboss.com:/cvsroot/jboss cvs co jboss-head cd jboss-head\build build.bat cd jboss-head\build\output\jboss-5.0.0alpha\bin run.bat
Oracle donates ADF Faces to Apache The first drop of ADF Faces including over 100 components and their source code is available at http://people.apache.org/~bdudney/apache-drop.zip The PPR support aka AJAX, process scope variables and the skinning support is the highlight of ADF Faces.