I've been always involved with some pet projects, partly because they are really fundamental to practice the craftsmanship of programming, partly because I do like writing code (probably I even like more refactoring code). I think they still are important, even now that I work less on code and more on consulting about other aspects, such as architecture and design - in my opinion an architect must be still capable of understanding and writing good code. Since a pet project must be placed in a real context, as much as it's possible, I've always targeted them to a real purpose. The largest of my pet projects was blueMarine, an application for managing and editing collections of photos. The concept was very similar to what later happened to be Adobe Lightroom. It was so large that in the end it generated a cluster of sub-projects.
The project lived its best moments circa 2008/2009, as at that period it was indirectly sponsored (parts of it were incorporated in a paid project, that was about cataloguing images on a server) and it even earned a presentation at Java One in San Francisco. Being based on the NetBeans Platform, the authorship of that project also contributed in making me become part of the NetBeans Dream Team.
Then a number of facts happened, the most relevant of which the sudden end of the project that was feeding blueMarine, due to the start of the financial crisis in the USA (the customer was from USA, even though I worked in Italy). I also have to mention my failure as an open source project leader, as I discovered I didn't have the time to dedicate to the growth of a community. The community was a mandatory prerequisite for image processing, which is not part of my developer experience (I mean: I know things such as implementing a multi-core algorithm to filter an image, but I'm no expert about what numbers to put in the filter matrix to accomplish a particular purpose).
So, even though I tried to keep the project alive, it slowly died. The server-side part was basically rewritten from scratch and became NorthernWind, an ultra-light CMS that is running all my websites, including this one and especially my personal photography website. For my photography tasks, I adopted the cited Adobe Lightroom.
A couple of years ago I evaluated a few media centre devices for installing at home, also taking in consideration that other members of the family would use it. In the end my choice fell upon the Western Digital TV Live Hub. It was pretty decent, even though my idea about cataloguing media (especially music) is much more demanding. It also missed the geotagging features for photos (blueMarine, as far as I know, was one of the first desktop applications that were capable of displaying photos on a map). A couple of months ago, the device started malfunctioning with symptoms that I was able to track down to a well-known issue with the power supply. I'm out of warranty, I understand that repair times are long, the product has been discontinued so a new device can't be bought and honestly I'm still not satisfied with the alternate market offerings. Oh, and I don't want anything from Apple - too closed - and from Google - too invasive into people's privacy. In the meantime I knew that the Raspberry PI has been refreshed and the new version was 6x faster than the previous, fully supporting full HD video. The Raspberry had been since a few time on my radar and I was waiting for the chance to add this technology to my portfolio.
Now, the Raspberry PI can run JavaFX with the latest JDK 8 (even though with some issues). So, I put some things together... and blueMarine has been re-born, as blueMarine II (be patient about the new website: won't be online for some time). After one elapsed month, even though it is not ready for the masses - for instance it requires quite a few batch operations to prepare the catalog, the sixth iteration of blueMarine II can reasonably play my music collection integrating some semantic data from MusicBrainz and DbTune.org. I started with music because it's the most important feature at home, but photo slideshow and video playback will follow soon. There won't be photo editing features, though, as at this point this path would lead me to a dead end, again. Furthermore, as you can guess from the screenshots below (taken on a Mac, but the look is almost identical on my 37" TV attached to the Raspberry), the user interface is more oriented to navigation with a remote command - you really wouldn't do editing in this way.
This is just a teaser and I won't go into technical details. I'd just like to anticipate that the architecture of blueMarine II is deeply different than the one of the original blueMarine. No more NetBeans Platform, both because its biggest added value is the support for hot-pluggable extensions and I don't have this requirement, and because in these years I've partly received the advice from Matteo Vaccari about being careful of not depending upon frameworks (Matteo is very strict about this point, I only partially). Thus blueMarine II is just Java 8 + JavaFX + Spring 4, just as container for Dependency Injection and as a facilitator for AspectJ. For the rest, there are only libraries (including some of my own which provide support for a few patterns).
While the project will be used in my family, and it's of course open sourced under my favourite Apache License, I won't be strictly committed to support it as a product. It's a matter of time and at this stage of my life I have other priorities. Anyway, blueMarine II will hopefully give me more focus for posting technical articles to this blog, which I haven't updated for a couple of years. There have been a number of personal problems that kept me out of the blogging and conferences business (my latest one was at Devoxx in 2011; only recently I gave a new speech at Voxedd Days Ticino). I'm not yet past those adversities, but perhaps I just need some concrete stimuli to pull me out of this black hole. The blog posts about this project will appear under the bluemarine2 tag.
PS This, of course, means that the old blueMarine is officially dead. I'm keeping the old source repositories at BitBucket only for historical reasons. I'm not even sure that today they can be compiled. Part of the old code will be predated for the new project, though.