Building a better pogoplug.

A while ago I purchased a pogoplug as a means of sharing photos with my family but its use never really happened because the interface they provided is clunky for hi-res pictures/video.. and some of the family failed to consistently download things.. so it was not a success.

The pogoplug device should have allowed me to view my pictures on my dnla enabled samsung tv but it failed too…

So much for a personal cloud solution!

After this I started to use the device as a backup device/synchronisation store after enabling ssh and building a rsync executable.   This worked well… but seems liked a waste of a device that is always on.

I then formulated a plan:

  • the pogoplug software uses linux, so if I replace it with something more open I can make better use of it,  Arch Linux for arm is a good fit for me.
  • after installing Arch linux I need some software to make it useful:
    • mdns, so I can easily find the pogoplug
    • rsync for backup’s
    • git for private source repository
    • minidnla server for viewing the pictures
    • personal dropbox solution, the two that look hopeful are:

So far, I have installed Arch Linux, setup rsync, setup a small private git repository and the minidnla server and to my surprise it is working out much better than the pogoplug solution provided by them..  perhaps not for the inexperience but it works well and feels more future proof!

So what have I now got? Well I have a open source based solution that is always online, visible to the TV, used as a backup device and low-powered…   I’m happy..

rsync & permission denied/operation not permitted & arch linux

I use rsync to sync directories between machines but one of my machines kept screwing up the permissions, I finally get time to track the “Operation not permitted” issue and it turned out to my vfat backup drive not being mounted under the right uid.

Coming from the old school Unix background, I thought updating /etc/fstab would be enough but due to this auto mount system it is done differently ;-)

It turns out you need to change the rules for the auto mount via file /etc/udev/rules.d/11-media-by-label-auto-mount.rules

So what did I need to change? Well it turned out to be simple uid= to match the uid of my normal user (use id xxx, where xxx is your username)

Below are the changes:

ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs",
ENV{mount_options}="$env{mount_options},utf8,
uid=501,gid=100,umask=002"

Metro up Java

Microsoft’s Metro environment is a bit of a closed environment for the Open Source language vendor, so although you can code Metro applications in C/C++, C#, HTML/JavaScript/CSS on both Intel and ARM chipsets the choice of other languages are non-existent.

So where does this leave the JVM community, Perl or Ruby communities, well frankly unless they get started promptly then they will be stuck on the Desktop and not in Metro, though at first this does not seem such a bad thing. It does preclude apps being delivered to the user via the AppStore which are solely for the domain of the pure Metro applications

So it is possible to get Java, Perl or Ruby running in Metro given that we now have a reduced set of Windows APIs in WinRT framework plus the ability to execute dynamic code or even use LoadLibrary, Assembly.Load is now gone…

Well I think these languages might well have to look at embracing the CLR if they want to place nicely with Metro :-)

Windows 8 Developer Preview on VirtualBox

Although I got a developer preview samsung Windows 8 tablet at the Microsoft Build event I do like to use Virtual machine whenever possible because they are very useful.

I have managed to get Windows 8 installed on VirtualBox on the Mac and PC. However the default size of the screen is rubish due to the lack of additions support, however you can get VirtualBox to include a custom video mode and this works. Todo this I used the command line:

VBoxManage setextradata "Windows 8" CustomVideoMode1 1366x768x32

Then start the VM and select the new resolution...

Next blog I will document some of the keyboard keystrokes I find useful for the Metro interface...

Heroku add Java support but dumps containers!

Recently I have reviewing various cloud solutions and what impact this has on the way you create/architect applications and I have come to the conclusion they are often way too complicated for most existing applications to be effectively hosted in the cloud in a scalable way.

However I was very surprised to see Heroku have introduced support for Java but I was more surprised to see that they have chosen not to include JEE container support.

Which on first thoughts seems odd but given the complexity of implementing a multi-language solution within their environment a JEE container would be an unnecessary hinderance in the performance/scalability of the application.

So yeah… good choice, I wonder if anyone else will drop the JEE container too in their Java/Cloud solutions?