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

2009-04-30

Behaviour Modification

Dave Carver's been talking a lot about Scrum, XP, and the EDP and where the suck is.

His latest post contains "in Pictures" in the title, but contains no pictures. So, with tongue planted firmly in cheek, here's one:


Image borrowed from basicinstructions.net

2009-04-29

Vacation Planning / Process Modeling

This summer I'm attending the wedding of two friends in Victoria, BC. So, since we're travelling across the country anyway, we're going to take some time to explore Vancouver Island a little.

And because I'm a total Eclipse fanboy (despite the fact that certain people tell me Eclipse is dead), I thought it was time to play with the BPMN Modeler again. Version 1.0.2 (for Eclipse 3.4 / Ganymede) just came out today (update site).

So here's me planning the trip:

Aside: Wondering what's in Telegraph Cove? Check this out.

It may not have the same graphical wow factor as, say, Google Maps' "My Maps" feature...

... but it does clearly show two things:

a) the BPMN Modeler is stable and works great for modeling my workflows, regardless of whether I intend to do anything programmatic w/ the resulting diagram, and

b) air fare and car rentals cost too much. :)

I also tried out the in-progress BPMN Modeler 1.1M6, and while it adds some cool features to help align items in your swimlanes, it's also not quite ready for prime-time use. Looking forward to 1.1M7 next month.

Who says modeling can't be fun?

2009-04-18

All I really want is builds

With April 20 just around the corner, it's time to get ill... but first, something completely different.

Builds, all I really want is builds
And in the morning it's builds
'Cause in the evening it's builds

I like the way that they run
And when they're green they're so much fun
And I can always make 'em smile
Fetch all their sources and compile

Back in the day
There was this project 'round the way
It had no build system per se
But they kept codin', come what may

I asked them, "Please?" they said, "You may."
Their code was tight and that's ok
If they would code I'd be R.E.
And now it runs on build-dot-E

I hope you'll say, "Hey, me and you should try Athe-
na, more to come, but under way!"
We really need a website, eh?
For now slides, code, and the wi-kay

We'll move to Git when it's read-ay
But that won't be before this May
So get yourself a build today
Without the ol' P-D-E dismay

Builds - to do the fetchin'
Builds - do the compilin'
Builds - to do the testin'
Builds - and zipped-up filin'
Builds, that's all I really want is builds
Early adopters they want builds
In next-gen Hudson they want builds
Signed, packed, p2 repos...
Builds, builds, builds, builds, builds!

NOTE: Normally the artist name below links to the video on YouTube, but there's no official one, and everything else I found (school projects, Lego animation, stick figures, slideshows) were either incomplete, incorrect, or potentially NSFW. YMMV.

Beastie Boys - Girls

2009-04-13

Flex + RSS + Onion = FAIL

2009-04-10

