FindBugs

FindBugs ScreenshotOn the last Java Posse podcast, Josh Bloch mentioned FindBugs by the University of Maryland. FindBugs looks at Java source code to find bug patterns, a code that may cause an error. It is a rather nice program which includes command line tools, a standalone GUI, and an Eclipse plugin. I may have to try writing a NetBeans plugin for it.

Speaking of Java Posse, they have been asking for people to spead the word. If your looking for a podcast with Java news and interviews check them out, because they seem to be the only active one.

Technorati Tags: ,

Automator: Text to iPod

Mac OS 10.4 includes an application called “Automator” that allows end users to automate common tasks in limited ways without coding. I have some friends that commute to school (around 3 hours a day in the car). This means they have large amount of reading to do and a large amount dead-time in the car. Some of the reading is electronic, so they have been using the built-in text-to-speech features of the Mac. This is not ideal, however, because their is not a way to pause or skip around the reading. I suggested they convert the text to a speech sound file and play it on their iPods. So this is a tutorial to do that with Automator.

Technorati Tags: , ,


(Continued)

Big Three Oh

I turned 30 today. I’ve had my initiation in the “Over Thirty Club”, which includes a little hat, a card to carry in my wallet, a brochure entitled “You’ll Never Date College Girls Again”, and I was told the meaning of life. The little hat is cheap. The card doesn’t work any where. The brochure contains no new information. I can’t tell you the meaning of life without breaking my solemn oath, but I can say that it reads allot like the directions on shampoo.

On the plus-side Italian Cream Torte Cake is very good.

Apple’s broken ImageIO PNGs

When Apple updated their version of Java a few weeks ago they broke PNG loading in ImageIO. The PNG loaded via the Toolkit methods (and ImageIcon) still work fine. Since I had read that all updates to image formats would happen in ImageIO, I naturally use ImageIO to load all my non-icon graphics. Now, ImageIO is broken and I’ve written a couple of games the use PNGs almost exclusively. I wonder if the problem is related to endian differences between PowerPC and Intel and maybe they slipped some Intel code into the JVM.

Experiences with Matisee

The honeymoon is over. Here are a few observations about Matisee.

Header image

The first panel was a sort of header on sidebar (see above). The layout actually worked fine on my development machine, but when I tried it under Windows the header was too large. Free Design/Matisee probably wasn’t made with the use case in mind. But it works great with forms.

Mac-style About BoxThe second panel is a Mac-style about box (see left; click to see larger image). When I tried to emulate this, I noticed free design does not have a way to align to the center of components. But wait, it does not need to (for this example anyway). Anchor the sides of all the labels to the edges of the panel and set the label’s horizontal alignment to center. It then works the way I want. Hmm, sometimes researching a blog entry helps my code.

Incidentally, it seems the Java HTMLKit doesn’t like meta tags. The first line of the body would never take on the correct font or boldness with the meta tags in the HTML.

I was going to put a third dialog here. But it turns out, that Matisee was not the problem. I had an options dialog that I converted from GridBag by pullling it apart and then adding a brand new check box. The new check box would not align correctly. After some work, I found the problem was all the old components had insets and the new check box did not. The problem I was going to write about here was that even after fixing the insets, the check box wasn’t aligned on Windows, but was on OS X. In doing research for this post, I looked at the “.form” file and found the problem. When searching for inset problem, I gave the check box an empty border while the rest had the default border. So it was my fault after all.