Zdot Podcast: Why Subversion Rocks

Listen now with the Flash player.

This week is version control. Today’s show is simple: Subversion Rocks. Check out why.

Download Why Subversion Rocks.

Show Notes

Check out Subversion for the command-line and the server installation. TortoiseSVN is an excellent Windows client that plugs into Windows Explorer. We use the Apache SSPI authentication module and apply it to our Subversion repositories. We’ve got the ViewCVS version pulled right from the CVS source to get Subversion support. It’s stable, and well worth the quick install.

Zdot Podcast: Version Control Attributes

Listen now with the Flash player.

Download Version Control Attributes.

This week is focused on version control.

Show Notes

Today’s show covered a few basic attributes important to using version control successfully with Java. The principles covered in Software Configuration Management Patterns are excellent. The two books from the Pragmatic Programmer Bookshelf, on Subversion and CVS, are excellent references to the tools that tightly weave excellent principles into the book. There’s also great free book for Subversion – it’s mainly a tool reference, but excellent.

Zdot Podcast: Jupiter Review Plugin for Eclipse

Listen now with the Flash player.

Download Jupiter Review Plugin for Eclipse.

This week we’re looking at peer reviews.

Show Notes

This show’s topic was the Jupiter Review Plugin for Eclipse [Open Source]. In my view this is by far the best peer review tool available. The major resource used was the Jupiter user manual.

Zdot Podcast: Team Reviews, Intro to the Jupiter Eclipse Plugin

Listen with the Flash player.

Download Team Reviews and Intro to Jupiter Plugin.

This week we’re looking at peer reviews.

Show Notes

This show discusses how we use the Team Review technique talked about in the last show, how I’ve seen it done, and touches on how the Jupiter plugin supports those efforts.

There a few resources mentioned in this podcast. First is the article When Two Eyes Aren’t Enough, by Karl Wiegers that we touched on last time. The next is the CSDL code review standards document that we used as a model to create our own internal code review standards. The last resource is the list of code review tools:

Here’s the outline I worked from during the show.

  • Attributes of Team Reviews
    • Planned, structured; but less formal
    • Review material ahead of time
    • Meeting
    • Basic follow-up, sometimes omitted
    • Collect data
    • Often author lead discussion
  • Ways to make it work
    • Keep time investment small — Basic group interaction stuff
      • Email
      • Groupwise Appointment
      • Links at the bottom
      • What you’ve got questions about
    • Keep it simple
      • Use a simple tool, instead of paper
      • Keep the focus right (defects vs. knowledge sharing vs. design exploration)
    • Review standard procedures
      • Decide on them once
      • Link to them from the announcement e-mail
  • Jupiter Plugin Overview
    • Eclipse plugin
    • Individual, Team, and Rework phases
    • Captures data on resolutions and such
    • Keeps line numbers and files, makes it easy to run through list during review
    • Data kept in source control, so it’s convenient

Zdot Podcast: Peer Review Techniques

Download A Survey of Peer Review Techniques.

This week we’re looking at peer reviews.

Show Notes

Today’s podcast brushes over several techniques described by Karl Wiegers and Steve McConnell, including:

  • inspections
  • team reviews
  • walkthroughs
  • pair programming
  • code reading
  • dog and pony shows or client demos
  • peer deskchecks or pass-arounds
  • ad hoc reviews

There were two major sources for this podcast. First is the article When Two Eyes Aren’t Enough, by Karl Wiegers and available from his website, processimpact.com. The second was Chapter 21 of Steve McConnell’s second edition of Code Complete.

Zdot Podcast: Spring Transactions and Interception

Download Spring Transactions and Interception.

Spring’s support for declarative transactions and it’s interception work are the subject of this podcast. I’ve got a quick high-level overview of AOP as well.

Show Notes

Using Spring Transactions with Hibernate
The Spring Live Book Sample, Chapter 2, covers declarative transactions with Spring.
The AspectJ Project hosted by Eclipse.

