<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>kjcoop.org &#187; nerdery</title>
	<atom:link href="http://kjcoop.org/tag/nerdery/feed/" rel="self" type="application/rss+xml" />
	<link>http://kjcoop.org</link>
	<description></description>
	<lastBuildDate>Fri, 09 Mar 2012 01:27:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How to never again see WordPress&#8217; update nag &#8211; no plugin necessary</title>
		<link>http://kjcoop.org/2012/02/08/how-to-never-again-see-wordpress-update-nag-no-plugin-necessary/</link>
		<comments>http://kjcoop.org/2012/02/08/how-to-never-again-see-wordpress-update-nag-no-plugin-necessary/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 02:08:41 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1616</guid>
		<description><![CDATA[One reason I like WordPress is because they come out with frequent updates. When you run a WordPress site, it checks periodically for new versions. It reminds you with a helpful little yellow bar at the top. It feels great to install a new version, be up to date, and get rid of the nag. [...]]]></description>
			<content:encoded><![CDATA[<p>One reason I like WordPress is because they come out with frequent updates. When you run a WordPress site, it checks periodically for new versions. It reminds you with a helpful little yellow bar at the top. It feels great to install a new version, be up to date, and get rid of the nag. However, because of their awesome frequent updates, it also means you&#8217;re only ever free of that annoying reminder for a couple days. </p>
<p><a href="http://kjcoop.org/wp-content/uploads/2012/01/wp_nag.png"><img src="http://kjcoop.org/wp-content/uploads/2012/01/wp_nag-300x134.png" alt="A screenshot of the annyoing yellow bar" title="Wordpress update nag" width="300" height="134" class="aligncenter size-medium wp-image-1617" /></a></p>
<p>While it&#8217;s important to keep software up to date, I do have a life beyond updating WordPress. I wanted to get rid of that yellow nag once and for all. There are a couple plugins to disable it, but I don&#8217;t see any sense in adding more code (and more plugins to update) when I can just add one line to a stylesheet. So, here is how to rid of it at the cost of 13 characters per page load*:</p>
<p>Open wp-admin/css/colors-fresh.css. All newlines and extraneous spaces have been stripped from the file in the interest of speedier loading (this file loads anew every time you load a page in your Dashboard). Search for:  <code>#update-nag</code></p>
<p>In my version of WordPress, it starts on line 11593 of 34572. Expanded, it looks like the following:<br />
<code>#update-nag, .update-nag {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #FFFBCC;<br />
&nbsp;&nbsp;&nbsp;&nbsp;border-color: #E6DB55;<br />
&nbsp;&nbsp;&nbsp;&nbsp;color: #555555;<br />
}</code></p>
<p>Add the following after the opening curly bracket:<br />
<code>&nbsp;&nbsp;&nbsp;&nbsp;display: none;</code></p>
<p>When you refresh the admin page, the update nag will be gone forever. </p>
<p>However! With great <strike>power</strike> <strike><a href="http://flashyourstache.wordpress.com/2008/01/15/peter-griffin-grows-a-mustache/">moustache</a></strike> CSS comes great responsibility. The WordPress developers made such a prominent prompt because keeping software up to date is important. There are often important security improvements between versions. <b>If</b> you turn off the nag, you still have a responsibility to yourself, your users and The Internet at large to keep WordPress reasonably up to date. Put a recurring item in your calendar to update about once a month. </p>
<p>*You could also eliminate all the other styling applied to the now-invisible element and end up with fewer characters than you started.</p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2012/02/08/how-to-never-again-see-wordpress-update-nag-no-plugin-necessary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links for this week</title>
		<link>http://kjcoop.org/2012/01/22/links-for-this-week/</link>
		<comments>http://kjcoop.org/2012/01/22/links-for-this-week/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 04:58:03 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[family]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[nerdery]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1554</guid>
		<description><![CDATA[Any given day I pick out several stories in my RSS feed reader to follow up on, and so far they&#8217;ve just been building up. In an effort to un-flag some of them, I&#8217;ll be linking to stories that caught my interest this week: Fark: &#8220;The mayor of the capital of Iceland, a comedian and [...]]]></description>
			<content:encoded><![CDATA[<p>Any given day I pick out several stories in my RSS feed reader to follow up on, and so far they&#8217;ve just been building up. In an effort to un-flag some of them, I&#8217;ll be linking to stories that caught my interest this week:</p>
<ul>
<li>Fark: &#8220;<a href="http://www.grapevine.is/Features/ReadArticle/new-years-address-jon-gnarr-2012">The mayor of the capital of Iceland, a comedian and founder of the Best Party, writes what could possibly be the most intelligent and insightful welcome to the New Year, ever.</a>&#8221;  <a href="http://www.fark.com/comments/6880271">Comments</a>. &#8211; What the mayor of Reykjavík most looks forward to in 2012:<br />
<blockquote>What I most look forward to in the coming year is acquiring an Obi Wan Kenobi costume and wearing it around and practicing Jedi-tricks. I also hope I will be permitted to marry people. I also would very much like to see more tourists in Reykjavík. I am mostly interested in getting people that are rich, interested in swimming and like to spend a lot of money on nonsense. Others are also welcome, though.</p></blockquote>
</li>
<li>Slashdot: <a href="http://mobile.slashdot.org/story/12/01/16/0426225/ask-slashdot-setting-up-a-wireless-catch-and-release">Ask Slashdot: Setting Up a Wireless Catch-and-Release</a> &#8211; This is one of the many projects I have been meaning to get around to. </li>
<li>Ars Technica: <a href="http://arstechnica.com/business/news/2012/01/native-json-features-submitted-for-postgresql-92.ars">Native JSON features submitted for PostgreSQL 9.2</a></li>
<li>Slashdot: <a href="http://developers.slashdot.org/story/12/01/17/141244/ask-slashdot-best-open-source-answer-to-dreamweaver">Ask Slashdot: Best Open Source Answer to Dreamweaver?</a> &#8211; Every once in a while I look for one of these for the non-technical people I work with, and I never find what I&#8217;m looking for. The Slashdot consensus seems to be torn between &#8220;It&#8217;s unnecessary&#8221; and &#8220;It doesn&#8217;t exist&#8221;. I&#8217;m inclined to agree with the comments indicating a good CMS can eliminate the need for a WYSIWYG editior.</li>
<li>Slashdot: <a href="http://news.slashdot.org/story/12/01/17/1910204/tackling-open-sources-gender-issues">Tackling Open Source&#8217;s Gender Issues</a> &#8211; I always hope these threads will be interesting, but inevitably they fill with comments along the lines of &#8220;Women just don&#8217;t like programming, can&#8217;t we accept that men and women are inherently different?&#8221; with a side of evolutionary psychology about how women&#8217;s lives and behavior revolve entirely around <a href="http://knowyourmeme.com/memes/how-is-babby-formed">babbys</a>. </li>
<li>Racialicious: <a href="http://www.racialicious.com/2012/01/19/exploring-the-problematic-and-subversive-shit-people-say-meme-ology/">Exploring the Problematic and Subversive Shit People Say [Meme-ology]</a> &#8211; I&#8217;ve been seeing a lot of these showing up on Facebook and I was curious how/what these all spurred from, and this is a good rundown. </li>
<li>No, Seriously, What About Teh Menz?: <a href="http://noseriouslywhatabouttehmenz.wordpress.com/2012/01/18/male-friendship/">Male Friendship</a> &#8211; Linked for the following passage:<br />
<blockquote>This is not even to mention the sentence that was– I am not even joking– included in the video: “men have a hard time seeing women as human.” WHAT? I had to pause the video to glare at it. I think that that’s the epitome of how feminism without masculism is stumbling around in the dark unable to find a light-switch.</p></blockquote>
</li>
<li>Slashdot: <a href="http://yro.slashdot.org/story/12/01/18/2247223/us-supreme-court-upholds-removal-of-works-from-public-domain">US Supreme Court Upholds Removal of Works From Public Domain</a><br />
Ars Technica: <a href="http://arstechnica.com/tech-policy/news/2012/01/supreme-court-rules-congress-can-re-copyright-public-domain-works.ars">Supreme Court rules Congress can re-copyright public domain works</a><br />
&nbsp;<br />
My <a href="http://www.telegraph.co.uk/technology/news/8679633/An-outdated-law-that-puts-a-cap-on-creativity.html">distaste</a> for the <a href="http://en.wikipedia.org/wiki/Copyright_Term_Extension_Act#Opposition">ever-growing length of copyright</a> not withstanding, such a decision threatens web sites like <a href="http://www.gutenberg.org/">Project Gutenberg</a>, which could share a work which is public domain, only to have it revoked from the public domain and be cited before they have a chance to remove the previously <a href="http://en.wikipedia.org/wiki/Gratis_versus_libre">free-as-in-liberty</a> work. </li>
<li>Fark: <a href="http://www.webpronews.com/porn-sites-black-out-for-sopa-2012-01">Porn sites black out in protest of SOPA. EVERYBODY PANIC</a> <a href="http://www.fark.com/comments/6887117">Comments</a></li>
<li>Fark: <a href="http://www.mauiweekly.com/page/content.detail/id/509257/Will-Permablitzing-Come-to-Maui-.html?nav=13">Speed-gardening craze hits Maui. This used to be real estate, now it&#8217;s only fields and trees. Where, where is the town?</a> <a href="http://www.fark.com/comments/6888593">Comments</a> &#8211; Apparently <a href="http://en.wikibooks.org/wiki/PermaBlitz">permablitzing</a> is a thing. Who knew?</li>
<li>Fark: <a href="http://www.mnn.com/lifestyle/arts-culture/stories/anti-church-sentiment-rises-in-europe-as-more-people-seek-de-baptism">Anybody can decide to be an atheist. But only the hardcore converted atheists actually have themselves de-baptized</a> <a href="http://www.mnn.com/lifestyle/arts-culture/stories/anti-church-sentiment-rises-in-europe-as-more-people-seek-de-baptism">Comments</a></li>
<li>Kate Bornstein&#8217;s Blog for Teens, Freaks and Other Outlaws: <a href="http://katebornstein.typepad.com/kate_bornsteins_blog/2012/01/call-for-submissions-my-new-gender-workbook.html">Please Help Me Update My Gender Workbook</a> &#8211; Kate Bornstein&#8217;s <a href="http://www.amazon.com/Gender-Outlaw-Men-Women-Rest/dp/0679757015">Gender Outlaw</a> changed my life. Although I have not have the pleasure of reading the entire workbook, <a href="http://www.amazon.com/gp/product/0415916739/ref=pd_lpo_k2_dp_sr_3?pf_rd_p=486539851&#038;pf_rd_s=lpo-top-stripe-1&#038;pf_rd_t=201&#038;pf_rd_i=0679757015&#038;pf_rd_m=ATVPDKIKX0DER&#038;pf_rd_r=0A9PT4D4JZJQ9PN11KGX">My Gender Workbook</a> is an interactive exploration of the reader&#8217;s gender identity, and probably the closes I&#8217;ll ever get to having the chance to have tea with the author.</li>
<li>Coderholic: <a href="http://www.coderholic.com/goodbye-wordpress-hello-jekyll/">Goodbye WordPress, Hello Jekyll!</a> &#8211; I love WordPress, but <a href="https://github.com/mojombo/jekyll">Jekyll&#8217;s</a> use of static HTML files is bound to be faster and more efficient than WordPress. I definitely plan to check it out for future projects.</li>
<li>Ars Technica: <a href="http://arstechnica.com/business/news/2012/01/hands-on-building-an-html5-photo-booth-with-chromes-new-webcam-api.ars">Hands on: building an HTML5 photo booth with Chrome&#8217;s new webcam API</a> &#8211; <a href="http://www.linuxinsider.com/story/Why-Richard-Stallman-Takes-No-Shine-to-Chrome-71469.html">I dislike Chrome</a>, but this is pretty cool.</li>
<li>Apartment Therapy: <a href="http://www.apartmenttherapy.com/keeping-your-data-safe-164644">Keeping Your Data Safe</a> &#8211; Although it&#8217;s light on ideas, this brief article is a decent introduction for a non-technical person to the idea that a backup drive sitting next to your computer isn&#8217;t enough. It voices my aversion to putting backups on &#8220;The Cloud&#8221;, I&#8217;d like to add that you can potentially simplify your life by keeping off-site backups at a friend&#8217;s house, your office or a safety deposit box, depending upon the value of the data and the privacy it requires.</li>
<li>Slashdot: <a href="http://hardware.slashdot.org/story/12/01/20/2312217/adafruits-open-source-wearable-platform-flora">Adafruit&#8217;s Open-source Wearable Platform, Flora</a> &#8211; I&#8217;m fascinated to see where this goes. </li>
<li>Related Topics: <a href="http://julieshapiro.wordpress.com/2012/01/18/the-durability-of-motherhood/">The Durability of Motherhood</a> &#8211; This story relates to my interest in family dynamics and how people become family. The linked article is about a woman whose mother has been in jail most of her life. The woman&#8217;s grandparents took her to see her mother regularly. The author makes an interesting point about the construction of parenthood (which I mentally extend to all familial relationships).<br />
<blockquote>I suppose one is not a parent in isolation (in my view).   Affirmation of parenthood by a community around the child is a critical component.   Without that affirmation I am not sure what the relationship here becomes.</p></blockquote>
</li>
<li>The Wild Hunt: <a href="http://www.patheos.com/blogs/wildhunt/2012/01/unleash-the-hounds-link-roundup-41.html">Unleash the Hounds! (Link Roundup)</a> &#8211; The third bullet-point discusses open marriage and how it interfaces with the pagan community. <br />
&nbsp;<br />
The story links to an interesting article by <a href="http://childwild.com/2011/10/11/sex-ed-one-awkward-conversation-at-a-time/">Sierra Black</a>, <a href="http://www.salon.com/2012/01/21/our_successful_open_marriage/singleton/">Our Successful Open Marriage</a>.<br />
&nbsp;<br />
Another story linked to quotes <a href="http://www.practicalpolyamory.com/">Anita Wagner</a> as saying, &#8220;It&#8217;s not something we&#8217;re used to doing. We have no role models for this.&#8221; I&#8217;m quoting it here because it strikes me as something that comes up frequently not only for people in polyamorous relationships, but for all of us who find ourselves defining our own unconventional families.<br />
&nbsp;<br />
This is apropos of a story previously covered on <a href="http://www.patheos.com/blogs/wildhunt/2011/11/what-does-canadas-polygamy-decision-mean-for-polyamorous-pagans.html">The Wild Hunt</a> about Canada&#8217;s recent court decision proclaiming polygamy illegal. It was also covered on <a href="http://www.fark.com/comments/6764546">Fark</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2012/01/22/links-for-this-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading to WordPress 3.3 &#8211; the missing &#8220;Format&#8221; box</title>
		<link>http://kjcoop.org/2011/12/16/upgrading-to-wordpress-3-3-the-missing-format-box/</link>
		<comments>http://kjcoop.org/2011/12/16/upgrading-to-wordpress-3-3-the-missing-format-box/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 09:44:00 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[updates]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1523</guid>
		<description><![CDATA[I recently installed WordPress 3.3 for a client, and I was very impressed. Specifically I was excited about tinkering around with the &#8220;Format&#8221; box, which allows you to post in a variety of formats, including, &#8220;Status&#8221;, &#8220;Gallery&#8221; and the regular post format &#8220;Standard&#8221;. I wasted no time upgrading this site to WordPress 3.3, but no [...]]]></description>
			<content:encoded><![CDATA[<p>I recently installed WordPress 3.3 for a client, and I was very impressed. Specifically I was excited about tinkering around with the &#8220;Format&#8221; box, which allows you to post in a variety of formats, including, &#8220;Status&#8221;, &#8220;Gallery&#8221; and the regular post format &#8220;Standard&#8221;. </p>
<p>I wasted no time upgrading this site to WordPress 3.3, but no fun format box. I poked around at options and Googled, to no avail. Most suggestions seemed to revolve around some browser problem, but I could see it on the other site, plain as day, so my browser was obviously capable of displaying it.</p>
<p>For lack of a better idea, I started grepping. I used Firebug to get the id attribute (&#8220;formatdiv&#8221;), figuring there would be a finite number of instances in the code. Indeed, there was exactly one. It was in wp-admin/edit-form-advanced.php. There were two relevant lines:<br />
<code>if ( current_theme_supports( 'post-formats' ) &#038;&#038; post_type_supports( $post_type, 'post-formats' ) )<br />
&nbsp;&nbsp;&nbsp;&nbsp;add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' );<br />
</code></p>
<p>This alerted me that it was a problem with the theme, which unsurprising considering that I&#8217;m still using a customized version of the 2009 default theme. I knew it worked in the latest theme, twentyeleven, so I went to that directory and grepped for &#8216;format&#8217; and braced myself for the worst. Once I eliminated the CSS files, it was easy to hone in on line 104 of functions.php<br />
<code>        add_theme_support( 'post-formats', array( 'aside', 'link', 'gallery', 'status', 'quote', 'image' ) );</code></p>
<p>This takes place in a function called setup. I went over to my theme and looked for a similar function in the functions.php file. It did not have one. I pasted it in toward the middle of the file and hoped for the best. The format box appeared like magic. I haven&#8217;t actually tinkered with it yet, but I wanted to write up my experiences &#8211; before I forget them &#8211; so that someone else with an old theme can bring some new magic into their WordPress experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2011/12/16/upgrading-to-wordpress-3-3-the-missing-format-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Privacy is controlling your own data</title>
		<link>http://kjcoop.org/2011/11/27/privacy-is-controlling-your-own-data/</link>
		<comments>http://kjcoop.org/2011/11/27/privacy-is-controlling-your-own-data/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 23:35:46 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[data ownership]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1413</guid>
		<description><![CDATA[One topic I find myself ruminating on is the ability to own your own data. For example, many of us use Facebook or Google Calendar, and all the information we&#8217;ve painstakingly entered there is available for our use, but if we want to move to a different service, we can&#8217;t just pick up our data [...]]]></description>
			<content:encoded><![CDATA[<p>One topic I find myself ruminating on is the ability to own your own data. For example, many of us use Facebook or Google Calendar, and all the information we&#8217;ve painstakingly entered there is available for our use, but if we want to move to a different service, we can&#8217;t just pick up our data and go, we have to re-enter a lot of information, but some of the information we just lose. </p>
<p>Google and Facebook and Twitter have various APIs to allow some amount of access to our (and other peoples&#8217; data), but it&#8217;s still only as much as the provider cares to share. The data is still subject to the providers&#8217; deletion. Also, an API is fantastic if you&#8217;re a programmer with spare time, but an end user doesn&#8217;t have a lot of options.</p>
<p>There are some tools that aid to this end, but not nearly as many as I&#8217;d like. I haven&#8217;t investigated any of the following as thoroughly as I&#8217;d like, but for any interested party:</p>
<ul>
<li><a href="http://www.google.com/support/calendar/bin/answer.py?answer=37111">Google natively allows you to backup your calendar</a></li>
<li><a href="http://dataliberation.blogspot.com/">Data Liberation Blog</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/archivefacebook/">Archive Facebook</a>An experimental Firefox Addon that will backup your profile.</li>
</ul>
<p>Although not a specific tool, there are <a href="http://en.wikipedia.org/wiki/Distributed_social_network">distributed social networks</a>. These are pieces of software with functionality similar to Facebook or MySpace or Friendster that you can install on your own machine. I believe some support being install across multiple machines, so I could have a copy on my server, my friend who&#8217;s a privacy nut could have a copy on their server, but we could interact with eachother like we&#8217;re both on the same site. To me, this type of social network has the most advantage, because it allows anyone who wants absolute ownership of their data to have it, while those who don&#8217;t care can just sign up and be an end user. </p>
<p>The downfall with a social network that isn&#8217;t already established is that since we use it to socialize, it&#8217;s not very useful until it reaches a certain critical mass. Most of our friends don&#8217;t want to leave their existing social network because it has all their data and all their friends. However, now is a great time to try to break that barrier. The buzz (no pun intended) around <a href="http://www.itweb.co.za/index.php?option=com_content&amp;view=article&amp;id=45182:does-google-privacy-add-up&amp;catid=69">Google+</a> is putting doubt into people&#8217;s minds that Facebook is The Only Way. A lot of my friends are signing up without any investment, mostly to just see what it&#8217;s about. Now would be a great time for some enterprising nerd to take advantage of that curiosity. </p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2011/11/27/privacy-is-controlling-your-own-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improved improved GPS removal</title>
		<link>http://kjcoop.org/2010/10/22/improved-improved-gps-removal/</link>
		<comments>http://kjcoop.org/2010/10/22/improved-improved-gps-removal/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 06:43:24 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[remove GPS tags]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1360</guid>
		<description><![CDATA[I updated my jpeg geotag-removal script to recurse subdirectories. With that came the requirement to filter out irelevant files (not jpeg, no EXIF information). Below is the new script. I hope you find it useful: #!/bin/bash # Will remove non-essential EXIF from a jpeg while retaining Date/Time value. # Use it to remove GPS information [...]]]></description>
			<content:encoded><![CDATA[<p>I updated <a href="http://kjcoop.org/2010/08/13/improved-gps-removal/">my jpeg geotag-removal script</a> to recurse subdirectories. With that came the requirement to filter out irelevant files (not jpeg, no EXIF information). Below is the new script. I hope you find it useful:<br />
<code>#!/bin/bash<br />
# Will remove non-essential EXIF from a jpeg while retaining Date/Time value.<br />
# Use it to remove GPS information from pictures I want to put on the internet.<br />
&nbsp;<br />
# Created Wed Aug 11 18:43:03 PDT 2010<br />
&nbsp;<br />
# For handling spaces. See:<br />
# <a href="http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html">http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html</a><br />
SAVEIFS=$IFS<br />
IFS=$(echo -en "\n\b")<br />
&nbsp;<br />
for img in $@; do<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file_type=`file -b $img`<br />
&nbsp;&nbsp;&nbsp;&nbsp;file_type=${file_type:0:15}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [ -d "$img" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "$img" is a directory - recursing<br />
&nbsp;&nbsp;&nbsp;&nbsp;$0 "$img/*"<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;elif [ $file_type == "JPEG image data" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Grab the original date/time<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DT=`jhead "$img"|grep 'Date/Time'`<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# If the date information started out<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# blank, trying to tack it back on<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# will result in an error<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ "$DT" == '' ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Current format: " Date/Time    : yyyy:mm:dd hh:mm:ss"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# jhead requires: yyyy:mm:dd-hh:mm:ss<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DT=${DT:15:25}-${DT:25}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Strip non-essential information<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jhead -purejpg "$img"<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Put the date/time back<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jhead -mkexif -ts$DT "$img"<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "$img" is not a JPG - ignoring $file_type<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2010/10/22/improved-improved-gps-removal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking Tracks to accept shorter usernames</title>
		<link>http://kjcoop.org/2010/10/18/hacking-tracks-to-accept-shorter-usernames/</link>
		<comments>http://kjcoop.org/2010/10/18/hacking-tracks-to-accept-shorter-usernames/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 06:40:21 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[tracks]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1357</guid>
		<description><![CDATA[I&#8217;m looking at Tracks/Shuffle to manage to-do lists on my phone/computer. I&#8217;m scouring the tubes for one that doesn&#8217;t involve me handing my data off to someone else. I like Shuffle because it can synch to any Tracks server you specify, and since Tracks is free software, it&#8217;s easy to install on any server. In [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m looking at <a href="http://www.getontracks.org/">Tracks</a>/<a href="http://code.google.com/p/android-shuffle/">Shuffle</a> to manage to-do lists on my phone/computer. I&#8217;m scouring the tubes for one that doesn&#8217;t involve me handing my data off to someone else. I like Shuffle because it can synch to any Tracks server you specify, and since Tracks is free software, it&#8217;s easy to install on any server. </p>
<p>In an effort to be able to use my usual login (kj), I H@X0R-H@X0R-H@X0R-ed the code to lower the minimum login from 3 to 2 characters. It&#8217;s not rocket science, but I hope it&#8217;ll save somebody else a bit of grepping: </p>
<p>In app/models/user.rb, line 115, change</p>
<blockquote><p>  validates_length_of :login, :within =&gt; 3..80</p></blockquote>
<p>to</p>
<blockquote><p>  validates_length_of :login, :within =&gt; 2..80</p></blockquote>
<p>In spec./models/user_spec.rb, line 81, change</p>
<blockquote><p>  it_should_validate_length_of :login, :within =&gt; 3..80</p></blockquote>
<p>to</p>
<blockquote><p>  it_should_validate_length_of :login, :within =&gt; 2..80</p></blockquote>
<p>If you&#8217;re feeling really ambitious, you could even change the error messages to be accurate. In test/unit/user_test.rb,. line 87:</p>
<blockquote><p>      assert_error_on u, :login, &#8220;is too short (minimum is 3 characters)&#8221;</p></blockquote>
<p>to</p>
<blockquote><p>      assert_error_on u, :login, &#8220;is too short (minimum is 2 characters)&#8221;</p></blockquote>
<p>Again in test/unit/user_test.rb,. this time on line 107:</p>
<blockquote><p>      assert_errors_on u, :login, ["can't be blank", "is too short (minimum is 3 characters)"]</p></blockquote>
<p>to</p>
<blockquote><p>      assert_errors_on u, :login, ["can't be blank", "is too short (minimum is 2 characters)"]</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2010/10/18/hacking-tracks-to-accept-shorter-usernames/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improved GPS removal</title>
		<link>http://kjcoop.org/2010/08/13/improved-gps-removal/</link>
		<comments>http://kjcoop.org/2010/08/13/improved-gps-removal/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 10:21:34 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[remove GPS tags]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1349</guid>
		<description><![CDATA[I recently posted about a way to remove the GPS information from pictures. I wrote a script that will retain the Date/Time information. It requires jhead. #!/bin/bash # Will remove non-essential EXIF from a jpeg # while retaining Date/Time value. I use it to # remove GPS information from pictures I # want to put [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://kjcoop.org/2010/08/11/removing-gps-data-from-an-image/">recently posted</a> about a way to remove the GPS information from pictures. I wrote a script that will retain the Date/Time information. It requires <a href="http://www.sentex.ca/~mwandel/jhead/">jhead</a>.<br />
<code>#!/bin/bash<br />
# Will remove non-essential EXIF from a jpeg<br />
# while retaining Date/Time value. I use it to<br />
# remove GPS information from pictures I<br />
# want to put on the internet.<br />
&nbsp;<br />
# Created Wed Aug 11 18:43:03 PDT 2010<br />
&nbsp;<br />
# For handling spaces. See:<br />
# http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html<br />
SAVEIFS=$IFS<br />
IFS=$(echo -en "\n\b")<br />
&nbsp;<br />
for img in $@; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo Working on "$img"<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Grab the original date/time<br />
&nbsp;&nbsp;&nbsp;&nbsp;DT=`jhead "$img"|grep 'Date/Time'`<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Current format: " Date/Time    : yyyy:mm:dd hh:mm:ss"<br />
&nbsp;&nbsp;&nbsp;&nbsp;# jhead requires: yyyy:mm:dd-hh:mm:ss<br />
&nbsp;&nbsp;&nbsp;&nbsp;DT=${DT:15:25}-${DT:25}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Strip non-essential information<br />
&nbsp;&nbsp;&nbsp;&nbsp;jhead -purejpg "$img"<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Put the date/time back<br />
&nbsp;&nbsp;&nbsp;&nbsp;jhead -mkexif -ts$DT "$img"<br />
done</code></p>
<p>It accepts image files as arguments. You can pass as many or as few as you feel like. If you&#8217;re interested in keeping other non-essential exif data, you might want to look into the jhead argument &#8220;-te&#8221;. </p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2010/08/13/improved-gps-removal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing GPS data from an image</title>
		<link>http://kjcoop.org/2010/08/11/removing-gps-data-from-an-image/</link>
		<comments>http://kjcoop.org/2010/08/11/removing-gps-data-from-an-image/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 08:57:21 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[nerdery]]></category>
		<category><![CDATA[remove GPS tags]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1344</guid>
		<description><![CDATA[I constantly forget how to remove the geotags from my pictures before I put them on the internet. Here&#8217;s an imperfect way to do so: jhead -purejpg /path/to/image.jpg Source This will get rid of timestamps and other ancillary information that you may want to keep attached to the image. It seems like it would be [...]]]></description>
			<content:encoded><![CDATA[<p>I constantly forget how to remove the geotags from my pictures before I put them on the internet. Here&#8217;s an imperfect way to do so:<br />
<code>jhead -purejpg /path/to/image.jpg</code><br />
<a href="http://blog.techfun.org/2009/11/how-to-remove-exif-data-from-jpeg-files-in-ubuntu/" target="_blank">Source</a></p>
<p>This will get rid of timestamps and other ancillary information that you may want to keep attached to the image. It seems like it would be pretty simple to write a script that uses jhead with no arguments to grab the Date/Time field, then run it again with -purejpg to remove all extraneous data, then run it a third time with the appropriate arguments to re-set the Date/Time field. </p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2010/08/11/removing-gps-data-from-an-image/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Technology as explained by my mother: The Internet</title>
		<link>http://kjcoop.org/2010/07/07/technology-as-explained-by-my-mother-the-internet/</link>
		<comments>http://kjcoop.org/2010/07/07/technology-as-explained-by-my-mother-the-internet/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 03:32:45 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Lulz]]></category>
		<category><![CDATA[Mom explains technology]]></category>
		<category><![CDATA[nerdery]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1305</guid>
		<description><![CDATA[I was lamenting to my mother the difficulty in explaining technical answers to people who have limited experience with technology. She sighed sympathetically and said something along the lines of, &#8220;It&#8217;s very difficult for people who are used to dealing with a physical object to understand this thing fluttering all around us, breaking all the [...]]]></description>
			<content:encoded><![CDATA[<p>I was lamenting to my mother the difficulty in explaining technical answers to people who have limited experience with technology. She sighed sympathetically and said something along the lines of, &#8220;It&#8217;s very difficult for people who are used to dealing with a physical object to understand this thing fluttering all around us, breaking all the laws of physics.&#8221;<br />
&#8220;Wait, where did you think the Internet is?&#8221;<br />
She made a fluttering motion with her hands, &#8220;All around us. Like God.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2010/07/07/technology-as-explained-by-my-mother-the-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technology as explained by my mother</title>
		<link>http://kjcoop.org/2010/07/02/technology-as-explained-by-my-mother/</link>
		<comments>http://kjcoop.org/2010/07/02/technology-as-explained-by-my-mother/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 03:26:48 +0000</pubDate>
		<dc:creator>KJ Coop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Lulz]]></category>
		<category><![CDATA[Mom explains technology]]></category>
		<category><![CDATA[nerdery]]></category>

		<guid isPermaLink="false">http://kjcoop.org/?p=1307</guid>
		<description><![CDATA[Someday I&#8217;d like to rent out a hall or theater and charge $5 a head for my mom to answer the audience&#8217;s technical questions. The audience would require a certain amount of savvy to realize that her answers are hilarious, not informative. I&#8217;ll probably never get around to renting that space, so in the mean [...]]]></description>
			<content:encoded><![CDATA[<p>Someday I&#8217;d like to rent out a hall or theater and charge $5 a head for my mom to answer the audience&#8217;s technical questions. The audience would require a certain amount of savvy to realize that her answers are hilarious, not informative. </p>
<p>I&#8217;ll probably never get around to renting that space, so in the mean time, I&#8217;ll be posting them here, in a series I call &#8220;<a href="http://kjcoop.org/tag/mom-explains-technology/">Technology As Explained By My Mother</a> &#8220;. <a href="http://kjcoop.org/2010/06/29/technology-as-explained-by-my-mother-links/">The first installment</a> has already been posted. I&#8217;ve got a few such episodes drafted, I can be reasonably certain this will be at least a three-part series. I hope you enjoy them as much as I do.</p>
]]></content:encoded>
			<wfw:commentRss>http://kjcoop.org/2010/07/02/technology-as-explained-by-my-mother/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

