JS Ext

Wednesday, October 16, 2013

New Application: TraySync

A few months ago, I set up a shared folder on my Dropbox to share pictures of my son with my family.  Dropbox is well known to the non-techie world and is very easy to install.  The setup has worked phenomenally well for months.  Then we started taking video.  HD Video.  Large HD Video.  I filled up everyone's Dropbox very fast.  For those of you who don't know, files in shared folders on Dropbox count towards everyone's quota.

One of the other goals with Dropbox was to allow family members to upload pictures that they took.  During any family events, everyone brings their own camera.  Everyone wants to take pictures.  I think this is driven by history: when you had to pay to develop film, you wanted to make sure you got your own "copy" of the pictures being taken.  Now, everyone has digital cameras.  By having an easy way for people to share pictures, two things can occur (in theory): 1) people have easier access to everyone else's pictures and 2) less people want to take pictures because of #1.  During the first month, this was true.  People were uploading pictures pretty regularly.  After that, pictures were not uploaded as often.

I have blogged multiple times about Retroshare but it was just not user friendly enough for the grandparents to use.  With Dropbox, pictures and videos just magically showed up in a folder somewhere.  I wanted to replicate that same experience.  Due to the minimal amount of uploads, I decided to drop that requirement.  Besides, the Dropbox folder still exists, so people could still upload there.

I decided to write a program that sits in your system tray, polling for changes on an http server.  It downloads a text file once an hour.  The text file consists of a bunch of http urls, one for each picture or video.  The software then downloads each item in the text file.  If-Modified-Since headers are used to limit the bandwidth that is used.  If the http get for the text file comes back with a 304, then the software doesn't even bother firing off requests for the files in the text file.  All downloads are password protected.

The tray icon changes if it is downloading something.  After a round of files is downloaded, a notification window pops up, telling you how many files were downloaded.  The app has a configuration window that allows you to add multiple "repositories" and displays a table of the most recent downloads.

The software is written in Java 1.6.  For Windows, I used Nullsoft Scriptable Installer to create an install exe file.  The installer adds a shortcut in the "Startup" folder so that the app starts up boot.  I even made an unattended install that sets up the initial repository and starts the app for the grandparents.

I have not decided if I am going to put the software up on Sourceforge or Github, but it will be open source.  As of now, there will not be a Mac release.  I will put a rant about that in another post.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.