Much ado about scripting, Linux & Eclipse: card subject to change


EclipseCon 2009 T-shirt Design Contest, Part 4: Polos and Rugbys and Darts, Oh My!

Taking an idea from Red vs. Blue and borrowing from Google Image Search & SSS Canada, I thought I'd design a few new shirts to take the EclipseCon Committer Shirt Contest in a different direction. Bear in mind these are just comps, because my GIMPin' skills are pretty limited.

View larger images | Download source images


EclipseCon 2009 T-shirt Design Contest, Part 3: Fugly Tees

Have you submitted anything for the EclipseCon Committer Shirt Contest yet? If not a graphic design, how about a conceptual one? Describe your idea, and maybe someone else will attempt to render it.

A fashion faux-pas frusta-ration
Combined with lack of motivation
And a loss of concentration
I've seen some fugly tees*

I can't concentrate on work
My wardrobe has gone berserk
Now I'm sweating 'bout this shirt
Another fugly tee*?!?

Two years ago
I said you'd never clothe me
I gave you to Goodwill
Now in this world of feckless logowear
Why do good brands have to go astray
And leave you with nothing
Ya, you left me with nothing
Ah Ah Ah Ah Ah
But a fugly tee*
wee ooo wee ooo

Hyper technical sessions
And some great hands-on lessons
All a'mashin' and a'meshin'
March in Californi-ee
I don't wanna go to sleep
Bags of Fritos by my feet
Writin' code, pining for heat
Please no fugly tees!

(Minnie Mae)
Why did you have to put
so much pressure on me?
I have no GIMPin' skills**

I didn't mean to scare you little one
Is there nothing I can say?
It's really not that hard
Ya please lower your guard
Ah Ah Ah Ah Ah
And submit some tees
wee ooo wee ooo

Now I'm standing in the snow
Moisture soaking through my shoe
Every droplet causing woe
Reminding me I have to go...

Time to take a break from work
Holiday shoppers gone berserk
I've now only got one care
We need something else to wear!


Prozzak - Strange Disease

* - Admittedly, past years' EclipseCon Committer Shirts have been long sleeves, not t-shirts (tees). However, "fugly shirts" (or worse, "fug'long sleeves") doesn't work as well lyrically. Please excuse this creative license.

** - You can get GIMP for Windows and Mac, too, not just Linux.

Helpful Javadoc? the moon sets over the early morning Merlin, Oregon mountains, our intrepid adventurers type...
-- Funny, yes, but not so helpful... unlike this bit of doc.

PDT News

Some quick announcements about the PHP Dev Tools project:

  • PDT 2.0 now has all-in-one builds, which include all the requirements you need to get started w/ PDT for Linux, Mac, and Windows (all 32-bit). If you're on another platform, you can grab the Eclipse 3.4.1 Platform, or perhaps the Ganymede SR1 JEE bundle, and then add an update site. More...

  • PDT 2.0RC2 is available, with RC3 this week and GA next week.

  • Then, starting in 2009, PDT 2.1 will be on the Galileo release train. Note that as this will be an extra-short cycle (that is, one half the usual length) this release may not include any massive new features. Stay tuned -- the PDT 2.1 plan has not yet been published (because PDT 2.0 isn't out yet, of course).

  • Interested in seeing a PHP Developer package, along with the C/C++ and Java ones? Vote for bug 238960.

  • While so far rather quiet, there's a new #pdt IRC channel. Bear in mind these things take a while to get going, but they do grow in time. #eclipse-modeling is a perfect example. C'mon by and have a chat.



Got this captcha on the Ticketmaster site today, which answers the age-old question, What Would Chuck Norris Do?


EclipseCon 2009 T-shirt Design Contest, Part 2: Some Ideas To Get You Started

With just over a month left in the EclipseCon '09 T-shirt design contest, I'm disappointed to report we've had no submissions yet.

So, to get the ball rolling and hopefully avert a fashion crime this time around, here are a few submissions of my own for you to consider and riff on. (If you can't read the small print, it says "* - Frequently Updated Deliverables".)

Make custom shirts at Zazzle

Get yourself a free Zazzle account (all it takes is an email address and a few minutes) and you can customize these with your own text, images, and fabrics. Then, submit a link to your gallery in bug 256495, and you'll be entered. If you tag your creations with "eclipsecon09" they will appear in rotation in the widget above.

Note: after creating a design in Zazzle, your new offering will take a few minutes to appear in your gallery, and several minutes more to be shown publicly.

Oh, and don't be afraid to submit things you aren't sure are any good. The winner of the last contest wasn't sure his submission was good enough... and then ended up winning! So trust your instincts and submit something today!

Here's a few ideas I've thought of but haven't had the time (or skills!) to render -- feel free to borrow something.

  1. Ask Me About ______, For I Am Great With Knowledge
  2. I Went To EclipseCon And All I Got Was This Lousy T-shirt... And The World's Best IDE For ______ [1], [2]
  3. Evolution [1], [2], [3]
  4. The Inmates Are Running The Asylum [1], [2], [3]
  5. Jack & His Magic Beans Are No Match For Jane & Her Eclipse-Fu [1], [2], [3]
  6. Some past Eclipse shirts [1], [2], [3]


Obfuscation 101: Ant-contrib

I have recently fallen in love with ant-contrib. I'd still rather write Bash scripts, but if one must interact w/ Ant, ant-contrib is the only way to survive it. Without it, you don't have variables, for-loops, or if-elseif-then trees.

Of course, with every love there are moments of extreme angst. For example, I've been fighting with this error for the last 12 hrs, on and off, as I've been trying to resolve bug 256440:

Invalid type class used in For task, it does not have a public iterator method

What does that mean? It means I'm a dumbass.

Though I should know better, I rely on tools such as Eclipse's Ant editor to tell me when I've messed up task syntax. And though it can do CTRL-SPACE completion for the <for> task, the editor doesn't mark this invalid (if I've already typed it in).

<for ...>

The fix?

<for ...>

Ultimately, though, I wish error messages would be written with the end-user in mind. The above problem would have been solved in seconds had it been simply "For task cannot contain nested If task... dumbass." :)


Eclipse Photoshop Challenge: "Better Than MovieOS", Part 4: Everyone's a Winner, Baby

