{"id":829,"date":"2021-03-29T12:00:00","date_gmt":"2021-03-29T19:00:00","guid":{"rendered":"https:\/\/letsbuildroboticswithshadow8472.com\/?p=829"},"modified":"2021-03-29T02:46:08","modified_gmt":"2021-03-29T09:46:08","slug":"family-photo-chest-part-14-the-tracks-are-built-bring-on-the-locomotive","status":"publish","type":"post","link":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2021\/03\/29\/family-photo-chest-part-14-the-tracks-are-built-bring-on-the-locomotive\/","title":{"rendered":"Family Photo Chest Part 14: The Tracks are Built, Bring on the Locomotive"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Good Morning from my Robotics Lab! This is Shadow_8472, and today I am technically ready to start my first batch of scanning photos. Let&#8217;s get started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Early Start<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I am tired of this project going seemingly forever. Whatever I&#8217;m getting done, I want working this week. My plan has been to scan directly into the DivideScannedImages script for GIMP, and for that I need the XSANE plugin (Scanner Access Now Easy for Xorg GUI server). Every version I found was ancient and obsolete.<strong> <\/strong>Turns out installing the plain XSANE  included its own GIMP plugin, as confirmed by <strong>xsane -v<\/strong> and looking for a line about GIMP. Just know that if you&#8217;re trying to check the version over SSH, that it really wants an Xorg server: <strong>export DISPLAY=&#8217;:0&#8242;<\/strong> worked for me.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GIMP has a powerful scripting language built in. With it, you can automate most anything, all be it with a little difficulty. You can even use it to script events when launching GIMP with the <strong>-b<\/strong> flag (b as in batch). I took a look at it. It doesn&#8217;t look that bad to learn. It&#8217;s heavy on the parentheses, but I&#8217;d hesitate to directly call it LISP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I got as far as calling the XSANE plugin on boot from within the DivideScannedImmages script. I was a little short on time to struggle through getting it just right, so I reached out for help on a GIMP Discord, but then I began to reconsider everything.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Progress Rejected<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve been a bad programmer. So many dead ends. So many side projects distracting from the main goal. I have an unknown deadline for this project, and I really need to cut the fancy stuff I&#8217;ve been working on and do something that actually works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also got to thinking, <em>Who am I designing this for?<\/em> I had been working on a command line setup for me, and my mother has graciously offered to help with scanning a little bit at a time. She doesn&#8217;t do the command line outside Minecraft. <span style=\"text-decoration: underline;\">As a good programmer, I need to consider my end user&#8217;s needs<\/span>, and she needs a graphical workspace.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thinking like my mother would think, I made a directory on my desktop for shortcuts related to this project. So far, I&#8217;ve made launchers for XSANE, the network share for the pictures, and GIMP. I may develop it later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My new vision is to just use the tools I have: XSANE to scan and save locally and GIMP to separate and deskew pictures automatically and store them in the digital archive before someone either deletes or offloads the original scans. I can make a text file with miscellaneous metadata for each batch. A manual review can flag photos that will need additional touchup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testing the Workflow<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I used a couple pictures from when I was little to test my workflow. I laid them on the scanner with a bit of tweak. I spent several attempts learning about the limits of the scanner. The scan head doesn&#8217;t actually reach the full scan bed. If I&#8217;m not careful, pictures will get pinched under the edges. It&#8217;s very easy to accidentally overlap pictures. All good reasons for finding a preview of each scan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deskew isn&#8217;t a miracle, but when I did a side-by side comparison on a sample size of my two test pictures, it got one almost perfect and reduced the the tweak from the other, but my sister said the deskewed one might be a little fuzzier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Takeaway<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I cannot emphasize this point enough: <span style=\"text-decoration: underline;\">good programmers build software for end users.<\/span> It&#8217;s fine to hack together a piece of software you understand, but if you want to share your creation with someone else, you&#8217;ve got to make a relatable front end.<span style=\"text-decoration: underline;\"><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Final Question<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What elements of a project have you given up for the sake of an end-user?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good Morning from my Robotics Lab! This is Shadow_8472, and today I am technically ready to start my first batch of scanning photos. Let&#8217;s get started! Early Start I am tired of this project going seemingly forever. Whatever I&#8217;m getting done, I want working this week. My plan has been to scan directly into the &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2021\/03\/29\/family-photo-chest-part-14-the-tracks-are-built-bring-on-the-locomotive\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Family Photo Chest Part 14: The Tracks are Built, Bring on the Locomotive&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[1],"tags":[71,52,73,72,68,69,70],"class_list":["post-829","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-digital-archive","tag-gimp","tag-photos","tag-scanning","tag-xsane","tag-xsane-gimp","tag-xsane-gimp-plugin"],"_links":{"self":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/829","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/comments?post=829"}],"version-history":[{"count":1,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/829\/revisions"}],"predecessor-version":[{"id":830,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/829\/revisions\/830"}],"wp:attachment":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/media?parent=829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/categories?post=829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/tags?post=829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}