A Django site.
May 16, 2008
» Writing Unit Tests as Programmer's Warm-Up


"Flow" is a the most productive state of programmer's mind. You can induce the flow by starting your day with writing unit tests.

All programmers know this state of "flow", when your productivity is at its highest. The design decisions are coming naturally, the written code is perfect and a week's work can be done in a couple of hours. And it feels really good. I think it's just the sense of creative fulfillment. Some call it creative Zen.

The problem is, the flow does not come on demand. It usually requires some kind of warming-up. What I have noticed is that it is much easier to get into the flow after you are doing something that you like, something rewarding but not laborious. Yes, meetings are ultimate killers of the flow. Want to be productive, don't go to meetings. After trying many activities, I found one that helps to get into the flow. It works great for me and may work for you, especially if you are into eXtreme Programming a.k.a XP. This activity is writing unit tests.

It works the following way: Start your day with finding classes or methods that not covered with tests. There are always that are not covered. Write tests for some of them. As you are adding tests, you may be noticing small deficiencies in the code. Refactor them. You may even find bugs while writing tests.

Even if you didn't not feel like programming at all in the beginning, in 30 minutes you will notice that interest appears. The test coverage improves, refactoring is already helping to improve design. And you have just found a couple of subtle bugs (you will for sure) thanks to the new tests. All this feels really good and you are already coding. You are in the flow.

This "programmer's warm-up" helps to get into flow even when it seems that creativity has gone forever. Try it and quite possible it works for you. And don't forget the nice side effect in form of increased test coverage.

Helpful Resources on Unit Test and Test Coverage

Some of these tools are not free, but, believe me, they worth every cent.

May 15, 2008
» Cacheonix at JavaOne Days 2 and 3


Talking to the Crowd
Those two days were filled with talking to the show attendees who were interested in distributed caching and data grids. Actually it was a great pleasure because practically all of the people we talked to had a decent understanding of the problem of the large scale data management and mains sources of the scalability bottleneck such as databases and slow datasources, and how Cacheonix could help them.

It had its funny moments. I was discussing some pretty complex issue with someone when two streams of the guys wanted to talk came to us from both sides. Serguei and me made a simultaneous move towards them trying to say "hang around for a sec". And it looked like we jumped from the guy we were just talking to. There was a very awkward second when that person found itself standing in an empty space alone. I quickly came back and had to apologize. Morale: Don't try to talk to more than one person.

Hi Competitors
Most of the competitors did show up to say "Hi". Cameron Purdy of Tangosol Coherence fame stopped by and we had a nice talk, primarily about the life after Tangosol.

Artima and Javalobby
I have finally had a chance to talk to the guys and gals from Artima and Javalobby in person.


Tear Down
Tearing down and packing up took some 20 minutes. Simplicity rules.

Summary
It was a great show and we are looking forward to the next year.

May 9, 2008
» Cacheonix at JavaOne Day 1: My cache is bigger than yours


The floor
I should say that Sun did a great job organizing the floor. Or, may be it was just the strategic location we picked up. At any rate we liked the format.

Traffic
For us the booth traffic literally took off. There were times when I was talking to four people simultaneously.



On goodies
We brought cool electronic clocks (challenging to set up, though :) After trying to just lay the goodies out we quickly found out that ~50 of those were going in about four minutes. So, it's a great way to fill Java crowd's swag bags, but it is totally useless from the company's point of view. Don't do it. After seeing this not work we were distributing the clocks mostly to the guys and gals we talked to. It seemed to work better.

Running to Caltrain
The Pavilion was open until 8:00PM. After having a few drinks we ended up running to the SF Caltrain station to catch the 8:33 train. It's a 10 minutes trail with a few traffic lights. A good exercise it was, it didn't feel that good given the wine. I should resume going to the gym, clearly.

May 8, 2008
» Cacheonix at JavaOne Day 0: The fastest booth set up ever



I guess it's been my fastest booth set up ever. Setting up the booth for Cacheonix took about 15 minutes from entering the Pavilion to saying goodbye to the security at the entrance and driving back home.

