Best cheesey-cheese

# 2007-02-16 13:43:54 -0500 | General | 3 Comments

Like PragDave, I love a good cheese. Time for everybody’s favorite segment: my cheese story of the week.

For our recent anniversary Bron and I went to dinner at Mezzalira, a very nice Italian-based restaurant. Top notch stuff, I had a very nice roast bunny and the tagliatelle Bron ordered was the gold-standard of al dente.

For dessert, I decided to go for some cheese. On my last visit there, they had run out of the cheese I wanted to try. This time around, I ordered the full trio of cheeses.

And I’m glad I did.

GORGONZOLA DOLCE LATTE [LOMBARDY, ITALY]

A very good smelly cheese. I’m a big fan cheeses blue and pongy. The description on the menu said “on the palate the Gorgonzola has hints of mushroom” which was very true. Three-and-a-half stars.

The cheeses came with a weird little preserved-friut thing (apparently called Mostarda d’Uva). Kinda marmaladey. Went perfectly with this gorgonzola and my glass of port.

TALEGGIO [LOMBARDY, ITALY]

They grow this cheese in caves, I shit you not. Well, however they make it, it tasted damn fine. This is a “soft” cheese, and was very soft on the mouth, but didn’t run all gooey over the plate, either. And when you bite it, the rind has this wicked crunchy/crystally/salty texture, compared to the soft center. Very nice, 4 stars.

PECORINO SARDO [SARDEGNA, ITALY]

A pecorino is a little like a parmesan, but made by squeezing a bleater instead of a moo-er. As a hard cheese, it falls into my normal or “cheesy cheese” category, compared to the gooey or bluey above.

This is, hands down, the best cheesy cheese I’ve ever had. And even outside of its category, I can’t think of a cheese that I’ve enjoyed eating more.

It was hard enough to crumble slightly, but instead of being super-dry (like many pieces of old parmesan in my fridge) it was almost moist. It definitely had that classic salty taste, and had this great accompaniment aroma.

No question: 5 stars. Best. cheese. ever.

Getting Closure

# 2006-09-23 23:49:35 -0400 | General / Java | 8 Comments

(video)

Don’t be fooled by javac -target 1.4

# 2006-09-15 11:43:52 -0400 | General / Java | 2 Comments

In the last couple of weeks, I’ve been pinged a few times by cow orkers in the FishEye development team who were complaining about a mysterious JDK1.5 dependency in our code. Their development builds were breaking on a JDK1.4 JVM with an error like:

java.lang.NoSuchMethodError: java.lang.StringBuffer.append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;

The sweat started pouring the first time I got that complaint; FishEye requires 1.4, we compile with -target 1.4 -source 1.4, and that method doesn’t exist in 1.4, it was added in 1.5.

Have production builds been going out like this?!

I knew the answer to that question was “no”, because we have a check like this in our Ant build (this uses some ant-contrib tasks):

<target name="check-prod-build">
    <propertyregex property="build.jdk.version" input="${java.version}" regexp="^(1\.\d).*" select="\1"/>
    <if><not><equals arg1="1.4" arg2="${build.jdk.version}"/></not>
        <then>
            <fail>Build aborting
====================================
A PROD BUILD REQUIRES JDK1.4.x ONLY!
====================================
You are using ${build.jdk.version} (${java.version}).
            </fail>
        </then>
    </if>

</target></pre>

Then the reason for putting that check in came back to me: because -target 1.4 -source 1.4 can still produce class files that won’t run under 1.4. How? Because neither of those options change what rt.jar you are linking against.

This is best illustrated with a little example. Take this simple file:

public class Test {
    public static void main(String[] args) {
    StringBuffer b = new StringBuffer(”Hello, “);
    CharSequence s = “world!”;
    b.append(s);
    }
}

When compiled with JDK1.4 it will run under both JDK1.4 and JDK1.5, but not when compiled under JDK1.5:

$ export JDK14_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.4/Home
$ export JDK15_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
$ $JDK14_HOME/bin/javac -target 1.4 -source 1.4 Test.java 
$ $JDK14_HOME/bin/java -cp . Test
$ $JDK15_HOME/bin/javac -target 1.4 -source 1.4 Test.java 
$ $JDK15_HOME/bin/java -cp . Test
$ $JDK14_HOME/bin/java -cp . Test
Exception in thread "main" java.lang.NoSuchMethodError: java.lang.StringBuffer.append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;
        at Test.main(Test.java:5)

The culprit is the call to append(). In JDK1.4, the only call that matches is append(Object) and you end up with bytecode like:

invokevirtual   #6; //Method java/lang/StringBuffer.append:(Ljava/lang/Object;)Ljava/lang/StringBuffer;

But with JDK1.5’s rt.jar it matches append(CharSequence):

invokevirtual   #6; //Method java/lang/StringBuffer.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;