Well, it seems everyone's a winner. Congrats to everyone who participated!

To collect your loot, send an email to Lynn.Gayowski at with postal mail info. Or, if you're not in a hurry and will be at EclipseCon, you can opt to collect your Eclispewear there.

So, any takers for the next contest? Thanks to Zazzle, any design you'd like can be printed, whether it's chosen as the winning design or not -- how's that for empowerment? Here are a few examples I've done, all customizable to suit your fabric, colour, and design needs.


My love-hate with SVN, Part 3: CollabNet Subversion (JavaHL)

Installing Subclipse w/ JavaHL (aka CollabNet Subversion)

  1. Download CollabNet Subversion for your operating system (Linux, Windows, MacOS X). This provides the JavaHL layer so that Subclipse can talk to SVN repos using pure Java (but not SVNKit). Install it.
  2. Download Eclipse 3.4.1 (or Fedora Eclipse). Start it up, making sure to pass in -Djava.library.path=/opt/CollabNet_Subversion/lib (linux only).
  3. Help > Software Updates... > Available Software > Manage Sites... > Add... >
  4. Install the whole site. Restart when prompted.
  5. Window > Preferences > Team > SVN > SVN Interface > Client > JavaHL (JNI)

Well, I feel I've been remiss in ranting about Subclipse. Turns out a fresh Eclipse + a fresh install (and a lot of trial and error / googling has fixed things.

You have not exactly given us a chance to help you with your Subclipse issues.
Mark, you're right, Subclipse does work -- it's just not the most straightforward thing to install. And when it breaks suddenly and for apparently no reason, losing hours of productivity to fighting w/ source control instead of writing and committing code, it's VERY frustrating, especially considering that Eclipse's CVS support Just. Works.
Does the JavaHL library exist in the folder you pointed to?
Well, given the wiki doesn't actually say what file(s) are supposed to be there, I had to guess. I have /usr/share/java/svnkit-javahl-1.1.4.jar and /usr/share/java/svnkit-javahl.jar (a symlink to the previous). Is that what Subclipse / Subversive are looking for? No idea.
Do the preferences say "Not available"?
They do. After much surfing, googling, testing, registering to download, waiting for a password, cursing, downloading and rpm -i ... I finally figured out that all I needed to do was get CollabNet Subversion Command-Line Client v1.5.4 (for Red Hat Linux), and (as noted in the wiki), add -Djava.library.path=/opt/CollabNet_Subversion/lib to my Eclipse startup. Could you save others this search by linking to the downloads page from the wiki? Or even linking to it from the Downloads page??
I think somehow an old version of their JAR is being loaded by your Eclipse and not the one in their plugin. Do you have their JAR installed in your Java extensions folder or something?
Reinstalling Eclipse and purging some jars of unknown pedigree & version seems to have worked. I have svnkit 1.1.4 in the above folder (/usr/share/java), and org.tmatesoft.svnkit_1.2.0.4949 in a linked folder in my dropins/.
Finally, as to your History error, Subclipse does not have this problem, but I know the cause. Your history view is setup to "Show Merged Revisions". I would assume that Subversive exposes this as an option in the UI that you can turn off. That is what we do in Subclipse.
I expected to find this as an option under Window > Preferences -- some digging showed me that, no, it's under the view's menu > Include Merged Revisions. Thanks for the tip!
Anyway, we also catch that exception when talking to older Subversion servers and just make the request again without asking for the merged revisions. If you have not already filed a bug report with Subversive you probably should.
Good idea -- see bug 257669. I just want something that will work, won't crash Eclipse, won't freeze up during an update, won't leave dozens of "not really there" files in my Synch view (that magically disappear when I click the 'collapse all' button in the view), won't throw errors when I try to look at file histories.

So, for the moment, I'm back to Subclipse. I've upped the permgen and heap for Eclipse to 400M and things are working again. Seems large projects + SVN = crashing/freezing/OOM errors. Maybe JavaHL won't be so greedy? We shall see.


phpeclipse vs. PDT, Part 3

Well, I may be no closer to having my top ten enhancement requests fixed in PDT 2.0, but on the plus side...

In other news, PHPEclipse 1.2.1 just came out...

My love-hate with SVN, Part 2

The love-hate continues...

  1. Show History operation failed
    *** Show History
    svn: Retrieval of mergeinfo unsupported by ''
    *** Error (took 00:00.743)
    *** Show History
    svn: Retrieval of mergeinfo unsupported by ''
    *** Error (took 00:00.795)

    This is particularly fun because the error comes up twice, and keeps coming up as long as you have the History view shown. Solution? Time to switch back to Subclipse? No, I tried that, and despite adding -Djava.library.path=/usr/share/java to my Eclipse startup, I still can't use Subclipse anymore.

Oh, well... there's always kdesvn:


My love-hate with SVN

Since joining JBoss, a division of Red Hat, I've gotten to know the foibles of SVN rather intimately. Here are my two favourites, both encountered this week:

  1. This client is too old to work with working copy; please get a newer Subversion client.
    Problems reported while synchronizing SVNStatusSubscriber. 2 of 3
    resources were synchronized.
    An error occurred synchronizing /devstudio-workspace: Error
    getting status for resource P/devstudio-workspace
    org.tigris.subversion.javahl.ClientException: svn: This client is
    too old to work with working copy; please
    get a newer Subversion client

    This happens if you use SVN 1.5.4 and Subclipse 1.4.6 with SVNKit & JavaHL plugins. Solution? Switch to Subversive 0.7.5, or follow this advice (so I'm told, I haven't tried yet).

  2. Installing subversion-javahl-1.5.4-3.i386 (on Fedora 10 Rawhide) causes Ant 1.7.1 to fail to do SVN checkouts.
    (from /var/log/yum.log)
    Nov 27 19:51:47 Installed: subversion-javahl-1.5.4-3.i386
    [java] fetchElement:
    [java] #
    [java] # An unexpected error has been detected by Java Runtime Environment:
    [java] #
    [java] #  SIGSEGV (0xb) at pc=0x05984ec5, pid=24986, tid=3086982032
    [java] #
    [java] # Java VM: Java HotSpot(TM) Server VM (11.0-b15 mixed mode linux-x86)
    [java] # Problematic frame:
    [java] # C  []  apr_threadkey_private_get+0x15
    [java] #
    [java] # An error report file with more information is saved as:
    [java] # /opt/public/jbt-jbds/nightly-20081128-0002/org.jboss.ide.eclipse.
    [java] #
    [java] # If you would like to submit a bug report, please visit:
    [java] #
    [java] # The crash happened outside the Java Virtual Machine in native code.
    [java] # See problematic frame for where to report the bug.
    [java] #
    [java] Java Result: 134
    (from /var/log/yum.log)
    Dec 02 11:19:23 Erased: subversion-javahl

    And now it works again!


