JDiff - a great tool for managing API changes

Today I was working on upgrading our test infrastructure to the latest EasyMock. Since we've got lots of tests that make extensive use of EasyMock, I needed a tool to give me a 'heads up' on the potential problems I would face.

JDiff Screenshot
JDiff is just that tool. I simply edited JDiff's example build.xml file with the paths to each version of EasyMock. Then I ran ant and JDiff generated a Javadoc-style report outlining the differences between the two APIs.

In this particular case, the report told me that EasyMock now uses varargs for its replay(), reset() and verify() methods - so I'll need to recompile my code when I do the upgrade.

JDiff is a simple tool that does one thing very well. I highly recommend it.

CodeSearch-Plugin M3

Results tree
I've fixed a bunch of bugs in the CodeSearch-Plugin:
  • the plugin won't reopen the same file multiple times
  • the plugin allows you to open local project files from the search results (via a right click)
  • the plugin now works if you have multiple projects open in IntelliJ
  • there's now a dialog to tweak the search

    But there's still a few important tasks left to do:
  • manage the search regular expression more carefully
  • preflight file type selection for Google Code Search
  • preflight argument selection for commandline search

    I gotta get this thing working great soon, since it's already featured on the API page!
  • Tagsoup: An easy API for parsing HTML in Java

    I needed an API to convert sourcecode embedded in HTML (example) into plain text. I needed to keep track of where the <pre> tags start and stop, plus extra stuff for my parsing heuristic.

    The Java API I chose for this task is Tagsoup and I'm very impressed. Why Tagsoup is awesome:
  • Very easy setup.
  • Familiar SAX API so there's less to learn
  • It just works.

    If you're writing Java code and you need to work with HTML, I highly recommend Tagsoup!
  • CodeSearch-Plugin M2

    Development on the CodeSearch-Plugin is going smoothly.
    Codesearch Settings
    I've added a CommandLine Search source so custom search providers can be added. The process of setting this up is still a bit intimidating since it requires you write a regex that can parse the output of your tool. Eventually I intend to write connectors for all the various code search services. Perhaps in return they'll feature my plugin on their blogs or site!

    There's still a lot of polish missing. But core functionality is all there, and I'm excited to make this tool friendly.

    Download milestone 2.

    Why sucks

    I just spend 45 minutes trying to create some funky business card-sized prints of flickr photos on MOO.

    Very slow AJAX
    The site uses heavy amounts of Ajax to do in-browser selection and cropping. It looks very pretty. But it's ridiculously slow. Their minimum batch is 100 photos, and it takes way way too long to do this. Click. Wait. Drag. Wait. Wait. Wait.
    This is especially unforgiveable because a non-Ajax solution would have worked just as well: why not just show me my photos with little checkboxes beside them?

    I cannot save my order-in-progress
    The most terrible sin of all. After waiting through the process of selecting my 100 photos, I cannot save my work. I must complete the entire order and hope my browser doesn't crash in the interim. When I was suffering through the horrible speed, I wanted to save my order and try out the site in a different browser. But since I cannot save, this is impossible!

    Their site crashed on the last step
    After all that work (did I mention it took 45 minutes!) I entered my Visa number and clicked the 'confirm' button. And then the site responded with a completely blank page called preview.php. No amount of refreshing and resubmitting the form gave me a proper response. So all my effort is completely wasted, and I don't get any cute printouts. And since I couldn't save my order, if I want to retry I'll need to invest another 45 minutes!

    MOO is a really neat idea, but their website is absolutely hateful.



    I've finally uploaded a first draft of my CodeSearch-plugin to the project website. It's full of bugs but if you'd like to take it for a spin, you can download it here.