We decided to take simplicity to the extreme and go only with a table, a projector and a screen:



This turned out to be a great choice. We set up a roller in PowerPoint to show eight variants of the display panel in a 10 min cycle. A quick run demonstrated that two images were totally off in the actual lighting environment of the floor. The rest of images were perfect. The set up gave us a crisp, bright and effective display. Bye-bye expensive roll-ups. See how our both stands out compared to the rest:



One thing I would do differently. The environment definitely allowed for a better resolution image. Instead of buying a $499 800x600 Dell 1201MP projector I would get a bit more expensive $599 1024x768 Dell 1409X.

May 2, 2008
» Coloring Local Java Variables in IntelliJ

By default local variables in IntelliJ are not colored in any way. As a result, the local variables are blended with the rest of the code and you have to make a little but present mental effort to identify them when reading the code.

The good news is that IntelliJ allows setting the color of local variables. Here is the snipped of the configuration screen:



The challenge is to come up with the coloring that would look natural and go with the rest of the coloring scheme. After trying to come up with a color that would fit into the already busy scheme, I have finalized on the "black bold" for local variables. It is not very intrusive and you still can spot the local variables easily:



February 26, 2008
» Fixing the dreaded "libXp.so.6: cannot open shared object file: No such file or directory"


If you, like us, deal with the older versions of JDK on the newer versions of Linux from time to time, you may get this message when running JDK:



"libXp.so.6: cannot open shared object file: No such file or directory"



The way to fix it is to run two following commands:


sudo yum install libXp

sudo yum install xorg-x11-deprecated-libs



Hope this helps.



Regards,



Slava Imeshev

February 14, 2008
» Presenting on Continuous Integration at The Silicon Valley Chapter of the ACCU



Today I have given a presentation on the topic of best practices for Continuous Integration and ways to avoid broken builds at the Silicon Valley Chapter of the ACCU.

The whole event went quite well. Walter Vannini, the lead of the chapter, turned out to be a very nice guy. The venue has been Symantec's office in Mountain View, with a large projector screen. Hooking up the laptop and a mike took a couple of minutes.

The crowd has been very technical so have been the questions and the discussion. Maybe it's a system, but the C/C++ bunch is usually more laid back and to the point.

There has also been a dude from the laptop for every child, we have had an interesting discussion on the humanitarian effect of free access to information. He has said they are about to start shipping.

All in all, it has been a nice gathering and it has been my pleasure presenting there.

January 15, 2008
» On Improving TheServerside.com's Response System



What TheServerside.com is missing is notifying about responses to a thread that you have posted to. If this feature were there, we could respond to new posts instantaneously, the discussions would be more dynamic and the participation would be more active. Right now the only way to be reminded is to manually look up through your threads and try to figure out what was up. Which is just under the normal laziness threshold.

We need automatic e-mail notifications!

November 14, 2007
» On Red Hat and Sun Collaborating On Open Source Java

According to the press release, Red Hat announced today that it is joining the OpenJDK community.

This is an interesting topic, though, the background, as I see it, may be marketing rather than technological.

Nowadays press releases are a purely marketing engine. Sun is a big shop, RedHat is not an exactly small one too, at least in terms of mind share. This means that the release has gone through a thorough polishing and whatever the message is, it is sent to analysts and [possibly] shareholders.

This is a total speculation, but what about RedHat trying to ride the wave of disappointment caused by lack of Java 6 on Mac OS X? Is it possible that RedHat is displaying full collaboration with Sun, as compared to "non-collaborative" Apple which may be seen by RedHat as a rival on non-Windows OS market?

For Sun it would be just "good publicity never hurts".

I am thinking about these options on because, let us be serious, there haven't been any real problems running Java on RedHat or any other Linux distributions for years. It takes me 2 minutes or less to have a Java app running on RedHat, even while comparing to "native" Perl, Ruby or PHP apps requiring downloading hundreds of megabytes dependencies.

Regards,

Slava Imeshev

September 5, 2007
» Beta for Parabuild 3.2 Is Open, Now With Automatic Merging (Integration) for Perforce