SQL Tribbles ]|[


When good conference sites go bad.

2009-04-02

Using EasyAnt with Ivy to fetch latest compile-time and run-time dependencies

Just started playing with Ivy and EasyAnt today.

Here's a quick guide to getting started with multi-module Ant builds (because the EasyAnt Examples documentation is incomplete). This also demonstrates Ivy's ability to pull the latest version of a dependency from a repository. (And I get to finally try out Alex Gorbatchev's SyntaxHighlighter.)

1. Download:

wget http://www.easyant.org/trac/downloads/5 -O /tmp/easyant-0.5-beta1-full.zip

2. Install as root, usable by all:

sudo su; 
unzip /tmp/easyant-0.5-beta1-full.zip -d /opt/easyant-0.5-beta1; \
cd /opt/easyant-0.5-beta1; \
mkdir modules repository cache; \
chmod -R g+rw *; chgrp -R users *; \
exit

3. Compile multi-module example's core jar:

export EASYANT_HOME=/opt/easyant-0.5-beta1; \
cd /opt/easyant-0.5-beta1/example/example-multimodule/example-core; \
$EASYANT_HOME/bin/easyant -p; \
$EASYANT_HOME/bin/easyant

4. Verify compiled jar:

unzip -l /opt/easyant-0.5-beta1/example/example-multimodule/example-core/target/artifacts/example-core.jar

5. Publish jar:

$EASYANT_HOME/bin/easyant repo-management:install-artifact -Dorg=org.apache.easyant \
  -Dmodule=example-core -Drev=0.1 -Dartifact=target/artifacts/example-core.jar \
  -Dinstall.override=true -Dto.resolver=local

6. Verify published:

unzip -l /opt/easyant-0.5-beta1/repository/org.apache.easyant/example-core/0.1/example-core.jar; \
cat /opt/easyant-0.5-beta1/repository/org.apache.easyant/example-core/0.1/example-core.ivy
<ivy-module version="1.0">
    <info organisation="org.apache.easyant" module="example-core" revision="0.1"/>
</ivy-module>

7. Compile multi-module example's Hello World jar:

cd /opt/easyant-0.5-beta1/example/example-multimodule/example-hello-world; $EASYANT_HOME/bin/easyant

8. Verify compiled jar:

unzip -l /opt/easyant-0.5-beta1/example/example-multimodule/example-hello-world/target/artifacts/example-hello-world.jar

8. Run Hello World app:

cd /opt/easyant-0.5-beta1/example/example-multimodule/example-hello-world; $EASYANT_HOME/bin/easyant run:run
...
run:run:
     [java] Hello World !

BUILD SUCCESSFUL
Total time: 2 seconds

9. Now, recompile the core jar, republish it as 0.2, then recompile the Hello World jar. Verify that the Hello World compilation used the newer 0.2 version instead.

cd /opt/easyant-0.5-beta1/example/example-multimodule/example-core; $EASYANT_HOME/bin/easyant; \
$EASYANT_HOME/bin/easyant repo-management:install-artifact -Dorg=org.apache.easyant \
  -Dmodule=example-core -Drev=0.2 -Dartifact=target/artifacts/example-core.jar \
  -Dinstall.override=true -Dto.resolver=local; unzip -l \
/opt/easyant-0.5-beta1/repository/org.apache.easyant/example-core/0.2/example-core.jar; \
cat /opt/easyant-0.5-beta1/repository/org.apache.easyant/example-core/0.2/example-core.ivy; \
cd /opt/easyant-0.5-beta1/example/example-multimodule/example-hello-world; \
$EASYANT_HOME/bin/easyant; $EASYANT_HOME/bin/easyant run:run
lib-resolve:
:: loading settings :: file = /opt/easyant-0.5-beta1/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: org.apache.easyant#example-hello-world;working@x2lappy
[ivy:resolve]  confs: [default, test]
[ivy:resolve]  found org.apache.easyant#example-core;0.2 in local
[ivy:resolve]  [0.2] org.apache.easyant#example-core;latest.revision
[ivy:resolve] :: resolution report :: resolve 30ms :: artifacts dl 1ms

PocketMac Runs IIS?

Apparently PocketMac, a sync tool for Mac / BlackBerry users, runs IIS for its website. Just not very well.

2009-04-01

Dash Athena: Epic Fail

Damn airport scanners.

On Sunday while I was flying home from EclipseCon, I decided to try out Git, and migrated the whole Dash CVS tree into a local Git repo. Then, I deleted the CVS stuff in dev.eclipse.org because Git is so much better and DVCS is the Way of the Future.

Unfortunately, somewhere between Calgary and Toronto, my hard drive died, taking with it the whole repo.

Since we now have to start over completely from scratch, Andrew and I have decided to take this opportunity to re-architect a few things:

  1. Instead of Ant scripts which wrap & simplify PDE, we're going to use perl scripts which wrap ant4eclipse. No one really cares about OSGi anymore anyway.

  2. Instead of being able to run a build in Eclipse, we're going to support running on MIDP devices only (smartphones) and older hardware (bug 260000). This will make builds much smaller and more portable for everyone.

  3. We're dropping the built-in support for running JUnit tests as part of an automated build, because the Agile way is to do Build Breakage Driven Development (BBDD) rather than TDD.

  4. Because the Hudson instance on build.eclipse.org is only accessible to an elite few (bug 270633), we're dropping that too, in favour of Cruise Control, much lauded by the WTP and Orbit dev teams for its friendly user interface and many extensible configuration options.

Should you have any concerns with this new plan, don't hesitate to post your comments here. We value the community's input, and will take your thoughts under advisement. Then ignore them and do what we want.

2009-03-30

Zimbra mail filters

Get too much mail? Don't we all. Here's how I filter it so it's more manageable. Log in. Click Preferences > Mail Filters. If you use Thunderbird, you can set tags and automatically move emails into IMAP folders. Then, just make sure the tags you've set exist in Thunderbird, and you'll get colourized, sorted mail.

EclipseCon '09: Y.A.R.R*

* Yet Another Retrospective Roundup

The highlights of this year's con for me include...

The rousing success that was our Dash Athena tutorial, in no small part thanks to Andrew O and Andrew N contributing heavily to the content, flow, and technical expertise. (I also credit a year's worth of improvements, refactorings and cross-platform testing on Mac OSX, WinXP and Linux, plus having a better UI story.) Thanks also to Barry Lafond for his invaluable assistance passing out USB keys and helping to get late-arrivers up to speed. For those that don't know Barry, he works on the Teiid Designer project at JBoss.org, which I'm going to have to look carefully at in future, to learn more about virtual databases.

I also caught a demo of the Eclipse Modeling Project's CDO thanks to Eike offering to give myself and Marcelo Paternostro a quick recap of his talk, which we both missed due to conflicts. Now that I'm split between the Eclipse and JBoss communities, CDO looks like a perfect way to help bridge these two arenas as it connects the Eclipse Modeling world with the JBoss Hibernate world - among other things. Now I just need to find a reason to use it, and time to adopt his new website for the rest of Modeling. :)

Despite the somewhat slower economy this year, it was great to see some old traditions were kept alive:

  • Getting gouged 150% of meter price by SFO cabbies
  • The $13 burger n' fries at the Hyatt bar
  • Sleeping in on Wednesday due to working/partying too hard for the first three nights
  • EclipseCon By The Numbers on the final day

Some traditions that were regrettably missing this year:

  • Watching Ed Merks talk about the stupidity of Modeling (though Peter Friese did an excellent job in his stead)
  • Attending BoFs - I missed all the BoFs I wanted to attend due to other distractions
  • Sneaking off for a swim on at least two afternoons of the con
  • Sneaking in to Ralph's 'European Committers Afterparty' to schmooze with the German and French modelers
  • The convenience of staying at the Hyatt (despite being charged $200/night + $10/day for wifi)
  • Buying a new WD MyBook USB hard drive at Microcenter (my bag was already too full of EclipseCon booty, and the offer of a free lift to SFO was just too good to pass up - thanks, Denis G!)

With a new year (and for me, a new team) comes the start of new traditions, such as:

  • Replacing plastic water bottles w/ glasses & water coolers
  • B.Y.O.B.S.T.E.D (and $50 in books for my Celebrity Cruises bag from Seward, Alaska, woo!)
  • Monday's 'Galileo' salad (everything in one dish)
  • Tweeting, tweeting, and more tweeting!
  • Fashion crime free committer shirts! No more denim, no more beige!
  • JBoss beer glasses (though unfortunately I set mine down to talk to Bernd Kolb about SAP possibly using Athena to build the Eclipse SDK, as after 3.4.2 IBM won't do it, and someone bussed it while I wasn't looking)
  • Skipping the EclipseCon-provided lunch on Thursday for an all-dressed 'Spicy Italian' from Subway + a 'Black + Blue' smoothie from World Wraps
  • Our post-Con LaserQuest soiree - winning the first game and getting decimated in the second game
  • Our post-Con planning meetings @ the Ramada ($70/night + free wifi), to better dialogue between the various teams in Moscow, Minsk, Beijing, Switzerland, Belgium, the US, and of course, Canada.
  • Designing the Captains Of Awesome jackets and JBoss Tools wordle shirts, thanks to Rob Stryker's idea and Max's help

One tradition started last year I had hoped to avoid was that of "bring a laptop to EclipseCon, go home with a wifiless brick". Last year I brought two Thinkpads, and had NO wifi from one and spotty wifi from the other, forcing me to switch from ubuntu to WinXP to get anything close to consistent performance. This year the wifi in my 6 month old Lenovo X200 just stopped working Thursday for no apparent reason, forcing me to surf by Blackberry for the past 3 days. Worse, I discovered that the Gmail app for Blackberry can't use wifi, so I'm stuck checking mail in the BB browser or paying roaming fees. Not cool, Google, not cool.

Beyond the actual talks - and there were several excellent sessions, including...

  • the first keynote (I missed the second one helping Rob set up my Thinkpad to do his WTP 3.1 demo as his hard drive was foo'd, and slept thru the third one),
  • the p2 & PDE sessions, showing that these projects are alive, well, and still moving forward
  • the Intro to JBDS 2.0 hands-on workshop with Jim and Rayme
  • this year's update on COLA, ECF, and shared editing
  • Koen's talk about the BPMN jungle

...for me EclipseCon is about connecting with people, putting faces to names and having a beer and a chat with someone you've worked with virtually. There are too many people to list, of course, but one highlight includes being able to thank Doug Satchwell in person for ShellEd. If you write bash, and you use Eclipse, chances are you use one of the various vi/vim plugins, EclipseColorer, or ShellEd. Three guesses which one I'd recommend. (If I promised you a pint at some point this year but failed to deliver this week, my apologies. Post a comment below or email me and I'll try to do a better job next year.)

I also enjoyed chatting up Oisin about STP and BPMN and expect to find myself helping out there in future w/ builds and testing, as I had occasion to do last year as we all put the finishing touches on Ganymede. Kudos too for his always entertaining tweets.

Finally, the greatest highlight - and honor - was of course being voted Top Ambassador by you, the community, placing me shoulder to shoulder with the likes of Mik Kersten and Tom Schindl, each great ambassadors for Eclipse as well. Thank you all for your support. I hope I can continue to entertain via this blog, educate via the Eclipse wiki, and facilitate via Dash your lives as committers, contributors, users, testers, early adopters, builders, and all the many other hats (Red or otherwise!) we get to wear in this wonderfully diverse ecosystem that is Eclipse.