Thursday, December 22, 2005

Healing my head from the bumping on the wall ?

Yup...time for a pause...usual Christmas/New year's break...Will not be blogging but will be taking with me a couple of "christmas break collection" will include:

  • Hibernate: A Developer's Notebook
  • Spring: A Developer's Notebook

The Developer's Notebook series is actually proving to be pretty cool....granted it does not cover all you need to know and probably implies that you already know *something* but still...worth a read...They also deviate a bit from the "standard" technical book ranging around 150 pages instead of the 500-1000 typical tech book size...would consider them to be "quick reads"... As all tech books, reading them is not enough and some "hands in the dirt" is a requirement...mine are happilly getting dirty since these are technologies that I really want to play with and grok...

Blogging should resume in 2006...Happy hollidays and happy new year!

Wednesday, December 14, 2005

JBoss a Developer's Notebook and JBoss at Work

Two good JBoss books this time. Both seem to complement each other and should be a must read for someone wanting to learn about JBoss.

The first one is JBoss at Work: A Practical Guide. What I liked about this book can also be one of its shortcomings. The book follows a incremental development approach where concepts and technologies are introduced chapter by chapter, one step at a time. This might be a bit tedious for experience, seasoned developers who know already about the concepts being introduced. The way they are introduced however is, I believe, pretty interesting and does make up for an interesting read. I did like reading it a lot even though it was far from the first time I looked into these concepts, technologies and approaches. I would have liked to see a bit more on Entity Beans but do understand the reason why they were not approached in the book.

The second book is yet another of the Developer's Notebook series. Like clearly stated in the book, you will not end up being an expert or even getting close to knowing all there is on the subject but by the end of it you should have grasped a set of important items in a very pragmatic perspective. This is a book which is probably more recommended for developers who have already read something about JBoss otherwise some of the nice pearls in the book might get lost among the rest.

Both books are in my recommended books list!

Tuesday, November 29, 2005

Synch with team members off-site!

If you ever had to work with team members off-site you know that it can be extremely difficult to convey ideas or to explain/discuss ideas. There are however a ton of tools that can help with that effort...In typical "Bumping my Head on the Wall" style, here is one that is working really nice for me. Microsoft Office LiveMeeting does what I need and more...I can share my apps with whoever I am talking to, can give control of those apps to the other party, etc... From the distributed development team perspective this does seem to be a very very cool and useful tool. It does solve a bit the issue of the difficulty of showing things or discussing ideas with off-site team members...Kind of gives you back that "drop by your cube" feeling. Like I said, this is far from being the single tool doing it out there...I have also used Webex in the past with also pretty good results. But if you have off-site team members you have got to have something like this in your tool bag!

Friday, November 25, 2005

Professional Apache Tomcat 5

Here's a nice book I just finished reading a couple of weeks ago. Since I actually work with Tomcat I found the book to be pretty useful. I did learn about a series of items that I did not know as much as I should and would recommend without any hesitation this book to anyone wanting to know a bit more about Tomcat. It does shed some light into features of Tomcat that I had not explored before (e.g. built-in DB connection Pooling, tomcat clustering, JMX). If there is anything that I would correct about this book, it would definitely be the chapter on Tomcat+Apache integration. The book is all about mod_jk2 which is now a connection component dropped by Apache in favor of mod_jk and proxy_ajp. The examples for database connection pooling actually did not work for me, but getting the gist of it was enough to allow me to explore and figure out the right way to achieve it.

Veredict: rates pretty high on my list.

Thursday, November 17, 2005

Keep your Tomcat up to date!

It is definitely worth it...a 2x to 3x performance improvement between version 5.5.9 and, I would never expect that but sure enough that is the kind of performance enhancements I got when updating to this newer version....pretty impressive...Well, if you take into account that performance of 5.5.9 for my specific example was lower than a 4.0.4 version, I would say Tomcat got their act together with this new update...Bottom line: consider keeping up to date with the usual precautions!

And by the way....NetBeans 5.0 Beta 2 is out! Supposed to contain over 1,800 bug fixes from Beta 1...Since I am still pretty happy with NetBeans 5.0 I already got my NetBeans update.

Friday, November 11, 2005

WebTst 0.9.3 has been released!

