{"id":553,"date":"2008-06-13T17:08:32","date_gmt":"2008-06-13T07:08:32","guid":{"rendered":"http:\/\/www.somethinkodd.com\/oddthinking\/?p=553"},"modified":"2008-12-03T00:50:01","modified_gmt":"2008-12-02T13:50:01","slug":"online-photo-db-stage-4a-evaluation-of-custom-software","status":"publish","type":"post","link":"https:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/13\/online-photo-db-stage-4a-evaluation-of-custom-software\/","title":{"rendered":"Online Photo DB: Stage 4a &#8211; Evaluation of Custom Software"},"content":{"rendered":"<div class=\"aside\">This post is part of the <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/tag\/online-photo-database\/\">Online Photo Database project documentation<\/a>. Learn more about the project&#8217;s <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/12\/03\/online-photo-database-project-status\/\">current status<\/a>.<\/div>\n<p>Which <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/12\/online-photo-site-stage-2-clean-requirements\/\">requirements<\/a> does <em>Julian&#8217;s Custom Software<\/em> meet?<\/p>\n<table class=\"simple\">\n<tr>\n<th>Id<\/th>\n<th>Pri<\/th>\n<th>Requirement<\/th>\n<th>Pass?<\/th>\n<td>Notes<\/td>\n<\/tr>\n<tr>\n<th>GEN1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Accessible by a typical web-browser<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>GEN2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Active development of new features<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>OWN1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Ownership of photos is retained by me.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>OWN2<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Future-proofed against money running out: mine or yours<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>OWN3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Ownership of meta-data is retained by me.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Photographs grouped into albums by event<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT2<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Photographs tagged with people<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Photographs tagged with locations, objects, activities<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT4<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Performers tagged with real and stage names.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT5<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Attribution of photographer details<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT6<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Attribution of copyright owner&#8217;s details<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT7<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Rating of photographs<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT8<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Sorting\/Filtering by rating<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT9<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Albums grouped by type<\/td>\n<td>N<\/td>\n<td style='text-align:left''>Prototyped, but never finished<\/td>\n<\/tr>\n<tr>\n<th>CAT10<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Albums grouped by date<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT11<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Areas or points of photograph tagged<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT12<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Simple contact management of subjects<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Not very good!<\/td>\n<\/tr>\n<tr>\n<th>CAT13<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Hidden fields on contacts to distinguish like-named people<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT14<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Tagging of anonymous people to enable searching<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT15<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Corrections to names update everywhere<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT16<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Attribution of copyright details<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT17<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Control over (default) ordering<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Very limited. Displayed in order they were published.<\/td>\n<\/tr>\n<tr>\n<th>S+L1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Link to other photos with same tag within an album<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Associate URLs with subjects, that are displayed.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Link to other photos with same tag across my albums<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L4<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Search of tags by keyword<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L5<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Cross-promotion of other albums and sites.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>HTML snippet associated with each album.<\/td>\n<\/tr>\n<tr>\n<th>S+L6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Link to other photos with same tag across other photo sites<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L7<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Search of album names by keyword<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L8<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>User-generatable URLs to search tags by keyword<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM1<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Multi-user Tagging<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM2<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Notifications of appearance in photos<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM3<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Comments permitted<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM4<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Notification of comments<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM5<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for comments<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for subjects<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM7<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for new photos<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Web-quality images shall be displayed by default.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Print-quality images shall be available.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Automatically generated thumbnail and web-quality versions.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ4<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Archive-quality images shall be stored.<\/td>\n<td>N<\/td>\n<td style='text-align:left''>PHP libraries\/server memory limited to around 1.2 MB<\/td>\n<\/tr>\n<tr>\n<th>PQ5<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Custom thumbnails (e.g. choosing to crop over shrinking.)<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>But limited; requires DB-hacking<\/td>\n<\/tr>\n<tr>\n<th>PQ6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Support for short video<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ7<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Support for long video<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF1<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Quota > 0.5 TB, if any<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Low-cost<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Fast response time<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF4<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Scale to thousands of tags<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Just barely. More work required.<\/td>\n<\/tr>\n<tr>\n<th>PERF5<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>< 1 minute face-time per photograph<\/td>\n<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Just barely. More work required.<\/td>\n<\/tr>\n<tr>\n<th>PERF6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Free<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>UI1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Forward\/Backward navigation between photos in album.<\/td>\n<td>N<\/td>\n<td style='text-align:left''>Software doesn&#8217;t know which photo comes next<\/td>\n<\/tr>\n<tr>\n<th>UI2<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Slideshows<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>UI3<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Display of many thumbnails at once<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PRIV1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Their email address should never be published on the web.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PRIV2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Registration and logging in not required for general use.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PRIV3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Robust privacy features for photographs<\/td>\n<td>N<\/td>\n<td style='text-align:left''>Functionality never finished; Errs towards not displaying; some photos only I can see.<\/td>\n<\/tr>\n<tr>\n<th>WF1<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Hint to original location on my harddrive<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>WF2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Auto-complete or partial search on tags during input<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Partial tag search, plus standard browser auto-complete on text fields.<\/td>\n<\/tr>\n<tr>\n<th>WF3<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Read EXIF data from image<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>WF4<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Support unpublished draft state <\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>MIGR1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>API to add photos<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Not formal API, but I know schema well!<\/td>\n<\/tr>\n<tr>\n<th>MIGR2<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>API to add tags<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Not formal API, but I know schema well!<\/td>\n<\/tr>\n<tr>\n<th>MIGR3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Tags can be non-specific to areas of photo<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>METR1<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>&#8220;How many visitors?&#8221; metric<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Limited<\/td>\n<\/tr>\n<tr>\n<th>METR2<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>\u00e2\u20ac\u0153How long does a visitor stay?\u00e2\u20ac\u009d metric<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<\/table>\n<h3>Summary<\/h3>\n<p>I am surprised at how well my site got through the requirements. I come to bury Caesar, not to praise him. It suggests to me that some of my priorities might need tweaking!<\/p>\n<p>Unsurprisingly, it fails in that it isn&#8217;t as feature rich and isn&#8217;t continually improving as some of the team-based offerings. It does well in the &#8220;ownership&#8221; stakes, but completely fails the community requirements. The inability to store large images is disappointing. The inability to advance simply to the &#8220;next&#8221; photo is a serious drawback.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Which <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/12\/online-photo-site-stage-2-clean-requirements\/\">requirements<\/a> does <em>Julian&#8217;s Custom Software<\/em> meet?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[285,1],"tags":[284,48,376],"class_list":["post-553","post","type-post","status-publish","format-standard","hentry","category-photography-geek","category-uncategorized","tag-online-photo-database","tag-photography","tag-review"],"_links":{"self":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/comments?post=553"}],"version-history":[{"count":1,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/553\/revisions"}],"predecessor-version":[{"id":828,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/553\/revisions\/828"}],"wp:attachment":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/media?parent=553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/categories?post=553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/tags?post=553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}