DropTagger

DropTagger

[ Printer-friendly ]

DropTagger is an image collection Facebook app. The heart of DropTagger.com is free software (currently called PLIC) that's written in Python and requires a free tool called Flask. This software is actually working (slightly buggy) on my desktop and laptop. I have yet to add a bookmarking feature that puts all of your favourite images at your fingertips.

PLIC stands for Personal Local Image Collection. Use the up arrow to go up a level, press Enter or click to go down a level, and left/right arrow goes to previous/next image or folder, respectively. Image files are stored in a hierarchy of folders on your hard drive. Some folder/image file names include one or more tags. The images are actually viewed in your web browser, even though they are stored on your hard drive. PLIC will soon be converted to a desktop Java application.

Clicking on a folder name which contains no sub-folders displays a grid of images (left/right arrows page through the grid). Clicking on a folder name which contains both sub-folders and images displays a list of sub-folders, and below that a dollar sign ($) is displayed. Clicking on the dollar sign displays a grid of images.

PLIC Synchronization

The local image tree is mirrored in a JSON file which is generated/uploaded whenever changes to that tree are synchronized to the server database. The JSON file format consists of an object with 3 members: name (folder name of image tree root), files (array of file names), and dirs (array of folder objects). Each folder object has the same 3 members as the top-level object: name, files, and dirs.

Facebook App

DropTagger lets you share images and folders with your Facebook friends (all users must install Dropbox, a third-party tool that lets you store images in the cloud). Let's say you want to share the contents of a given folder. Go into Dropbox and share the folder, then copy/paste the link into DropTagger. Then specify all friends, a circle of friends, or a specific friend, and click Submit. The recipients will receive an email notification from DropTagger. Then they go into DropTagger and click on the link, which takes them into Dropbox where they can view the images in the original folder.

In another example, let's say you are browsing image meta-data, in DropTagger, of one of your Facebook friends, and you are interested in a specific folder. Tell DropTagger you are interested in that folder. DropTagger sends an email notification to your Facebook friend, who goes into DropTagger and views the path name of the folder you are interested in. Then your Facebook friend opens up Dropbox and shares the appropriate folder, copy/pasting the link back into DropTagger, and clicks Submit. You then receive the email notification, go into DropTagger, click on the link, which takes you into Dropbox where you can view the images in the original folder.

Monetization

Paid versions of DropTagger let you share images with anyone (except the bronze package), not just your Facebook friends. The bronze package costs $15/year, and you can have up to 1000 images. Images are displayed as 32 x 32 pixel thumbnails. The silver package costs $30/year, and you can have up to 2000 images. Images are also displayed as 32 x 32 pixel thumbnails. The gold package costs $60/year, and you can have up to 5000 images. Images are displayed as 64 x 64 pixel thumbnails. The platinum package costs $100/year, and you can have an unlimited number of images.

Naming Conventions

Folder names ending with an underscore character are treated differently (this feature has already been implemented). When one of these folders is current (enclosed in square brackets), and is clicked on or the user presses Enter, then the first image in each of its sub-folders is displayed in a grid.

Folder names beginning with an underscore are also treated differently. All sub-folders are treated as containing image tags. Each sub-folder name can start with an optional string of one or more digits, separated from the tag list with an underscore. All tags in the tag list can only contain letters, digits, and hyphens (and must begin with a letter and end with a letter/digit), and individual tags are separated with underscores. The tag list is terminated by either a space (followed by arbitrary text), an underscore, or the end of the folder name. Any sub-folder (of a folder whose name begins with an underscore) which should not be treated as containing a tag list must itself begin with an underscore. It should begin with 2 underscores if that sub-folder should itself behave as if its sub-folders should be treated as containing image tags.

Folders which contain image files portraying any kind of nudity must contain an empty file (or a file containing dummy 7-bit ASCII characters) with the following name: XXX. It is optional for any of its sub-folders to themselves contain such an empty/dummy file named XXX. Nudity is defined as genitals, pubic hair, bare bums, and/or exposed nipples. Any images containing nudity are guarded by a switch (the dummy XXX file) in an ancestor folder. Users must be over 18 to access folders which contain nudity.

Bookmarks

