Online Backup using JungleDisk and Amazon S3

Recently I featured Mozy, a tool for automated online backup on Windows and Mac. I finally got round to using a different solution: JungleDisk, a WebDAV frontend for Amazon Simple Storage Services (S3).

What I really like about the software and the company is that they don’t claim that their data will be safe forever at their location. They confess it is possible for a company to vanish. In order to prevent you from being locked out they have outsourced the storage to Amazon, which provides cheap storage on a “pay what you need” basis.

JungleDisk provides encryption of the documents using AES and only you can decrypt them. To be on the safe side you’ll always be able to retrieve your data, they have released parts of the code covering filename-mangling and encryption under GPL.

JungleDisk is available for Windows, Linux and Mac. As said, they provide a WebDAV frontend so any WebDAV client can interact with it. It also features a local cache to prevent needing to download a file on every access. There is also an automated backup routine.

Costs are reasonably. At the time of writing, JungleDisk costs 20 US-$ once, with promised life-long updates and patches. All you need to pay for is Amazon fees for your usage, which are at 0.15$/GB/month, 0.10$/GB inbound traffic, and 0.18$/GB outbound traffic. You see, you can store lots of data for around 10$ per month.

One big minus-side of this is that Amazon’s data-centers are very slow from Europe, I was able to achieve around 700-800kbit/s (90-100kB/s) from our office connection. On the pro-side, due to the caching and background transfer, you don’t notice that the transfers are so slow, unless you need to download something. As I am using it for automated backup, I hope to never have to download anything.

So if you are searching for an offsite backup solution, you should definitely consider JungleDisk.

Syncing your Firefox: Google Browser Sync

How could I miss this so long? Google Browser Sync keeps Firefox‘ bookmarks, sessions, cookies, tabs and even passwords (if you really want to) in sync. As I constantly switch between multiple computers, this is really a nice thing to have. You need to have a Google account, but as I already use Google Reader and Calendar, I already have one. In order to hide your data from Google (as if this mattered due the amount they are already collecting about us) you can protect the information by a password (PIN).

I’m currently trying it out and up to now I am very pleased with it. One more reason to stick with Firefox 🙂

Open Street Map

Today, German news-site Golem.de covered OpenStreetMap in a rather long article. OpenStreetMap is a project I have been watching for some time now as I think the availability of free maps is very important. I’d like to participate in the project but unfortunately I have got little time and no adequate GPS receiver.

Maybe anyone in the area of Linz, Austria would be interested in a little mapping party one day? The data in this area seems to be rather sparse 🙂 Anyways, I think the project or any similar project is definitely important and should be supported with all means. Anybody knows someone at a Austrian government body which could contribute data to such a project?

Collaborative document editing

A quick side note: during a research for collaborative tools I came around two promising-looking tools: Gobby and CoWord.

Gobby is a dedicated editor for allowing multiple users to edit a set of text-documents (like source-code, etc.) simultaniously. Everyone sees what the others are doing in the current document.

CoWord promises the same but uses Microsoft Word as underlaying editor. This basically means a group of users can edit a document simultaniously.

Up to now I have not had time to try any of these tools, but I am planing to do so soon. Of course there are lots more tools for collaborative editing. A very comprehensive list of collaborative editors is available on Wikpedia.

The Storm Worm

I want to point out a very interesting article by Bruce Schneier about the Storm worm. If it were not so illegal, the techniques used by this worm are very, very advanced and very interesting from a development and network/load-balancing point-of-view. Anyone interested in development, network administration, and security should read the article.

The worm has grown to a real epidemic by continuously adapting, changing its code, the code signature, etc. It has infected this huge number of computers because the resulting bot-net is hardly ever used, it keeps in a dormant stealth mode. Most users are not aware they are infected with the worm because it tries to avoid detection by not using to much ressources and therefore hardly attracts attention by system administrators. Bruce Schneier points out that maybe we should be worried about what’s coming in “Phase II”, once the gigantic bot-net is brought into action.

To avoid detection, the worm and the bot-net operators apply several advanced load-balancing and stealth techniques, namely a DNS technique called “fast flux” which very effectively blurs the traces to the real operators.

As I said, it is very interesting read. I recommend you also follow several of the outbound links.

Affordable offsite automatic backup for Windows and MacOS