It is official: Parabuild 3.2 Beta is out! We've just announced the beginning of a beta program for Parabuild 3.2, the Continuous Integration and Software Release Management System. Viewtier offers a free license for each new bug found in beta builds!

To join the beta program jump to http://www.viewtier.com/products/parabuild/eap.htm

What's New In Parabuild 3.2

Parabuild 3.2 adds Automerge, an automatic inter-branch merging (integration) for Perforce and over 50 enhancements to its build and release management, build telemetry, user interface, version control integration and notification subsystems.

Other cool things include integration with Checkstyle, PHPUnit, CPPUnit, PMD statistics and build time-to-fix.

Check screen shots and detailed descriptions of the new features.

August 6, 2007
» Continuous Integration is not about the CI server, or, is it?



I have stumbled upon Paul Duval's weblog entry "Continuous Integration is NOT about the CI server". Paul rightfully dismisses CruiseControl as "The" CI server and then proceeds to questioning having becoming a norm interchangeable use of the practice and the tools of Continuous Integration.

I agree with Paul in that it is often forgotten that Continuous Integration is a practice that spells small, often, but meaningful check-ins. Tools themselves do not make Continuous Integration and without the practice are mostly useless.

Yet, Continuous Integration is a lucky case of a practice that is well supported by tools, Continuous Integration systems, which makes it even more powerful. A Continuous Integration system such as Parabuild provides immediate feedback on quality of changes and allows a team practicing Continuous Integration quickly fixing a build breakage. Teams using such systems are confident in the changes they make, so they can move forward fast.

It is not possible without a Continuous Integration system in place. Dismissing such tools, Continuous Integration may cause more problems than bring benefits. Value of frequent check-ins without an automated validation is low at best.

References:

Paul Duval: Continuous Integration is NOT about the CI server

June 4, 2007
» Dashboard for Continuous Integration and Build Management

While the number of managed build configurations is low, it is possible to get away with a simple table view of your build statuses like this one:

As the number of builds grows (one of our customers reported over 150 managed builds), monitoring becomes pain in the butt. Fortunately, Parabuild provides a neat dashboard for your build statuses. A single page allow for watching up to several hundreds of builds simultaneously, depending on the resolution of your monitor. It also provides quick links to items that may require immediate attention, such as the latest broken build or the build that has been broken longest:

More Parabuild screen shots are availablehere There is also live Parabuild instance running Continuous Integration for open source projects.

» Dashboard for Continuous Integration and Build Management

While the number of managed build configurations is low, it is possible to get away with a simple table view of your build statuses like this one:

As the number of builds grows (one of our customers reported over 150 managed builds), monitoring becomes pain in the butt. Fortunately, Parabuild provides a neat dashboard for your build statuses. A single page allow for watching up to several hundreds of builds simultaneously, depending on the resolution of your monitor. It also provides quick links to items that may require immediate attention, such as the latest broken build or the build that has been broken longest:

More Parabuild screen shots are availablehere There is also live Parabuild instance running Continuous Integration for open source projects.

March 26, 2007
» The ultimate tool set for Java Web application development



I am in process of launching a new Java-based project, so there is a great opportunity to do it right.

As a background, this project will have a Web UI front with about fifty screens. The team currently leans towards using a component-based Web UI framework. The key values of a tool set that we'd like to pick up are short learning period, ease of development and maintenance and [ideally] integration with popular AJAX toolkits. The development methodology is modified XP.

With all this said, I am wondering what Java community considers a good tool set for Web application development. What do you think?

Regards,

Slava Imeshev

» The ultimate tool set for Java Web application development



I am in process of launching a new Java-based project, so there is a great opportunity to do it right.

As a background, this project will have a Web UI front with about fifty screens. The team currently leans towards using a component-based Web UI framework. The key values of a tool set that we'd like to pick up are short learning period, ease of development and maintenance and [ideally] integration with popular AJAX toolkits. The development methodology is modified XP.

With all this said, I am wondering what Java community considers a good tool set for Web application development. What do you think?

Regards,

Slava Imeshev

March 20, 2007
» Optimizing Perforce Infrastructure for Software Build Management