Beyond Compare 3: Image Compares

Just discovered this feature in Beyond Compare 3 today: image comparison w/ visual differencing.

For the center panel there are three different colouration / difference modes, plus the option to ignore unimportant differences. Very cool.


EclipseCon 2009 T-shirt Design Contest

The Eclipse Foundation is holding a contest to design a new and improved committer t-shirt to give away at EclipseCon 2009. Anyone can participate and all ideas are welcome. Help us make the Eclipse community a better-dressed place!

Design Guidelines

  • All designs must be original work -- unlike past contests, you cannot borrow from movies or TV.
  • As with all contributions to Eclipse, your submission will be licensed under the EPL.
  • The maximum image size allowed is 30x30 cm / 12x12 inches / 1800x1800 pixels.
  • Designs can be in colour or black & white.
  • If you want to incorporate the Eclipse logo, various formats can be found on the artwork page.

Design Format

Since we want to open the t-shirt contest to creative people of all graphic design skill levels, we are using Zazzle as one of the submission format options. To create a custom t-shirt:
  1. Go to and click the Create tab at the top
  2. Choose a shirt style
  3. Add images and text to create your design
  4. Click the Post for sale button in the bottom right and sign up for an account

You are also welcome to use Photoshop, GIMP or any other graphics program to create a design in .jpg, .gif or .png format.

How to Enter

Submit your image as an attachment in .jpg, .gif or .png format to bug 256495, or enter a link to your Zazzle creation on the bug.

The deadline for entries is January 12, 2009 at 4:00 pm EST.

Note: Individuals are allowed to submit multiple entries, but only one prize per person will be awarded.


  • 1st place: a Flip Mino video camera, an Eclipse jacket, and your winning design worn by hundreds of grateful committers at EclipseCon
  • 2nd place: an Eclipse fleece
  • 3rd place: an Eclipse shirt

Finalists will be chosen by a community vote and the winning shirt will be selected by the Eclipse Foundation. Community voting will take place January 13-26, 2009, with results posted here.


  • Please keep bug 256495 for submissions only.
  • To provide feedback regarding submissions, post comments on this blog.
  • Questions? Email tshirt at

Eclipse Photoshop Challenge: "Better Than MovieOS", Part 3: Stop - Voter Time

Seven submitters. Twenty-two submissions. Five winners, chosen by you.

Vote now for your favourites!

Polls close December 5, 2008 at 4:00 pm EST.


If you type Google into Google you will break the internet...

While that may not be true, searching for a blog search with Google can yield rather loud effects:

Query for

Is there a MIDP 2.0 Music Player that does Ogg?

Having switched from ubuntu to Fedora and from .mp3 to .ogg and .flac, I've been looking for a player for my Sony Ericsson W810i... at least until such time as I finally settle on a Blackberry.