I just discovered Mozy (via TechChrunch), a service for automating the backup process by automatically storing all your data encrypted on their server for backup purposes. It is a Windows software that automates the backup process and provides secure online storage. According to the specification you can either use their encryption key or provide your own public key for the encryption.

Mozy comes in two flavors, a version for home-users which they call MozyHome (4.95$/month for unlimited storage) and a service for businesses, called MozyPro, which bills 3.95$ per computer, but also 0.50$/GB per month. I think the service would definitely be interesting but the storage costs seem to high for me. There is also “MozyHome Free” which provides you with free 2GB of backup storage. Maybe the recent purchase by EMC Corporation will change the pricing list (honestly, I don’t think so…)?

The idea of storing my confident data or even corporate data on remote servers not under my control is a little bit frightening, but in case you are able to believe they have not built a master-key in the software, it might be a nice option for offsite backups which definitely everybody should use. Maybe one should give the “MozyHome Free” a test-drive… Too bad there is no Linux version available.

If I can convince myself to try out the “MozyHome Free” I will write another report here.

.NET strings are not always immutable!

Strings are immutable. If you want to modify a sequence of characters, use StringBuilder. At least, that’s whats officially said. But in the framework there is at least one method that does modify a string:

TextRenderer.MeasureText() with ModifyString and EndEllipses will modify your string to match the ellipsed text if ellipsing happens. You can look at this VB# example on codeproject using TextRenderer.MeasureText() for trimming text on how it is used.

The string seems to be modified directly in native code by DrawTextEx from user32.dll. Additionally to the scary fact that strings are not immutable, the length of the string is not updated, regardless if the resulting string is shorter!

For instance if you have a string “aaaaaaa” which will be truncated to “aa...“, the Length property will still return 7 for the shortened string. The debugger shows that the string will in fact be “aa…\0a” after the operation. So maybe it might be right that the string is still 7 characters long but most outputting functionality like Console.Out.WriteLine() gets confused sometimes and stops any further output to the debugger or console under certain conditions.

A very quick investigation of the System.Drawing assembly using Lutz Roeder’s fabulous .NET Reflector showed that at least there should be no memory corruption in case “WW” would get ellipsed to “W...“, as DrawTextEx takes the length of the buffer and should result only in “W.“.

Summing up, I find the corruption of an immutable string by an official Microsoft API very troubling.

Content-aware image resizing

Krispin made me aware of a very cool new technique for resizing images: content-aware image resizing. Based on an energy-function path of an image are removed when shrinking or are duplicated and interpolated when growing the image in a non-uniform way.

This technique can also be used to remove objects from a given image. There is a nice demo video available on YouTube (it’s the same as in jfo’s coding blog, where Krispin originally found the information):

[youtube vIFCV2spKtg]

(via jfo’s coding and slashdot)

Vista UAC: Firefox (and other Mozilla apps) automatic updates

If you disable the automatic installer detection of User Account Control (UAC), for instance because it interferes with your every-day operations (like in my “Git and Windows Vista” article), you will notice that the Mozilla updaters don’t work as expected. Automatic updates will fail. This is due to the fact that the updater will not be automatically elevated any longer.

As the easiest workaround, you should perform the following steps:

  • Once you get notified about the update and you are asked if you want to install it, say “No”.
  • Close the Mozilla application in question.
  • Search for the application in your “Start” menu.
  • Right-click the entry and choose “Run as Administrator…”
  • Choose “Check for Updates…” in the “Help” menu
  • Confirm you want to install the update and walk through the update process.

The installation will now work. For security reasons you should close the application once installation is finished, because it will still be running with elevated privileges. Now start the application again normally.

The same principle works for any application that is not Vista-aware and fails on automatic update. For security reasons make sure you keep the time you run with elevated privileges as short as possible.

git-svn on Windows (cygwin)

Update 2008-10-10: Often perl will not work due to memory-remapping problems. A solution can be found in my article about the issue.

What I really love about Git is the fact that it nicely integrates with existing Subversion repositories. At our company, we are using Subversion as our SCM, but I personally like Git more and I want to use it as a side tool for more flexible branching, merging, and for checking in versions I wouldn’t check in the shared repository.

Git is supplied with git-svn, which can import an existing SVN repository and also commit back to it. Under cygwin, you need to perform two additional steps for getting git-svn to work, otherwise it is likely to fail with “failed to include Error.pm”.

You need to download Error.pm from CPAN. You have to save it to <cygwin-dir>\lib\perl5\Error.pm

Voila! git-svn should work now.