PROJECTS MATCHING AUTOMATION:
This was a medium scale CMS project for the Coastal Arts League of Half Moon Bay, CA. The gallery hosts an annual photographic competition - the Michael H. Kellicutt International Photo Show.
What they needed initially was an online submission form so that artists could submit their work to the show and enter the competition. The form needed to check to make sure the address was valid and that the submitted files were of the correct size and format. It also needed to calculate the contest entry fee based on the number of submissions and create a PayPal button. PayPal's Instant Payment Notification was utilized so that once payment cleared through PayPal the entry would be automatically entered into the contest database.
A short time afterward I was contacted again to build an admin backend to handle the juror voting and selection as well as managing entrants, submissions & jurors with CSV import and export functionality.
The competition this year had 527 entrants and just over 1,800 submissions. Each submission would need to be rated by at least 3 jurors.
The back end consisted of a "payments pending" table for users who opted to pay by check, a juror management section which allowed the administrator to add, delete and assign jurors to groups. There was a pool of about 14 jurors. Jurors in the same group would be assigned to the same set of images to vote on, group 1 would get the first 250 submissions, group 2 the next 250 and so on. A summary view showed how each group was progressing. Once a juror had voted on every entry in a group they became free to join the next group.
After preliminary juror voting was completed, a subset of the entire batch of entries was marked as 'promoted' and voted upon by the Final Jurors. These final jurors could rate and make selections. Selected images would appear in the show.
My final task for this project was building a section of the admin page to create the gallery. This allowed the editing of title and process for each image (through AJAX, to save some time) and the artist info. It also provided a means to mark a submission as 1st, 2nd, 3rd place or Honorable mention, "hang" which means it's hanging in the show, or "book" meaning that it appears in a display book. An artist statement and juror comments could also be attached to each entry. After all the information is entered, the gallery pages can be rendered with a few mouse clicks. Since artists can specify at the time of submission what contact information the do and do not want to appear with their work, the render script needed to account for this.
You can view the end result for yourself at the link below.
Url: http://www.coastalartsleague.com/kellicutt/2009/DisplayBook/index.html
Tags: php, mysql, applications, automation, html, css, javascript
This was a contract gig for RouteMe2 Technologies, a Silicon Valley company that specializes in developing location based service (LBS) applications for Google's Android smart phone.
My job was to digitize shuttle route maps and timetables and create sets of files conforming to the Google Transit Feed Specification. There were 95 routes in total, mostly free shuttles operating in the San Francisco, and the work was done on a milestone basis over several months.
All of the bus stops for each route needed to be Geocoded and the timetable and fare information extracted.
For the former it was a matter of reading the stops from the route maps and trying to pinpoint them on google maps. Street view came in very handy for this and many of the bus stops I could actually see, which was great for accuracy. That part of the job was a little bit like a cross between aerial reconnaissance and "Where's Waldo?". I was even able to call some of the agencies to dig for more information.
For the time-tabling, KPDF has a great feature that lets you draw a rectangle around a section of text in a PDF and extract it as plain text. which ended up being a big time saver. I wrote a few short perl scripts to take a timetable in CSV format and covert it into GTFS format. I used an OpenOffice.org spreadsheet to keep the datasets straight.
The final destination for all of this data is an application called "PedNav", developed by RouteMe2 technologies. It's a google Android application that works a little bit like a personal assistant. You tell it where you need to be for the day and at what time and it will create an itinerary for you with instructions of where to walk, and which bus to take. The application won the first round of the Google Android Developer Challenge.
Url: http://www.routeme2.com/
Tags: perl, automation, applications, parser
Son of Perl Video Grabber Script
This was yet another scripting project for Jay at Primary Web Services, LLC. The goal for this script was to take a source video, show a group of 15 or so frames, allowing the user to pick one, or move on to the next group of frames. When a frame is chosen it will save it to an output directory and move on to the next video in the source folder.
If the script gets to the end of a video without a frame being chosen it loops back to the start and shortens the distance between grabbed frames.
The solution was coded in Perl, utilizing ffmpeg decoder and the Tk module to handle the GUI aspect.
Tags: perl, applications, automation
Perl Video Frame Grabber Script
Jay at Primary Web Services, LLC needed another image processing script - this time, grabbing frames from a video source. The script had to cycle through a folder of videos, displaying a frame from the start of the video and a pair of "yes" / "no" buttons. If "yes" is chosen, it writes the visible frame to an output folder, otherwise it skips ahead a specified number of frames and displays that. If it gets to the end of the video and a frame has not yet been selected it returns the beginning and decreases the number of frames to skip.
To realize this I coded a Perl script that leveraged the ffmpeg decoder to first extract all of the frames, then used Perl's Tk module to display the frame in a GUI window with the "yes"/"no" buttons.
Son of Perl Image Conversion Script
A couple of days after completing the first Perl Image Conversion Script for Jay at Primary Web Services, he came with another spec based on the core functionality of script #1
This time, it needed to output images and update a CSV file with the image names. So, I built on to the original to create a Perl script that would scan a directory of images and output to another directory images compressed just enough to get them under the specified file size (I'd gathered from the filenames that some of these compressed images were destined for mobile phones).
Show projects matching: