Trail of Coincidence

A guest was coming to our office over lunch, so food was ordered for everyone. Except it turned out that due to a miscommunication, mine wasn’t there. No problem, I said. Happy accident. I’ll go out for lunch later. Maybe somebody up there is trying to tell me that I should eat out today. I…

Camping in Livermore

In the Saturday Japanese school my daughter goes to, there are 4-5 families that mine has been particularly close to. With some families relocating and what not, faces have slowly changed over time, but some of us go all the way back to when my daughter was a baby. Over the memorial day weekend, the…

Support API freedom

I was reading this article from Steve and Sacha about the API copyrightability, and found myself in a violent agreement. If you haven’t read it, I highly recommend it. For those of you who haven’t been following the tech news, the issue at hand is Android — Google neatly side-stepped Java’s compatibility requirements by introducing…

JavaFX needs to be a new edition of Java

Lately, there has been a number of security vulnerabilities reported in Java. The latest one is reported just after a few days of JavaSE 7u11, which by itself a response to another vulnerability. It’s so bad to the point that people are being asked to uninstall Java (yes, just in the browser, but let’s face…

Internet Explorer only takes string in HTML5 postMessage

Today I learned the hard way that our beloved Internet Explorer doesn’t handle HTML5 cross-domain messaging functionality (AKA postMessage) correctly. I have done a reasonable amount of research before I invested a significant time into this, and so I knew it doesn’t postMessage across tabs and windows beforehand. This limitation was not a problem for…

Jenkins User Conference New York: my take

In one of those days, I’ll get a small enough computer whose battery won’t die in 45 minutes, but until then, my apologies for the belated Jenkins User Conference travel report. So, as we tour around the world bringing Jenkins User Conference near you, the last stop was New York City. I’ve kicked off the…

Groovy SecureASTCustomizer is harmful

I was looking at Groovy DSL slides from Guillaume Laforge when I noticed about SecureASTCustomizer, which led me to what appers to be the original introduction post from Cedric. Being able to lock Groovy execution down would enable me to use Groovy in more places, so I did a bit of experiment. But I regrettably…

COM4J updates

It’s been a while, but I’ve posted a new version of COM4J. COM4J is a library that lets you talk to Windows COM components. Unlike similar libraries lika jacob, which makes you feel like you are working with reflection, COM4J is designed to work with type-safe annotated interfaces, which makes you feel like you are…

Debian and Maven, a crash of culture

Tim O’Brien posted his frustration about the state of Java packaging in Debian. While I’m not affiliated with Debian nor Ubuntu, I wanted to post something in defense. I completely understand where Tim is coming from. To the eyes of Java developers, the Java packaging in Debian looks completely Sisyphean. We got all the binaries…

POTD: Package renamed ASM

Today’s project of the day is a package renamed ASM library. I previously wrote about a problem in otherwise quite useful ObjectWeb ASM library. Namely, it breaks backward compatibility in such a way that badly breaks apps/libraries that use them. In that post, I wrote about two proposals to fix the pain point. One is…

@Override and interface

Jim Leary, my colleague at CloudBees, got me into digging into this. The question is around putting the @Override annoation on a method that implements an interface method, like this: public class Foo implements Runnable { @Override public void run() {} } As you can see in the javadoc, when @Override was originally introduced, such…

DNS outage with jenkins-ci.org

As Tyler summarized it in this e-mail thread, currently there’s an DNS outage going on with jenkins-ci.org that makes all name resolutions fail. The current ETA is right around the new year, but in the mean time, you can add our temporary DNS server into your /etc/resolv.conf via “nameserver 140.211.15.121″. Once again our apologies for…