I’ currently thinking about a backup strategy for my linux server. I have several subversion repositories und home directories with imap maildirs that I definately don’t want to loose in case my server disc crashes. Actually I have been very lucky so far with not backing up most of my data for years. Maybe that’s why I feel, that I have to do something in that area.

Anyway, I have about 1-2GB of data, most of which doesn’t change a lot, but it should be stored daily. I’am looking for some kind of network backup solution for storing backups on my workstation or friends’ servers on a VPN. While searching, I came across DIBS: Distributed Internet Backup System which uses a peer to peer approach to store recovery data on serveral distributed servers. From the manual it looks promising and quite mature but I’m not sure if I’ll find enough reliable servers with a decent internet connection to use it.

Bacula looks really interessting but might be overkill in my situation. I like the fact that it provides clients for different OSes so that you can use it as a single backup solution even for the windows clients in your network. It is mainly built for larger networks with distributed backup and storage servers for a large number of clients. I don’t think I’ll invest the time to set up the different server components for this one, though.

Possibly I’ll end up with a tar, scp or rsync solution that copies backups to my windows workstation or other peers in my VPN. and this IBM article of automation of backups on linux give some useful example for such a do-it-yourself backup solution.

Update: I found one more popular opensource backup application which is called Amanda which provides a similar feature set like Bacula.

Daemon Tools shell integration

If your using daemon tools regularly you need a proper shell integration. I finally realized today I have to find a new integration for the daemon tools v4 version – I’ve lived without one so far. Apparently a new version of the awxDtools was released today – my favourite integration that I used for daemon tools v3 so far. Unfortunately it only is available with an adware-installer – I didn’t bother to check it out further, let alone tried to remove this crap.

Since I’m currently only using one virtual drive I decided to stick with a very simple windows shell integration. With associating the damon tools executable with the right parameters you have a mount-on-doubleclick solution in minutes. You can set the associations in Windows Explorer under Extras > Folderoptions. The following screenshot shows the dialog – it’s a german windows version though:
Association of ISO files with deamon tools

A better solution would be using a common definition for all the image types and also provide a unmount option like this guy Archades did in his reg file. It would even be possible to add a second virtual drive as another operation in the context menu. As I see it, if you have a decent reg file that creates the associations there is barely any need for additional tools to provide a daemon tools integration.

When calling deamon tools with command line parameters you have make sure that secure mode ist turned off in the daemon tools options or you’ll get a confirmation dialog each time you try to mount an image.

Diving into java scripting frameworks

As I wrote sunday, I experimented with beanshell and it worked pretty well und faster than I anticipated. Nevertheless I heard about some other scripting frameworks (and their integration in java 1.6) which motivated me to investigate a bit more in this direction. Apparently Mozilla’s Rhino is a very powerful yet fast framework that provides javascript aka ECMAscript. Performance benchmarks by Pankaj Kumar in his article BeanShell, Rhino and Java — Performance Comparison show that my choice of beanshell as a scripting framework might not have been that best – performance wise. I’ll definately check out Rhino for use in my application.

Another interesting framework I came across when looking into scripting with java is the Apache Jakarta Bean Scripting Framework (BSF) which provides a framework to create JSP pages in different scripting languages. To achieve this it offers a uniform interface which wraps several scripting languages like javascript, python, tcl and many more.

A trip to java

Once again a long time has passed where I couldn’t find the time or motivation to write a post. I was mainly occupied with the specification of a java application which gave me the opportunity to get to know Sparx System’s Enterprise Architect. I only used the common uml diagram types and the code generation features for this project and they work pretty well. I’d love to make use of the more advanced features though and look into the whole MDA approach a bit more. There is a fundamental difference in just drawing some class diagrams and really developing model driven from the ground up. Projects like AndroMDA to generate complete applications look promising and certainly could reduce the expenses for software development but I doubt I’ll find time to check it out properly any time soon. As for the modelling language I don’t think everything should be done with UML though – the approach to model every aspect in UML and using stereotypes to define “what it means” makes the modeling too confusing and complex imho. Some interesting views on MDA and Software Factories can be found in the podcast MDA vs. Software Factories and some older episodes.

At the moment I’m working on a prototype for another java application and got used to the new java 1.5 features like generics and the new for each loops. The generics are definately the way to go for typesafe collections and I’ll try to use them from here on out. I found the wildcard <? extends> and some other constructions confusing at first but I do understand that there are several restrictions (german link) when using generics. Someone should publish some design patterns for typical cases that require generics.

For that project I also experimented with BeanShell which is basically a java scripting interpreter. I’ll probably use it for custom formulas which are evaluated dynamically within the java application. Easy to use and powerful.

The next component I’ll look into is EJB3 persistence using Hibernate. I have worked with the hibernate tools and reverse enginered some database tables but since I already have the POJO classes and don’t want to create all the old hibernate xml mapping files I might as well check out how to create EJB3 persistence by using annotations. More on that soon.