Perforce has accepted my paper "Optimizing Perforce Infrastructure for Software Build Management" for Perforce Users Conference 2007 May 9-11.



Perforce Users Conference is known to be very technical and practice-oriented. If you use Perforce on a daily basis, it is a great place to learn advanced techniques straight from fellow Perforce users and Perforce engineers.



The cool thing is that this year Perforce User Conference will be held at the Hard Rock Hotel and Casino in Las Vegas!



See you there!


27 June 2007



Update: May presentation is available online now.


Regards,



Slava Imeshev



P.S. Looking for a software build management and Continuous Integration server that works with Perforce? Check Parabuild.





» Optimizing Perforce Infrastructure for Software Build Management




Perforce has accepted my paper "Optimizing Perforce Infrastructure for Software Build Management" for Perforce Users Conference 2007 May 9-11.



Perforce Users Conference is known to be very technical and practice-oriented. If you use Perforce on a daily basis, it is a great place to learn advanced techniques straight from fellow Perforce users and Perforce engineers.



The cool thing is that this year Perforce User Conference will be held at the Hard Rock Hotel and Casino in Las Vegas!



See you there!


27 June 2007



Update: May presentation is available online now.


Regards,



Slava Imeshev



P.S. Looking for a software build management and Continuous Integration server that works with Perforce? Check Parabuild.





February 22, 2007
» Continuous Integration And Build Telemetry For Open Source Projects

Our Parabuild employs many useful open source projects. So I though: "How can we give back?" It has downed on me that that best way would be to set up Continuous Integration and nightly builds for the projects that we use and like. How cool is that - Parabuild builds projects that it is made of!

So, here it comes: a Parabuild instance running integration and nightly builds for over twenty open source projects: JUnit, DBUnit, Hibernate, Ehcahe and many others.

It has been over two months since we added most of the projects. I should say that maintainers do a great job by building and testing changes before submitting them to their version control systems. Builds are green most of the times.

To spice up things, look at these statistics charts and build telemetry for some of them. You can click on the image and it will take you to details page:

Change Rate For Ehcache

Change Rate For Ehcache

 

Build Time For SwingX

See this bump in the beginning - that's the time when we moved Parabuild to a new server. You can see the difference in build speed.

Build Time For SwingX

 

Recent Test Statistics For TestNG

Recent Test Statistics For TestNG

 

Build Status Snippets

By the way, it is also possible to embed real-time statuses for builds under Parabuild control into your project pages. These are some examples:

 

 

Regards,

Slava Imeshev

» Continuous Integration And Build Telemetry For Open Source Projects

Our Parabuild employs many useful open source projects. So I though: "How can we give back?" It has downed on me that that best way would be to set up Continuous Integration and nightly builds for the projects that we use and like. How cool is that - Parabuild builds projects that it is made of!

So, here it comes: a Parabuild instance running integration and nightly builds for over twenty open source projects: JUnit, DBUnit, Hibernate, Ehcahe and many others.

It has been over two months since we added most of the projects. I should say that maintainers do a great job by building and testing changes before submitting them to their version control systems. Builds are green most of the times.

To spice up things, look at these statistics charts and build telemetry for some of them. You can click on the image and it will take you to details page:

Change Rate For Ehcache

Change Rate For Ehcache

 

Build Time For SwingX

See this bump in the beginning - that's the time when we moved Parabuild to a new server. You can see the difference in build speed.

Build Time For SwingX

 

Recent Test Statistics For TestNG

Recent Test Statistics For TestNG

 

Build Status Snippets

By the way, it is also possible to embed real-time statuses for builds under Parabuild control into your project pages. These are some examples:

 

 

Regards,

Slava Imeshev

February 20, 2007
» How long does it take you to launch a release build?

Us is takes thirty seconds, literally!

Check this out: a real-time recording of a launch of a release build (3.1.5) for our Continuous Integration and software build management server Parabuild. Once launched, the build cleanly builds the code base, creates distribution packages and deploys the release to a high-speed download site.

Another cool thing is that Parabuild builds Parabuild :)

P.S. Yes, this is our actual Parabuild instance.