The bookmark.csv file is stored in the root image folder. Each line of that text file contains a bookmark with values separated by commas. The first value is the tag list, and each tag in that list starts with a letter and can contain only letters/digits and hyphens, ending with a letter/digit. Individual tags are separated with underscores. The second value is the relative path name. The third value is an optional image count (no. of images to be bookmarked). If this value is omitted (2 commas in a row), then either the path name is a folder and all images contained therein are to be included, or the path name is an image file. The fourth optional value is a description. Blanks can appear anywhere except inside tag lists.

Slides

Slides can display up to 3 images side-by-side. The leftmost image is the base image and cannot be removed. Clicking on either of the other 2 images removes it. Clicking on white space toggles the display of a gray rectangle. Whenever a gray rectangle has been activated (displayed), and then an image other than the current slide is displayed and clicked on, the current slide is displayed and the image clicked on displaces the gray rectangle.

Switching to Java

After fixing the 2 currently outstanding bugs in my Python code, I will begin learning desktop-based and server-side Java programming. After I'm up to speed with Java, all of the Python code has been converted to Java, and most of the core PLIC functionality has been developed, I will approach Josef Nulman of Specialisterne. His organization finds IT jobs for those on the autism spectrum. I had a meeting with Josef on Jan. 17, 2014 to explore my teaming up with an autistic Python Programmer for an earlier project. That project never bore fruit, but I hope to hire an autistic Java Programmer on a 6-month contract, and I will pay most, if not all, of his wages out of my savings.

CEO Recruitment

After the development of the Java-based PLIC has been completed, enabling users to manage their Personal Local Image Collections (on their local hard drives), I will flesh out the design specs of the Facebook App, Dropbox functionality, monetization, and browsing/searching image meta-data. I will also write a mini-business plan and pitch my DropTagger idea to the Digital Media Zone at Ryerson University. The DMZ is an incubator of tech start-ups. If I get into the DMZ, I hope to recruit a Ryerson fourth-year computer science or business major to be my CEO, and I will be the CTO (chief tech guy). I also hope to access funding from an angel investor so I can pay the wages of the CEO as well as the Java Programmer after his 6-month contract expires.

Dipping My Toe into Java

Instead of displaying images, I will display the file name (current element in list enclosed in square brackets) which the user can click on. Image grids will consist of a table of file names: 2 rows by 6 columns. The only paragraphs in the above design specs which I can ignore at this early stage have the following headings: "Facebook App" and "Monetization". I intend to start coding tomorrow, 2 days after starting this project. I already have lots of test data which I generated for my PlicTalk project, the forerunner of DropTagger.

About Me

I am Mike Hahn, the founder of DropTagger.com. On August 9, 2014 I began working on Basyx.org (a tutoring website). I started developing Lyvathon.org (a new programming language) on January 4, 2015, after dabbling in its precursors (sporadically) since the mid 90s. On January 24, 2015 I resumed working on Basyx.org, and resumed working on Lyvathon on May 9, 2015. I started designing Lyspio.com (the master website of all Lyvathon apps) on November 16, 2015. I started PlicTalk.com, an image collection manager, on January 13, 2016. One month later I started NetLyve.com (used to be Lyspio.com) on February 15, 2016. I started Twirthie (a random sentence generator) on March 24, 2016 (based on an earlier idea I fleshed out in 1987). I started DropTagger (used to be PlicTalk) on April 5, 2016.

I was previously employed at Brooklyn Computer Systems as a Delphi Programmer and a Technical Writer (I worked there between 1996 and 2013). Just prior to starting Lyvathon I quit my job as a volunteer tutor at Fred Victor on Tuesday afternoons, where for 5 years I taught math, computers, and literacy. I'm now a volunteer computer tutor at West Neighbourhood House. My hobbies are reading the news at cbc.ca and going for walks in my neighbourhood. About twice a year I get together with my sister who lives in Victoria. She comes here or I go out there usually in the summer. At those times I'm much more active, but most of the year I tend to lie on the couch a lot, and not be very active. I do, however, visit my brother once a month or so and correspond with my pen-pal, who lives in England.

Contact Info

Mike Hahn
Founder
DropTagger.com
2495 Dundas St. West
Ste. 515
Toronto, ON  M6P 1X4
Canada

Phone: 416-533-4417
Email: hahnbytes (AT) gmail (DOT) com
Blog: lyvathon.blogspot.ca

[ Back to Top ]