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
is just that tool. I simply edited JDiff's example
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.
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!
Development on the CodeSearch-Plugin
is going smoothly.
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 Moo.com 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!Conclusion
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.