I finally got around churning out another release of WebTst. For this version I had some pretty important feedback to work from and was able to address some major issues in the code. WebTst 0.9.3 is now more robust than ever.

This has been my "night" project for the last month or so...I am really happy to be able to report that it has now been released. Meanwhile I still continue to use it avidly at work and at home.

WebTst is a web testing infrastructure that aims at making and maintaining system integration tests as simple as possible. It provides web interfaces for test capturing making creating tests literally as easy as browsing the web (it implements an http/https proxy for those curious), web interfaces for maintaning and enhancing capturing tests, graphical analysis tools and test suites maintenance capabilities. With it you can do monitoring, smoke, regression tests.

It has been hosted at SourceForge for quite sometime and you can check it out at

Friday, October 28, 2005

VMWare Rocks!

And it rocks really hard! Since I evaluated VMWare 5.0 I became completely hooked on it. To the point where I really can not conceive anymore (professional) life without it. I have it on my XP box running Linux Ubuntu and Windows 2000. Have played as well with other OSes with equally impressive results.

Here's an example of handy use. I was working on WebTst (topic for another post) and was faced with the problem. I had to try my code with different versions of an installed set of packages. Big pain in an typical scenario. Install set one, develop, test, once happy either deinstall set or reinstall OS, install set two, develop, test, once happy go back to set one to make sure is not broken. Of course same drill could be done with two machines with different configurations or two OSes on same machine. Paaaainfull. Enter VWMare. I simply install a fresh version of the OS, capture a snapshot, install set one of packages, take a snapshot, test, develop, once happy, revert to clean install snapshot, install set two of packages, test, develop, once happy can freely jump between snapshots with package set one or more installs for me...

VMWare Snapshot Manager

Now *that* is pretty nice!

It's uses do not stop here, from different combos of browsers and plugins to different configurations altogether....

Now get this one: you can actually setup a server (e.g. Linux) running a database, with a server running in there (e.g. Tomcat running). Take a snapshot of this state. Mess whatever you want....even power off....once you revert to previous snapshot, you will be brought to the *exact* same state that you had when you took the snapshot....database state, servers running and all...again...pretty impressive...

The list goes on and on and on....

My (professional) life *did* change with it!