Here's what I've tried...

  • jorbis 0.0.17 - unusable UI (won't play); sources provided (no precompiled binary) won't compile with anything less than JDK 1.3; my phone requires CDC-1.1/MIDP 2.0, so this one's a non-starter
  • jOggPlayer 1.1.6s - works on linux with .ogg; ugly UI; won't compile locally with CDC-1.1 (no JApplet class) or JVM 6.0 (missing* classes in source bundle); precompiled binary won't install on phone
  • jlGui 3.0 - works on linux with .mp3 and .ogg; WinAmp-skinnable; requires JDK 1.4 (won't install on phone)
  • jlGui 2.x - requires JDK 1.3
Does anyone know of a good .ogg or .flac player for MIDP 2.0 devices? None of the ones I tried above work.

SQL Tribbles

We've got tribbles clogging up the inter-tubes, Captain


Gmail Themes

GMail adds themes! Wow. That's... uh, great. My favourite has to be the green-screen vax-like one. I'm sure the PINE/Mutt camp will be happy.

Entertainingly retro, but is it useful?


HOWTO: Use the p2 Update UI to control where you install

A few months ago, I wrote about using the p2 director to control where you install plugins & features.

Here's the other approach I mentioned in that article -- using the p2 Update UI and a little filesystem trickery.

  1. Use the p2 Update UI (Help > Software Updates... > Available Software) to install what you want. When prompted to restart, click No -- DO NOT RESTART OR APPLY CHANGES.
  2. Open a console window and run ./ foo 10 to move all plugins and features created in the last 10 minutes from ./plugins and ./features into ~/eclipse/eclipse-plugins-foo, then link them from ./dropins/

    Note that the name, foo, is arbitrary -- it can represent the specific feature set you just installed (eg., "jet" for JET plus dependencies) or it could be something generic like "team", where I've got plugins for Mylyn, Tasktop, Subclipse, CVS, JIRA, and Bugzilla. You can also add/replace plugins & features in an existing folder by running the script again.

  3. Use the p2 Update UI (Help > Software Updates... > Revert Configuration) to revert the changes you just installed by selecting the timestamp of the configuration from BEFORE you installed the plugins & features in step 1.

    Since you moved the files when Eclipse wasn't looking, it simply removes the p2 metadata, but can't delete the plugins and features.

  4. When prompted, restart Eclipse. On restart, the new plugins & features will be loaded.

Because the new plugins & features are not in the Eclipse root, you can now use those plugins with multiple versions of Eclipse -- just copy the file into another Eclipse's dropins/ folder.

This is perfect for testing milestone builds without having to reinstall everything each time.

Of course it's so easy to do this in shell script I have to wonder why p2 can't do it under the covers so we can get back the old functionality from Eclipse 3.3...


Eclipse Photoshop Challenge: "Better Than MovieOS", Part 2: Teaser

There are just under 26 hours left to get in your submissions for the "Better Than MovieOS" Photoshop Challenge, but we've already gotten some great submissions.

We'll be announcing the winners early next week, as well as details on the next contest which will run though January 12, 2009. Details to follow. 'Till then, here's a teaser:

Play For Schwag

Anybody searching for action?
Anything to fill your empty wardrobe, yeah
Any place you've got a 'puter
Any takers wanna submit their designs?

With the fire and lightning shooting from your hands
And creativ'ty written 'cross your eyes
Your itchy fingers on a cordless mouse there
Your passion's hot and this contest's taking flight

Inside the convention
The cover charge's free for accepted talks
Now, I hear you screaming out for mercy
Last submission standing wins the fight

Too late and you'll be out, nothing you can do
Contest's done 12th January

Over the holidays
When you've got some free time
It's time to play because ya know Eclipse is you

If you win this time, you'll be the champion
And get a prize, HA, that's just impossible!

Do you play for keeps? Do you play for Eclipse?
Do you play to win? Do you play cuz it's fun?
Or play for schwag?

Megadeth - Play For Blood


HOWTO: Bluetooth for Linux (2)

Connecting a Thinkpad X200 to a Sony DR-BT30Q Headset

10 months ago, I went through this exercise on my old T60p. Almost a year later, now running Fedora 10 on an X200, it was still a pain to set up. Really, this should Just Work. It's too bad that some things in Linux are still overly complex.

Anyway, after much ado with outdated walkthroughs, I finally found useful advice for setting up my Sony DR-BT30Q Bluetooth headset to work with my Fedora 10 X200 Thinkpad.

First off, here's what I installed along the way before I finally got things working (/var/log/yum.log):

Nov 15 15:08:03 Installed: pidgin-rhythmbox-2.0-3.fc9.i386
Nov 15 15:15:42 Installed: autoconf-2.63-1.fc10.noarch
Nov 15 15:15:43 Installed: bluez-hcidump-1.42-2.fc10.i386
Nov 15 15:15:44 Installed: alsa-tools-1.0.17-1.fc10.i386
Nov 15 15:15:46 Installed: automake-1.10.1-2.noarch
Nov 15 15:15:48 Installed: alsa-utils-1.0.18-3.rc3.fc10.i386
Nov 15 15:15:51 Installed: alsa-lib-devel-1.0.18-6.rc3.fc10.i386
Nov 15 15:23:01 Installed: bluez-gnome-analyzer-1.8-8.fc10.i386
Nov 15 15:23:01 Installed: obexd-0.6-1.fc10.i386
Nov 15 15:23:01 Installed: bluez-gstreamer-4.17-2.fc10.i386
Nov 15 15:23:01 Installed: bluez-libs-devel-4.17-2.fc10.i386
Nov 15 15:23:02 Installed: pybluez-0.15-2.fc10.i386
Nov 15 15:23:03 Installed: bluez-alsa-4.17-2.fc10.i386
Nov 15 15:30:42 Installed: libbtctl-0.10.0-5.fc10.i386
Nov 15 15:30:42 Installed: gnome-bluetooth-libs-0.11.0-5.fc10.i386
Nov 15 15:30:44 Installed: gnome-bluetooth-0.11.0-5.fc10.i386
Nov 15 15:38:42 Installed: libtool-1.5.26-4.fc10.i386
Nov 15 15:53:49 Installed: 1:glib-1.2.10-30.fc10.i386
Nov 15 15:55:27 Installed: glib2-devel-2.18.2-3.fc10.i386
Nov 15 15:56:45 Installed: dbus-devel-1.2.4-1.fc10.i386
Nov 15 15:56:46 Installed: dbus-glib-devel-0.76-2.fc10.i386
Nov 15 16:43:17 Installed: python-alsa-1.0.17-1.fc10.i386
Nov 15 16:43:19 Installed: alsa-firmware-1.0.17-1.fc10.noarch
Nov 15 16:43:19 Installed: alsa-tools-firmware-1.0.17-1.fc10.i386
Nov 15 16:49:27 Installed: 8:arts-1.5.10-1.fc10.i386
Nov 15 16:49:28 Installed: libgadu-1.8.2-1.fc10.i386
Nov 15 16:49:30 Installed: kadu-
Nov 15 16:49:30 Installed: kadu-mediaplayer-
Nov 15 16:49:35 Installed: lash-0.5.4-2.fc9.i386
Nov 15 16:49:35 Installed: fluidsynth-libs-1.0.8-2.fc10.i386
Nov 15 16:49:36 Installed: libbinio-1.4-9.fc9.i386
Nov 15 16:49:36 Installed: lirc-libs-0.8.4a-1.fc10.i386
Nov 15 16:49:36 Installed: libsidplay-1.36.57-17.i386
Nov 15 16:49:36 Installed: kadu-audacious_mediaplayer-
Nov 15 16:49:38 Installed: audacious-plugins-1.5.1-2.fc10.i386
Nov 15 16:49:41 Installed: audacious-1.5.1-4.fc10.i386
Nov 15 16:49:41 Installed: audacious-plugins-arts-1.5.1-2.fc10.i386

I didn't end up needing to compile btsco from source (which is good since it wouldn't compile!), but I'm sure some of the stuff installed above is required or will be useful eventually.

What did work was this:

  1. Put device into pairing mode. Use Gnome's Bluetooth Applet to connect to new device.
  2. Use hcitool to verify bluetooth radio is working, then discover the headset's MAC address.
    # hcitool dev
     hci0 00:22:44:66:88:00
    # hcitool scan
    Scanning ...
     00:11:22:33:44:55 DR-BT30Q
  3. Create ~/.asoundrc file:
    pcm.bluetooth {
       type bluetooth
       device 00:11:22:33:44:55
       profile "auto"
    pcm.bluetoothraw {
       type bluetooth
       device 00:11:22:33:44:55
    pcm.bluetooth {
        type plug
        slave {
            pcm bluetoothraw
  4. Install audacious.
  5. Start up audacious. Right-click and select Preferences > Audio > Current Output Plugin > ALSA Output Plugin.
  6. Click Output Plugin Preferences, then under Device settings > Audio device enter "bluetoothraw".
  7. Turn on headset if not already on.
  8. Start playing!


New & Noteworthy: Marketing Your Hard Work

There's been a lot of talk lately in cross-project-issues-dev@ (search for "must-do") about the relative merits of having a set of enforced rules for participation in the annual release train.

If you'd like to void an opinion, here's a poll.

Re: the requirement for more frequently updated New & Noteworthy documents, I'm amazed how many people object to being told they need to better market their projects. Really, that's all a N&N is -- a digest of what's important to convince people to upgrade to your latest efforts. (In Modeling we employ a mix of manually created copy & screenshots w/ automatically-generated lists of bugs closed by milestone, release or individual build.)

If project leaders & committers don't see value in writing marketing copy to showcase their efforts, then why do their employers see fit to pay for marketing/branding/sales people to sell their products? Given that sales people are driven by dollars, would they bother if it didn't work?

Bottom line: Believe in what you do, trust that it has value, and talk it up once in a while. Sure, it's effort, but it's worth it.


Closed for maintenance? Really?

Went to finally update my LinkedIn profile to reflect last month's change of employer, and I got this:

Why do sites still think it's acceptable policy to shut down for maintenance? I'd hoped that practice had become taboo ages ago, along with the <blink> tag.


xorg.conf: Fedora edition

After installing a Fedora 10 preview spin on my new Thinkpad X200 last week, I got to learn yet another way to generate and test an /etc/X11/xorg.conf file. Every time I upgrade my OS, my xorg.conf file gets simpler. I expect one day I won't need one at all!

Where in the past for *ubuntu I've used dpkg-reconfigure -phigh xserver-xorg, with Fedora I needed to discover a new way. Here's what I did.

  1. First, run man startx to see a sample /root/.xinitrc file
  2. Next, create a /root/.xinitrc file
     xrdb -load $HOME/.Xresources
     xsetroot -solid gray &
     xclock -g 50x50-0+0 -bw 0 &
     xload -g 50x50-50+0 -bw 0 &
     xterm -g 80x24+0-0 &
     screenruler &
  3. To generate a new config file, you can run:
     startx -- :2 -configure
  4. To test a given config file (other than the default, /etc/X11/xorg.conf):
     startx -- :2 -config /root/

The above steps let you be booted graphically @ default resolution, then switch to another vt (CTRL-ALT-F2, for example), log in, and try a new xorg.conf on a different video port without affecting your running instance. To kill a trial X, use CTRL-ALT-BkSp. To switch from vt2 to the existing graphical instance, use CTRL-ALT-F1 or CTRL-ALT-F7 (it should be on vt1 or vt7).

Once I was statisfied that the xorg.conf file worked, I rebooted. On restart, using xfce or gnome, I can now graphically switch from laptop @ 1280x800 to 24" external monitor @ 1600x1200, or run both screens at 1024x768, eg., for presentations.


Request For Comment: The End Of SDO?

Four months ago, I started a discussion about simplifying the EMF download experience. Consensus appears to be that we should keep the EMF-SDO-XSD "All-in-one" SDK zip, perhaps more.

Now, a new proposal is in the works: removing SDO from the EMF build, and from this year's coordinated release, Galileo. The source would still be in CVS, but we'd stop providing SDO binaries. This would also mean the much-loved* EMF-SDO-XSD "All-in-one" SDK zip would be renamed to EMF-XSD "All-in-one" SDK, but would otherwise continue as is.

For more on this topic see:

EMF 2.5 - Simplified Downloads (bug 240223)
Remove SDO from Galileo (bug 251402)
Consider improvements to the termination process (bug 249408)

To voice your opinion, please post your feedback in any or all of the three bugs linked above.



50,000 Zips

Since turning on Google Analytics for tracking Modeling project zips on September 15, we've gotten over 50,000 pageviews (33,000 unique) of the download tracker. While this doesn't necessarily mean every one of those hits resulted in a download, it certainly shows a lot of interest in downloading EMF, UML2, UML2 Tools, GMF, Query, OCL, and XSD, to name but a few of the more than two dozen Modeling Project components.

Unfortunately, this only scratches the surface -- most of our downloads come from EPP bundles and update sites. But thanks to bug 239668, we will one day be able to track downloads done via p2. If download stats interest you, please vote for bug 239668.

Eclipse Photoshop Challenge: "Better Than MovieOS"

Back in June, we ran a contest to challenge the Eclipse community to photoshop some movie-themed posters to promote Ganymede.

This time, I'd like to propose a different challenge.

  • What: An opportunity to show your Photoshoppin' / GIMPin' skillz. Top five community-voted submissions will win Eclipse schwag.
  • When: Now through mid-November.
  • Why: Because Eclipse is better than MovieOS.
  • Who: Anyone with some free time to burn.
  • Where: On your blog, or attached to bug 252135.

So, what should you design? The rules are simple. Take a still frame from a movie or TV show, and replace the MovieOS with a screenshot of an Eclipse IDE running your favourite plugins, an RCP or SWT application, or even a mobile OSGi app.

Some links to get you started:

Some examples:


Password management with ccrypt

About ccrypt

For the past few years, the list of passwords I use for all the various websites, servers, and applications has been growing ever longer. Some people limit themselves to 3-4 passwords, or a handful of formulas for password generation. I used to do that, but it's insecure, and when you control the fate of numerous servers, it's irresponsible. These day, I generally create new passwords at random, and replace them every 3-4 months.

Every flavour of linux has its own system for managing passwords; for example, KDE has KWallet; Gnome has Keyring. Tuesday I started playing with Fedora for the first time in years, and discovered yet another way: System > Preferences > System > Authorizations (polkit-gnome-authorization). And, of course, even Mozilla (Firefox, Thunderbird) handles password management like this... but each application has its own repository, and each one will get out of sync in time.

So, for a password management system that doesn't care about window manager, application, or even OS (this works with under cygwin on Windows, too), I've designed my own method.

How do you remember 100s of passwords which have nothing in common? Store them in a database, encrypted by a passphrase/password, then use a simple query engine to retrieve them.

Here's how it works, and how you can set up something similar.

Home Server / CVS Server

First, define these 3 scripts.

  1. /home/user/passwds/
  2. #!/bin/bash
    mkdir -p $dir;
    echo -n "Retrieve latest? [y/N] "; read yn;
    if [[ $yn == "y" ]]; then
     scp user@home-server:$dir/passwds.cpt $dir
  3. /home/user/passwds/
  4. #!/bin/bash
    ccrypt -c $file | grep -i "$1";
  5. /home/user/passwds/
  6. #!/bin/bash
    ccrypt -d $file.cpt; vi $file; ccrypt -e $file

Next, define 2 aliases -- one for password lookup, and one to modify the encrypted password file. I use ~/.alias, which I load as part of my ~/.bashrc file.

  1. /home/user/.alias
  2. alias PW='/home/user/passwds/ $1'
    alias PWE='~/PWDs/'

Now, on the home server, I can run `PW eclipse` to decrypt the file, look up any lines in the password file with "eclipse" in them, and return those entries to me. Or, I can run `PW | more` by itself to display the entire file (paged with `more`). To modify the file, I use `PWE` to decrypt, edit, and re-encrypt the file. I also periodically save this file into my CVS repository (cvs add -kb passwds.cpt; cvs ci -m "" passwds.cpt) so I can track changes.

Remote Client(s) / Other Servers

Well, you think, that's great for a single system, but I need my passwords on 3 or 4 different systems. Plus, my home server may or may not always be accessible (eg., only when I'm on my home network).

So, once again, we start with the same three bash scripts.

Next, define a different version of the `PW` alias:

  1. /home/user/.alias
  2. alias PW='/home/user/passwds/;/home/user/passwds/ $1'

Now, on any other server which can reach the home server over ssh, `PW eclipse` can be used to (optionally) retrieve the latest version of the password file, then search it as in the example above. Can't reach the home server? That's fine, we keep a local cache of the encrypted password file -- good enough until the next synch.

Voila! Centralized encrypted password management for Windows & Linux clients!

About ccrypt

So, what handles the encryption, and how secure is it?

ccrypt is based on the Rijndael block cipher, which was also chosen by the U.S. government as the Advanced Encryption Standard (AES, see This cipher is believed to provide very strong cryptographic security.


If your linux or cygwin distro doesn't include ccrypt in its repositories, here are a couple places you can find it:


Beyond CVS 0.8 Released!

The Beyond CVS project would like to announce the release of version 0.8.2, which includes the following updates & new or improved features:

  • Support for Beyond Compare 3, including 3-way compares & merges
  • Improved support under Linux, thanks to BC3's native client which no longer requires WINE
  • Improved integration in the Synchronize view
  • More Compare With options (local history, repository history)
  • Repository Folder compares
  • Support for the latest Eclipse 3.4.1 CVS plugins
  • Support for the latest Subversive 0.7.4 SVN plugins
  • Support for the latest Subclipse 1.4.4 SVN plugins


And Don't It Make Your Blue Eyes Red

Today I resigned from IBM to join Red Hat Canada as their new Productization Lead for JBoss Tools and JBoss Developer Studio, working with Max R Andersen, Rodney Russ, and Andrew Overholt. Yet more release engineering? Oh, hells yeah.

So, because it's been nine great years, and because I'm a mathie from way back, I'd like to present...

IBM By The Numbers

  • Number of Jobs Within IBM: 3
  • Number of Thinkpads Used: 4 (770, T23, T40, T60p)
  • Versions of Desktop Windows Used: 3 (NT4, 2K, XP)
  • Versions of Desktop Windows Anti-Virus & Firewall Software Used: 6
  • Versions of Desktop Linux Used: 3 (MEPIS 3.x, MEPIS 6, AntiX 7)
  • Versions of Desktop Linux Anti-Virus & Firewall Software Used: 0 (suck it, Windows!)

  • Memorable Website Launches While at IBM Global Services: 7+
  • Memorable Applications Built While at 7+
  • Memorable Open Source Software Releases While at IBM Rational: 30 in 5 years (EMF 2.0-2.4 = 5, UML2 1.0-2.1 = 4, OCL & EMF-QTV 1.0-1.2 = 12, JET 0.7-0.9 = 3, EODM 0.7-0.9 = 3, GEF 3.3.2-3.4 = 2, GMF 2.1 = 1)

  • Supported Modeling Builds in 1Q2004: 1 (EMF)
  • Supported Modeling Builds in 4Q2008: 22 (EMF x 7, EMFT x 5, MDT x 3, M2T x 3, M2M x 2, GMF x 1, TMF x 1)
  • Other Builds in 4Q2008: 3 (GEF, PDT)

  • Number of Eclipse Project Committerships in 1Q2004: 3 (EMF, SDO, XSD)
  • Number of Eclipse Project Committerships in 4Q2008: 25 (EMF x 8, EMFT x 6, MDT x 5, M2T, M2M, GMF, GEF, SOC, Dash)
    (Note: some projects define releng committership separately from project committership.)

And now, to get the other side of the brain fired up, I leave you with my version of...

Fall Out Boy - Thnks Fr Th Mmrs

Another build will bend and break
(But it's an easy fix, these things)
Automate, yeah let the crontab roll
In case ya don't wanna show
(Let the crontab roll, let the crontab roll)

And I want these words to make things right
Avoid any wrongs, and keep Modeling alive
Empower EMF
So after a brief break,
Gonna put my fingers back to the keys

Nine years, one helluva time
Thanks for the memories
Thick and thin, they've been so great
Workin' for the Big Blue leader

Nine years, yeah and one more time
Thanks for the memories
Thanks for the memories
With two woof'rs who needs a tweeter? Ohhh!

Been looking forward to the future
But my eyesight is going bad
Must be the late nights
It's always cloudy except for (except for)
When you look into the past (look into the past)
Nine whole years. (Nine whole years, now!)

Three jobs within Big Blue
Thanks for the memories
Websites, apps and FOSS
Wonder what became of Peter?

Nine years, yeah one more time
Thanks for the memories
Thanks for the memories
O'en source always tastes a bit sweeter

(They say) I only think in the form of crunching numbers
Up late at night, exploring six-gig log files
Goin' out of my mind
Runnin' out of disk space
I'm a line away
From getting it all to work! Woo!

(In) AD 2101
Captain say 'what happen ?'
Operator: 'we get signal'
Mech: 'Someone set us up the bomb.'

Main screen turn on. It's you !!
How are you gentlemen !!
No chance, yeah make your time
You, are on the way to destruction. Ohhh!

Nine years, it's been a slice (had a blast, one more time)
Thanks for the memories
Addicted to Eclipse now (can't get enough Eclipse now)
But what still sucks? That'd be features!

Nine years, yeah and one more time (been great years, one more time)
Thanks for the memories (for the memories)
Thanks for the memories (for the memories)
Time on Sprockets to dance vith Dieter! Ohhh!


From DVD to online Flash video with dvd::rip, FFmpeg, and JW FLV player

Last week I set myself the task of finally figuring out how to convert a DVD to Flash video, then to post it online. Turns out with the latest xubuntu 8.04, dvd::rip, FFmpeg, and the JW FLV player, it's quite straightforward.

Step 1: Convert a DVD to AVI file (.avi)

After a number of tests with dvd:rip 0.98.6 (installed .deb version: 1:0.98.6-0.0ubuntu1) and transcode 1.0.2 (installed .deb version: 2:1.0.2-0.8ubuntu7), I've settled on this configuration:

  • On the fly
Clip & Zoom
  • Autoadjust or No modifications (original size)
  • Activated for rendering
Transcode - Video
  • AVI/Xvid, 50 keyframes,29.97 video framerate
  • Single pass encoding, no deinterlacing
  • 1 x 850M (for 2hr DVD track)
Transcode - Audio
  • MP3 audio @ 128 kbit/s x 44100 Hz (required for .flv conversion)
  • Quality 2
  • Nice 0 or 19
  • No PSU core

I managed to rip a 2hr DVD track in about 4 hrs, resulting in an 850M AVI file. This was using my new Samsung 20X USB DVD-RW drive (TSSTcorp CDDVDW SE-S204N), writing to my Western Digital 160G USB bus-powered hard drive. Considering USB to USB read-and-write tends to be slow, I'd consider this pretty good performance, especially for a 1.6GHz machine with only 1.2Gb of RAM.

Here's the resulting .dvdrip-info file:

Step 2: Convert an AVI file (.avi) to Flash Video (.flv)

The next step is to convert your .avi to .flv using FFmpeg (installed .deb version: 3:0.cvs20070307-5ubuntu7.1+medibuntu1). There are lots of config options for this, but the simplest is this, where file types is determined from the input and output filenames. If your input file includes MP3 audio @ 128 kbit/s x 44100 Hz, you'll be able to convert to Flash Video (.flv):

ffmpeg -i input.avi output.flv

Step 3: Streaming Online

Finally, to post the video online, you can upload host it on your own site using the JW FLV Player. The site includes tons of examples including this one for creating a player with chapter, thumbnails, and decriptions. In addition to video, the player also works with audio files and still images, and can be skinned a number of different ways.


And the plan said...

With everyone's standardized project plans due next week, I've been tasked to draft a consistent workflow for the Modeling projects. And because we're such Model Citizens, I'd like to share it with others, in case this approach works for your project too. See details here.

On that note...

And the plan said usability, motherhood, apple pie
So I shined up my Chrome
Logged into the Bugz and I went in to run a query
It came back with a list of items, too many to possibly do
So I flagged a few, set milestones, and voom!
A plan came into view


Plan, plan everywhere a plan
Charting out development, done for The Man
Do this, can't do that, did you read the plan?

And the plan said a lot of these
Have been deferred outta sight
So I looked at those bugs and thought to myself,
Hey! I'll submit a patch tonight
To contribute to this project or to get some new feature in
If God was here, he'd tell you to your face,
Thanks, man you're some kinda winner


Now, hey you Mister! Can't you read?
You ain't got to be a committer to get a seat
You can write a patch, or build a new feature,
Ain't supposed to be hard
Plan says anyone can contribute,
Just look for the 'helpwanted' keyword!

And the plan said everybody welcome
Come in, site down and code
But when they passed around the hat
At the end of it all,
I didn't have a buck to unload
So I got me an account with Blogger
And I made up my own little site
I said thank you Eclipse for thinking about me,
I'm alive and you're alright

Chorus x 2

Five Man Electrical Band - Signs

Incidentally, there are over 2500 open 'helpwanted' bugs, with over 1100 closed. Thanks to everyone who's contributed over the years!



Last month I complained that Twitter's XMPP service for tweeting by IM has been down for a while.

Tonight, I noticed that the "we're working to restore service" blurb is gone from their site (but as Opal suggested, there's no mention of it ever having existed in their list of changes). Way to rewrite history!

I also noticed it's been a lot longer than I thought since the daemon was online:

RIP, You will be missed.


Kiva: Turning a little change into a lot

Back in June, during the Ganymede Poster Contest, Benjamin Cabé introduced me to Kiva Microfunds, a company that connects lenders w/ entrepreneurs in the third world, so that they can start or grow their business, and improve their quality of life.

Kiva - loans that change lives

Now, Kiva stands a chance to win $1.5 million dollars from American Express, which they can parlay into $30 million dollars to support 60,000 entrepreneurs around the world. If you're an AMEX cardholder, you can help by voting for this project. You can of course also help by using Kiva to lend some money to one or more entrepreneurs listed on their site.


Savimize? Er, no.

Nearly every I get spam from Rogers or Bell, trying in vain to make me switch to their service. It's in vain because a) I'm already with Rogers, so they're wasting their time trying to get me to sign up for services I already have, and b) I won't go back to Bell because the phone lines (and thus DSL rates) in this neighbourhood are teh suck.

But wast of paper and postage aside, let's contrast the two current promotions they're running, both trying to be clever with language... and failing.

Bell recently unveiled what I like to call its "sucki-er" campaign, with numerous print and billboard ads all including the suffix "-er" in the copy. Better, faster, beaver... you name it, they've gone superlative on it. Why does it suck? Because let's be real. Better is entirely subjective. Faster can be measured, and at least in my part of Toronto, it's not. This campaign makes me long for their now famous beaver campaign, because at least it was creative.

Meanwhile, in response, Rogers has unveiled its "invent a new word" campaign, which I find frankly insulting. If there was another cable provider I could turn to, I'd consider switching just because of this bit of lameness.

Recently Rogers has started telling everyone they're faster (but refuses to release details). Lame. This new campaign? Lamer.


915resolution + xorg.conf = Intel 82852/855GM @ 1600x1200x60Hz

Last week I ordered a new Sceptre 24" monitor from, and this week it arrived, only a few days later. Zero dead pixels, works perfectly -- and the current website price is 22% more! Timing is everything, apparently.

Of course setting up my laptops to play nice with it was another story, but for my Thinkpad T60p, I've managed to get a single display using aticonfig:

aticonfig --initial=dual-head -f
aticonfig --dtop=horizontal --overlay-on=1 --mode2=1920x1200 \
 --resolution=0,1920x1200,1600x1200,1400x1050,1280x1024,1024x768 \

Granted, I don't have both the laptop and monitor enabled at the moment, but that's probably because I'm trying to push the laptop screen to a res it can't support (1600x1200). I could probably get them to both go to 1400x1050, but so far I'm happy w/ the single screen.

Anyway, the harder project was getting my wife's old R51 to connect to the Sceptre X24, for two reasons: one, its screen is all but dead (still works, but it's as if it's set to a brightness level of 2%); and two, the automatic configuration in Xubuntu kinda sucks for xorg.conf creation.

After a number of searches, attempts, and failures, I finally found a way to push the Intel 82852/855GM (rev 02) card to 1600x1200 at 60Hz. Here's how:

First, install 915resolution 0.5.3-1ubuntu1 from the ubuntu universe repositories. I tried downloading drivers from Intel, but I couldn't compile anything -- xf86-video-intel-2.4.2.tar.bz2, i915Graphics.tar.gz, drm.tar.gz or mesa.tar.gz -- missing dependencies, apparently.

Next, read the README that comes with 915resolution, /usr/share/doc/915resolution/README.Debian. It explains exactly how to use this tool. Here's what I put in my /etc/default/915resolution file:


Next, in your xorg.conf, set the Driver to "i810", set the BusID to the value shown by lspci | grep VGA, set HorizSync & VertRefresh to values that will work for your monitor, and then add Display subsections for all the resolutions you want to try to use.

Section "Device"
       Identifier      "Intel Corporation Mobile Integrated Graphics Controller"
       Driver          "i810"
       BusID           "PCI:0:2:0"
       Option "DevicePresence" "true"
       Option "DRI"      "true"

Section "Monitor"
 Identifier "Configured Monitor"
 ModelName    "Sceptre X24"
        HorizSync    31 - 80
        VertRefresh  55 - 76
        Option      "DPMS" "true"

Section "Screen"
       Identifier      "Default Screen"
       Device          "Intel Corporation Mobile Integrated Graphics Controller"
       Monitor         "Configured Monitor"
       DefaultDepth    16
       SubSection "Display"
               Depth           16
               Modes           "1920x1440_60" "1920x1200_60" "1920x1080_60" "1680x1050_59.883" "1360x768_59.8" "1600x1200_60" 
       SubSection "Display"
               Depth           24
               Modes           "1920x1440_60" "1920x1200_60" "1920x1080_60" "1680x1050_59.883" "1360x768_59.8" "1600x1200_60" 

Note that the most useful thing I managed to find was how to explicitly set display frequencies: for 1600x1200 at 60Hz, use "1600x1200_60". (This was required because xubuntu by default was trying to run at 59Hz and was creating terrible ghosting effects.)

To test out the above configuration, I wrote this little script (based on ideas here):

# start a new X session on head :5, fire an xterm, and 
# launch kruler to measure screen res
# switch between vt sessions with CTRL-ALT-Fx, 
# eg., for vt2, CTRL-ALT-F2.
# I found this new vt with CTRL-ALT-F9
X -novtswitch :5 & xterm -display :5 & kruler -display :5 &

Now, granted, I still can't get 1920x1200x60Hz (the monitor's native resolution), but I may have found a solution: Tritton TRIUV200 See2 Xtreme USB 2.0 to DVI/VGA adapter.

Anyway, using a Kinamax KVM-USB4 USB 4 Port KVM Switch, I've got two laptops sharing the 24" 1600x1200 screen, with room to add up to two more systems. Minimal desktop clutter, maximum productivity.

Now, if I can just figure out a solution to my wife's workspace clutter...


Do want... a better copywriter!

I want?
Bad lol.
lolcats funny cat pictures
Good lol.


Windows XP in Xubuntu with VirtualBox: Aw, snap!

This weekend, on a tip from CDT Doug, I decided to play around with VirtualBox, because there's still a few things I can't do in Linux. I've tried VMware in the past, but the last time I found NAT networking to be a pain to set up. By contrast, VirtualBox is great for drivers and hardware, but getting file sharing to work took some effort. Just make sure you install the VirtualBox Guest Additions into your guest OS, and you'll have video, sound, usb, networking, and sharing.

So, what prompted this? Well...

  1. I can load pages in IE6 or IE7, thanks to WINE and great work of the IESs 4 Linux project... but support for IE7 is still beta, and it's a little slow.
  2. I can run Picasa, also thanks to WINE. The latest version even works properly with Picasa Web Albums and Blogger.
  3. I can open and edit MS Office docs, thanks to OpenOffice (or Google Docs).


  1. I can't run Quicken or QuickTax (ranked bronze or garbage by WineHQ's AppDB).
  2. I can't run iTunes.
  3. I can't run Google Chrome.
  4. I can't run SBCG4AP, or any Windows-only games from Popcap or Gamehouse.

So, it was time to get virtual. I created an 8Gb Win XP Home image, with 192Mb of RAM, running inside my 1.6Ghz, 1.25Gb RAM Thinkpad R51 Xubuntu laptop, and it works great. I can run Chrome, iTunes, Quicken, and at least one GameHouse game. Note that in this screenshot (top right corner), the CPU has clocked itself down to a whopping 600MHz using kpowersave's Powersave scheme and Dynamic CPU policy. You'll also notice I changed the default 'Right Control Key' mouse/keyboard grab toggle to 'Left Windows Key' because that way I don't have to use my right hand to switch from the main desktop to the virtual one.

Unfortunately, SBCG4AP won't start due to this error:

When trying to get a copy of the Win XP Power Toys Tweak UI control panel applet, I managed to kill Chrome, and got this for my collection.

Finally, let me show one last feature of VirtualBox: "seamless mode". With this enabled, you can blend XP apps right into your linux desktop. They're still managed by the Windows Start menu (which I've set to auto-hide in the shot below), and tend to force themselves to be above other linux-managed windows, but it provides an uncluttered way to work, if you prefer it.