POTD: Groovy Sandbox

I posted the other day about Groovy’s SecureASTCustomizer and how it is harmful. In the end of that post, I suggested that doing the check dynamically would work better. So in this installaition of “Project Of The Day”, I went ahead and implemented it. The result is Groovy sandbox. My main idea is to confine…

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…

The Butler’s Service: Promotion for Jenkins User Conference in Paris

We have just increased our enrollment capacity for the Jenkins User Conference (JUC) Paris, to be held on April 17th. The enthusiastic response to our first-ever Paris JUC has been terrific – and we want to get everyone there! The learning, networking and connecting that occurs within the Jenkins community at JUC is great to…

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…

Come join us on “Selenium, Jenkins, Robots, Oh My!” tomorrow

I’ll be speaking tomorrow at San Francisco Selenium Meetup about Jenkins & Selenium — mainly recent improvements in the Selenium plugin, as well as several other new plugins relevant in the combination of Jenkins and Selenium, complete with a demo. I’ve got a couple of pet-peeves against the Selenium project, so I’m going to pitch…

Attaching files to JUnit tests

Despite the fact that it is the de-facto standard of test reports in any programming languages (perhaps except .NET), JUnit test report format has a number of problems. One is that the format isn’t explicitly defined (and I’ll discuss this in a separate post), but another problem, which I’m going to dedicate this post for,…

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…

POTD: checking package name for Windows reserved words

Today’s project of the day is a little tool that checks problems in your package names that can bite you on Windows. For backward compatibility with MS-DOS (which had ended its life more than 15 years ago!), Windows doesn’t allow you to create files/directories of certain names, such as “AUX” or “PRN” (see Microsoft Knowledge…

Jenkins User Conferences 2012

As a result of the success of the Jenkins User Conference last year in San Francisco, this year CloudBees and other sponsors are planning 4 Jenkins User Conferences around the world. Yup, that’s right — four! Making events like these successful would be a win for everyone, so I’d like to encourage you to …:…

This week in Tokyo

I’m back to Tokyo this and next week, doing all sorts of Jenkins related (and other CloudBees related) activities. First was the Developer Summit, a two-day developer conference. It covers wide range of topics from mobile to web, agile to industry designs. Yesterday I’ve done a lightening talk, trying to convince them the importance of…

@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…