(My personal life not so much...VMWare still does not change diapers at 3:00 AM or does dishes...I'm hoping for version 6.0....)

Microsoft PDC 2005 Videos

Microsoft's PDC 2005 videos are available online at Lots of content available.

I have no prejudice against Microsoft technologies. I do believe the principle
of "each tool for it's job". Microsoft technologies do have its place and its use
and the latest .NET platform, languages and tools are way too cool! Just check
them out for a bit and let me know if you agree....

JavaOne Sessions, Java Posse Podcast

Yup. They can be found online at
Worth taking a look....Found about their existence while listening to a Java Posse podcast.

Java Posse is the successor to the now dead JavaCast podcasts. Pretty interesting podcasts filled with Java news, reviews, tech discussions and experience sharing. This is a fundamental item on my iPod.

Wednesday, October 26, 2005

Experiments in Load Balancing and High Availability (Part 2)

The Architecture

Let me start by saying that this was just one possible solution...As I investigated and played with this a ton of other possible solutions popped up. This is just one solution I liked putting in place and that worked fine for me.

The following picture illustrates what I was trying to achieve:

The basic infrastructure and functional elements:

  • A firewall to isolate the internal network from the outside. In my testing, achieved by my trusty router with built-in simple firewall.
  • One main load balancer server. Responsible for picking up requests from end-users and directing to server machines available in the defined cluster of servers. Equipped with two network cards.
  • One backup load balancer server. Responsible for monitoring the main load balancer server and picking up for him in case of main load balancer server failure. Equipped with two network cards.
  • A cluster of servers ready to receive requests from the load balancer and ready to do the serious work to fulfill the requests and get the responses.
  • An internal network connecting all machines. In my testing, my five machines (would like to see this number grow!).
  • A dedicated network between main and backup load balancing servers to allow for more reliable and fast monitoring of load balancing servers.

The interactions:

  • A request coming from a user should come via the firewall (router) to the main load balancer
  • The main load balancer should then send over the request based on a configured heuristic to the appropriate server in the cluster.
  • The selected server should fulfill the request and send the request to the end-user.
  • The main load balancers constantly monitors the cluster to remove failed servers or add new added servers.
  • The backup load balancer server constantly monitors the main load balancer server to ensure that it is working, taking over the load balancing function if main load balancer server is detected to be down.

Redundancy of services is therefore present both at the server level and at the load balancing solution level. We should in this way achieve load balancing and high availability.

More to follow in the next parts on this subject:

  • Solutions for Load Balancing Layer, where some possible solutions are discussed, one in particular is presented in detail.
  • Worker Server Clustering, where a solution to a particular problem is presented.
  • Remaining issues

Tuesday, October 18, 2005

Experiments in Load Balancing and High Availability (Part 1)

Part 1: The issue

The questions have always been in the back of my mind "What if my site is just too overloaded ? What if it crashes ?"....not that it matters that much to my personal sites...It's not like I have millions of users.....or that the world economy would fall over if my personal sites were down or just too slow...But still....I always felt the urge to play with solutions to overcome any performance and availability issues with my sites (but I will not stop playing Halo to make my site more performing..not that!!!). So I started my investigation on the subject....What could I put in place to provide me load balancing and high availability on a site ? I bumped, not surprisingly, into a ton of solutions...From dedicated hardware to complex software solutions. But....this being kind of "I want to explore it" experience and since I am not really not into throwing a ton of money into the experience, my aim was directed into trying to make the best of the cheapest solution possible. And there began my quest...

I was very close to getting a cheap BIG-IP. But most of what I could find on eBay was typically locked out systems or incomplete systems. Other solutions outside eBay were just outrageously expensive. For my pocket anyway. with the hardware box!

I then bumped into a pretty interesting project called Ultra Monkey. I started having hope finally that I might be onto something. I jumped again onto eBay and got me an extremely expensive set of hardware (yeah sure!)...Two Pentium III 500Mhz for the much more agreeable price of $80 for both...Armed with those two and with my two other more decent computers, a Pentium 4 2.6 Ghz and a Pentium 4 2.8 Ghz, I started then to elaborate on an realistic, usable architecture to make load balancing and high availability possible on a short budget.

Plans taking shape...Ultra Monkey doing the management of my application, I started to think about issues like back-end application distribution and synchronization. With my first goal being to get to a solution for a Java Web application I looked a bit more into books on Tomcat...and eventually found the way to implement Tomcat clustering behind any load balancing and high availability solution. That led me to the final piece of this puzzle. I now have a solution that convinces me that I can put load balancing and high availability in place....Working on my personal site users probably could not care less, but I now can finally put it to rest....

More to follow in the next parts on this subject:

  • Overall architecture
  • Solutions for Load Balancing Layer
  • Tomcat Clustering
  • Remaining issues

Friday, October 14, 2005

NetBeans 5.0 Beta

I have been looking at Eclipse for quite sometime but was never quite convinced by it (let the flames start). Seemed awkward to use and most of the functionality was not where I expected it to be. In addition to that, handling of pre-existing projects with rich, complex ant files seemed hard to say the least....Enter NetBeans 5.0...Using it with pre-existing projects has been a breeze...For starters there is right out-of-the-box a "create a project from ant file" which creates a project that not only gets bootstrapped from the ant file but keeps control in the ant file. Builds can still happen via the existing ant file with nice integration between the IDE and the ant file. All functionality is right where I would expect it to be making my life a lot easier and reducing immensely the effort of getting into a new tool.

As if that was not enough (for me at least), there are a ton of new features in NetBeans 5.0 which make it worthy to invest some time to evaluate. Matisse -- a WYSIWYG dialog editor, code completion, tighter CVS integration, tighter JUnit integration, support for Ant file debugging (how cool is that?!?!?), JBoss support (among others, I happen to be more interested in JBoss), deployment descriptor editors, easier plug-in development, AJAX solutions....and the list goes on.

If you do not want much time looking at the IDE itself, you can at least watch a small presentation on it:

And new features are supposed to be coming in later after the final launch. As far as I'm concerned, this IDE works pretty nicely for me. Move over Eclipse, here's NetBeans 5.0.

Bumping my head on the wall

Yup. For anyone working in software development, sometimes it sure feels like bumping my head on the wall. Traps and pitfalls, tips and tricks, new tools, new processes, cool books, cool technologies, interesting and useful links. I'll keep adding them here.

If you have any comments or feedback, send them along!