Zdot Podcast: Spring Template Classes


Download Spring Template Classes.

Today’s podcasts gives takes brief look at a couple template classes provided by Spring, and why the idea is really important. I’m still working on a good format for show notes. Here’s a bare bones version.

Show Notes

Spring Live by Matt Raible
Manning’s Spring In Action
Design Patterns
Portland Pattern Repository Template Pattern description, better known as the Template Method Pattern

Spring and Dependencies Podcast

This podcast focuses on a quick intro to Spring and how it affects your code dependencies.

If don’t want to listen to it with the player above, you can download Spring and Dependencies podcast.

Show Notes

Here’s the outline I worked from while recording the podcast. It’s sketchy, so don’t take it for hard information. I’ve woven in a couple links, though.

  • Who I am
    • Java developer since 90′s
    • J2EE since Struts 0.5
    • Worked as programmer for university, .com, government
  • What the show format is
    • Cover interesting topics, many of them as they’re emerging
    • Mainly my own experience and my reading: get what I think is a decent overview
    • I wanted something substantive to listen to on the way to work or somewhere else
      • 10-20 minutes
      • Split topics across shows often
      • Perhaps have a basic theme for week
  • EJ classes
    • 90 minutes, 3 times per week
  • Spring IoC: Basic bean factory
    • Allows for creation and wiring up
    • Gives you home theater components instead of an all-in-one
    • Encourages interface programming
    • Can/should replace config file
    • Eliminates creation and relationship code, allows object to focus on its reall purpose
    • Moves dependency definitions to configuration
  • Dependencies
    • Variable type (Comcast comcast)
    • Constructor choice (new Comcast())
    • Variable methods used (comcast.connect(), comcast.sendSpam())
  • Getting rid of dependencies
    • Change variable type from concrete class to interface (Isp isp)
      • That eliminates dependency on variable type
      • That also standardizes the methods used — (isp.connect(), isp doesn’t have sendSpam() call). This may require changes to your code. You see this recommendation when using Map vs. Hasmap.
    • Remove constructor call and replace with set method.
      • Lets object creation be someone else’s problem
      • Your object is now dealing simply with how to get its work done and collaborate with other objects.
      • This has a really cool side effect: you’ve now made it really easy to use mocks of your Isp during testing instead of a real implementation.
      • Check out the sample chapter of Pragmatic Unit Testing.
  • Back to Spring
    • Read the configuration file
    • Instantiate the objects
    • Resolve all the dependencies and relationships
    • Call the correct set methods
    • Left with all your business objects created, initialized, and connected
  • Benefits
    • All creation and relationship info is in one spot, instead of scattered in classes
    • When something must be changed, there’s just one place to go to
    • If your code relies on the interface, then you can choose which implementation in the config, and no code changes are needed.

HttpUnit, HtmlUnit, jWebUnit, DbUnit, and JMeter – wow!

About a year ago, we were using jWebUnit, which is an API built on HttpUnit — which in turn is very similar to HtmlUnit. We used it in conjunction with DbUnit to load the database tables before the test and verify them after. It worked really well. We had tests that could verify the operation properly manipulated the database, and could check the structure of the HTML returned.

We went away from it mainly because functional tests could only be written by programmers with that method, and with JMeter we could have someone a systems analyst or a tester write the functional tests. Using the proxy recorder available in JMeter let a user click through the test and replay it. JMeter could load the DB and check it based on CSV files, instead of XML. In the end I think the flexibility is a little less, but the number of people who can help get the work done has increased.

The Buy vs. Build Battle

We’ve been doing a bit of research lately on the “Buy vs. Build” argument in application development. As a survey of what’s out there, one of my colleagues collected a number of articles on the issue. Many of these are on the web, so you can check out his Furl archive in the “Buy vs. Build” area. If you’ve got any other sources, drop in a comment!