
Last week I built up a Forrest package for Debian, and uploaded it to the incoming queue. Yesterday it was accepted in to the primary archive!
At the moment it's in Sid (ie. unstable), after 10 days it will flow down into Sarge (testing), for the next Debian release. :)

Finally updated my online photo collection to include some snaps taken from my recent trips to Ireland and Berlin. They were great trips! :)
Rasterman has put together a small tutorial demonstrating the power of the Enlightenment Evas backend library.
For example, here's 17 lines of source code for a simple DVD player:
#include <Evas.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Emotion.h>
int main(int argc, char **argv){
Evas_Object *video;
Ecore_Evas *ee;
ecore_evas_init();
ecore_evas_show(ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 800, 600));
video = emotion_object_add(ecore_evas_get(ee));
emotion_object_file_set(video, "dvd:/");
emotion_object_play_set(video, 1);
evas_object_resize(video, 800, 600);
evas_object_show(video);
ecore_main_loop_begin();
ecore_evas_shutdown();
}
Follow the wild code tutorial here :)

While updating my Debian notebook's Linux kernel today, I found out that starting with Kernel 2.6.8 the Bluetooth subsystem comes with HID support available by default. After loading the hidp module, I was able to use the hidd utility which is part of the bluez-utils package to connect directly to my Bluetooth Mouse and use it under X.
Works really well, and also handles the reconnects the mouse sends to my notebook after disconnecting due to inactivity.
(note, for older kernels there's an alternative driver which I've used in the past available here)

The Eclipse party continues! 3.1M1 has been released.
New and noteworthy items include Ant 1.6.2 support, Java 1.5 development and debugging support, amongst more!

Spent a few hours this afternoon assembling a model F-14 Tomcat that I bought a few weeks ago. So far the cockpit and most of the fuselage is done, the undercarriage, tail, and weapons decking still needs to be done, along with the transfers.
In total the model will be about 25cm long when it's finished, and consists of 84 pieces. Some of them so small it's almost like surgery trying to affix them.
I haven't built any models since I was a kid, so it's been a lot of fun to get back into it and put together my favourite fighter aircaft :)

Erich Gamma and Kent Beck have written a graphical object explorer plugin for Eclipse, which is available at the Javaspider site.
Above is an example of how you can interactively inspect the structure of a running application, in this case, Eclipse itself and it's plugin registry.
This is really useful when browsing/debugging large and complex data structures, and it reminds me of a similar feature in DDD that I use to use a lot at University when debugging C/C++ applications.

After a bit of a chat on the #maven codehaus.org irc channel I came across the Mevenide project (sp. mistake is intended :) ) which looks really promising.
At http://mevenide.codehaus.org/release/eclipse/update/site.xml you can download the Mevenide plugin for Eclipse which adds support for Maven projects, POM editing via a GUI (similar to plugin.xml editing), Jelly file editing (with content assist), and a set of Wizards for generating project.xml, etc, files.
Certainly makes it easier to work with Maven built projects from inside of Eclipse.

Finally found some time to update my Debian home page, including a brief description of how to get Debian Sid installed on a Dell Inspiron 8500 system. I've still got a lot more to write about, but at least it's a start. :)
While I was at it, I also went ahead and created a Debian package for Forrest, which should be entering the main Debian archive soon now!
Have just contibuted a patch to Eclipse Bugzilla that adds support for exporting to compressed and uncompressed tar files in Eclipse. This is alongside a previous patch I submitted a week back that allows you to import from them as well.
The extension mechanism in Eclipse is quite powerful, all I had to do was extend the Import and Export Wizards extension points and implement a few interfaces. Luckily in my case there was a similar example already available (Zip import/export) - so, according to the Eclipse House Rule "monkey see/monkey do", it was a bit easier than expected :)
At least now we've got better tar file support in Eclipse :)
The Eclipse core makes use of the Adapter Pattern (GOF) in a really interesting way to allow for further extensions to core interfaces without requiring recompiles, or interface extension bloat. You can add new functionality to implementors of existing interfaces without having to modify every derivative type in and outside of Eclipse.
The idea is that you create an interface IAdaptable:
public interface IAdaptable {
Object getAdapter(Class adapter);
}
and have your application interfaces extend it, eg:
public interface IProcess extends IAdaptable { // ... IProcess interface method declarations }
You then go ahead and write your normal functionality.
With this in place, lets see how in the future the Adapter pattern allows us to extend new functionality into the IProcess interface. Let's create a concrete Adapter implementation:
public interface SuspendableProcess {
void suspend();
}
public class SuspendableProcessImpl implements SuspendableProcess {
public SuspendableProcessImpl(IProcess process) {
this.process = process;
}
public void suspend() {
// implementation to suspend the process....
}
}
All that's required now is the implementation of the getAdapter() method on IProcess.
A simple implementation could be:
public Object getAdapter(Class adapter) {
if (adapter.equals(SuspendableProcess.class) {
return new SuspendableProcessImpl(this);
}
return null; // or pass it to a super implementation
}
Clients can then get access to the new functionality by doing the following:
IProcess process = .... // retrieve reference to process instance SuspendableProcess suspendable = (SuspendableProcess) process.getAdapter(SuspendableProcess.class); suspendable.suspend();
Nice - we've added new functionality to the IProcess interface without having to modify all classes that implement it.
All is not yet finished, the getAdapter() method isn't quite production ready, to add new Adapters we still have to modify the getAdapter() method to define concrete types which requires recompiling all the time. Eclipse uses the concept of an AdapterFactory to solve this, eg:
public interface IAdapterFactory {
Class[] getAdapterList();
Object getAdapter(Object adaptableObject, Class adapterType);
}
and an AdapterManager to register factories as adapters for particular interfaces, eg:
IAdapterManager manager = Platform.getAdapterManager(); manager.registerAdapters(new SuspendableProcessAdapterFactory(), IProcess.class);
This lets us have a generic IProcess.getAdapter() implementation that simply passes the request for the adapter to the manager to fulfill.
Quite cool stuff :)
public class World {
public void hello() {
System.out.println(
"
"
);
}
public static void main(String[] args) {
new World().hello();
}
}

So, thanks to Mariano, after a few weeks reading the Eclipse Plugin book, I'm pleased to announce my first Eclipse plugin - TarImport :)
Essentially, TarImport allows you to import data into your Eclipse session from a Tar file (uncompressed, or gz/bz2 compressed). I missed this functionality as generally under Linux, files are distributed as compressed tar archives, and up till now Eclipse only supported import from Zip files.
I've submitted the plugin for general inclusion into Eclipse - so hopefully with a bit more work it will be generally available. For now if you want it, you can get it from Eclipse Bugzilla. Simply unzip the file into your Eclipse installation, after restarting you should be able to select 'Tar File' from the types listed in the Import menu.
It's my first plugin so go easy :) but all feedback, ideas, patches, etc, are really appreciated. Next on the list is tar export.
Hope it's useful :)
Well, Summer has finally hit Frankfurt, the past few weeks have been really hot and humid which has been great. Low to mid 30s, sunny, blue skies with some passing thunderstorms have made for some quite nice evenings. Once more, I had to bring the electric fan down from the attic to keep the apartment cooler at night :)
This kind of weather sometimes makes me miss some 'Australian summer' things from home too... outdoor barbecues, day-night one day cricket matches, early morning and sunset surfing, summer clubbing, and enjoying a glass of scotch with my dad on the back patio.
Like many things you have to miss them to treasure them, but this means next time they happen, you enjoy them ever so much more.
So, bring on more of the summer heat in Frankfurt :)