Our Test.java is source-compatible with 1.4, the resulting Test.class as the correct class version for 1.4, but it is not link-compatible with 1.4 when compiled from 1.5. Have we learnt out lesson yet? Don’t be fooled by javac -target 1.4 -source 1.4: it can still produce class files that won’t run under 1.4.


Update Via Michael S and Chris N, you can also use the [code]-bootclasspath[/code], as described in the javac documentation.

My own private Wikiality

# 2006-08-21 17:42:22 -0400 | General | No Comments

His Noodly Appendage

# 2006-08-02 17:04:10 -0400 | General | Comments Off

Like shaved Parmesan over a spicy meat sauce, I stay on top of the antics of non-believers at FSM HateMail. And although I am but a midget in the FSM’s grand plans, Pastafarian know that we are all His creatures, and that He touches us with His Noodly Appendage.

And lo, today I saw proof! While reading this entry at FSM HateMail, I discovered a hidden sign in the ranting of that unbeliever. Can you see it? (See screenshot at right.) Or maybe the message is intended only for devotees who use Safari. In any event, a clear sign of His Noodly Appendage at work.

For those needing further explanation of this wondrous sight, perhaps it is made clearer in the image below.


Gartner: equal opportunity employer

# 2006-07-10 13:26:34 -0400 | General / Java | 1 Comment

While reading the computer section of today’s Canberra Times (10 July 2006, page 14), I spotted this little gem. The talent pool in Canberra must be drying up and we are now importing aliens. Not that there is anything wrong with that.

Hopefully they will turn up the the next CJUG meeting. Lets all welcome @^qebdafkb G^hqj ^k and MefiifmMfmbo

Cafe web-two-oh/lame nerds/I’m blogging this

# 2006-05-20 07:58:07 -0400 | General | No Comments

It’s our last day in San Fran, and Terence took us for a nice little tour of the city. If nothing else it was noteworthy because we were finally showed were we could get some good coffee.

We are now sitting in Ritual Coffee Roasters (or “Cafe Web two dot oh” as Terence calls it). Great coffee, lots of couches, and every single punter has a laptop on their knees (about 80% Macs, too).

Spying a soft-bearded man-child on the next table, Brendan and I — sitting 2 feet from each other — had this IM conversation:

bph:  note the "Ruby" book stage right. so cool, and yet at the same 
      time, so lame... if you have to buy a book on the subject...
spud: indeed
spud: just had the same thought
spud: and on a related note, can't belive we are having this converstaion
      over IM
spud: and I'm blogging this 
bph:  and I've got a photo for ya

Yep, something very lame going on somewhere there. And so very web two dot oh.

Update: Photo from Pete’s camera phone (Brendan left his usb cable in his luggage so his snap is stuck in his camera)

JavaOne day 2 and 3: the booth and me

# 2006-05-19 16:21:52 -0400 | General / Java | No Comments

The last two days at JavaOne have been hectic.

Tech Sessions

I managed to get to two Technical Sessions this year (up from one last year).

The first was a talk about scaling applications using a shared heap, by Ari Zilka of Terracotta. There were some interesting ideas in there, so afterwards I went to talk to some of the Terracotta engineers at their booth. Wow, they sure have a compelling product. It makes me want to write an app requiring huge scalability just to try it out.

The second talk was Gilad Bracha’s talk on invokedynamic and “hot-swappable” classes (two of the ideas for better supporting dynamic language in Java). It’s clear Gilad is one smart cookie.

Night life

There are plenty of parties (if you can find them) after hours at JavaOne. But after 8 non-stop hours each day standing on your feet at the booth, you don’t last long past midnight.

Last night we took our Guardian Angel out to dinner at Kuletos, a “shi shi” Italian restaurant. Great food, and the conversation was… interesting. We were welcomed by the hostess with “ah, you must be the four loud Australians”, and we didn’t disappoint. The more left unsaid, the better.

Tonight was the “After Dark” event at JavaOne. It was much better than last year, and it was a great idea to do the t-shirt hurling then as opposed to spread-out during the week. The party was much better than last year, and the quality of the beer much much better. The beer-quality must be proportional to the length of the beer-queues.

The Booth (photos)

Staffing the booth is a lot of hard work, but it can be rewarding, and it can also be a little fun. And we certainly aren’t above making our own fun. This PDF is what is on the back of our pamphlet (and also on one of the big banners you can see in the images below).

We gave away some of our SCI t-shirts this year, but they weren’t as popular as last year’s t-shirt. One of the punters we gave a t-shirt to last year returned wearing it this year, which was worth a happy-snap (Conor on left, punter on right):

This is Conor and myself giving our best attempt at snaring unwary nerds (yes, very sad). Its also a good shot of the booth. A lot of money for very little space (we got in trouble for putting the banners outside our allocated “space”, but managed to sweet-talk our way out of trouble).

This is Pete, the smooze master, giving our shpeal to some of the local wildlife. Pete is exuding so much charisma the punters are actually glowing.

The End

After some shopping and sight-seeing tomorrow, we are off home. Phew because this is what it feels like at the end of JavaOne (also as a 2s AVI).