<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>flagrantdisregard</title>
	
	<link>http://flagrantdisregard.com</link>
	<description />
	<lastBuildDate>Sat, 24 Mar 2012 19:09:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/flagrantdisregard" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="flagrantdisregard" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">flagrantdisregard</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Pants</title>
		<link>http://flagrantdisregard.com/pants/</link>
		<comments>http://flagrantdisregard.com/pants/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 19:09:49 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[conversations]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3094</guid>
		<description><![CDATA[Me: Are you guys dressed yet? The Girl: No. The Boy: No&#8230; I&#8217;m not even wearing pants.]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Me:</strong> Are you guys dressed yet?</p>
<p><strong>The Girl: </strong>No.</p>
<p><strong>The Boy: </strong>No&#8230; I&#8217;m not even wearing pants.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/nzwZN0aHnY8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/pants/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It. Just. Works.</title>
		<link>http://flagrantdisregard.com/it-just-works/</link>
		<comments>http://flagrantdisregard.com/it-just-works/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:47:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3091</guid>
		<description><![CDATA[Just upgraded the guts of my Ubuntu 11.10 desktop to Sandy Bridge: Asus P8Z68-V PRO/GEN3 paired with an i5-2500K and 16GB of G.SKILL DDR3 1866. I&#8217;m using an Nvidia card rather than the onboard graphics. No drivers to install. No fuss. Ubuntu booted without missing a beat. It just works.]]></description>
			<content:encoded><![CDATA[<p>Just upgraded the guts of my Ubuntu 11.10 desktop to Sandy Bridge: Asus P8Z68-V PRO/GEN3 paired with an i5-2500K and 16GB of G.SKILL DDR3 1866. I&#8217;m using an Nvidia card rather than the onboard graphics.</p>
<p>No drivers to install. No fuss. Ubuntu booted without missing a beat. It just works.</p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/s3b1clRYzDA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/it-just-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cycling + Google Spreadsheets</title>
		<link>http://flagrantdisregard.com/cycling-google-spreadsheets/</link>
		<comments>http://flagrantdisregard.com/cycling-google-spreadsheets/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 19:30:10 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[health & fitness]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3067</guid>
		<description><![CDATA[I&#8217;ve been cycling on a stationary bike for a little over a month now. The bike itself has gizmos to record miles and speeds and stuff but I wanted to keep a record that was outside of the bike itself. Looked around for some software for this (of course) and found a bunch of software [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been cycling on a stationary bike for a little over a month now. The bike itself has gizmos to record miles and speeds and stuff but I wanted to keep a record that was outside of the bike itself. Looked around for some software for this (of course) and found a bunch of software and online services that would fit the bill (of course) but decided to just go simple with a Google docs spreadsheet.</p>
<p>My spreadsheet has three columns that track the date I biked, how far I went, and how long it took me: Date, Miles, Time. That&#8217;s all I care about, for now. But from that I can derive data like my average speed (miles/time) and do a chart of my progress. But what I really want to know is how far I&#8217;ve gone in total, how far I&#8217;ve gone this week, and how far I&#8217;ve gone this month. And that&#8217;s when I discovered the magic that is the Google docs <a href="https://docs.google.com/support/bin/answer.py?answer=1388882">QUERY</a> function. It is very cool. It basically lets you do something akin to a SQL select statement on your spreadsheet data. So here&#8217;s what I came up with to automatically calculate my total miles this week and this month (overall total is easily done with the built-in sum() function). The hairy stuff below are the contents of cells and you can copy and paste into your spreadsheet.</p>
<p>This week:</p>
<p><code>=query(A:B, "select sum(B) where A &gt;= date '" &amp; text(date(year(today()-weekday(today())+1),month(today()-weekday(today())+1), day(today()-weekday(today())+1)), "YYYY-MM-DD") &amp;  "' and A &lt;= date '" &amp; text(date(year(today()-weekday(today())+7),month(today()-weekday(today())+7), day(today()-weekday(today())+7)), "YYYY-MM-DD") &amp; "' label sum(B) 'THIS WEEK " &amp; text(date(year(today()-weekday(today())+1),month(today()-weekday(today())+1), day(today()-weekday(today())+1)), "M/D") &amp; "'")</code></p>
<p>This month:</p>
<p><code>=query(A:B, "select sum(B) where A >= date '" &#038; text(date(year(today()),month(today()), 1), "YYYY-MM-DD") &#038;  "' and A <= date '" &#038; text(date(year(today()),month(today())+1, 1)-1, "YYYY-MM-DD") &#038; "' label sum(B) 'THIS MONTH " &#038; upper(text(date(year(today()),month(today()), 1), "MMM")) &#038; "'")</code></p>
<p>So let's break down the "This week" query. The cell starts with <code>=query()</code> which tells the spreadsheet to calculate that function and put the result in this cell. <code>A:B</code> is the range for the query. In this case, every cell in columns A and B (where A has my dates and B has my miles). Then the query itself is structured like this:</p>
<p><code>select sum(B) where A >= date 'XXX' and A <= date 'YYY' label sum(B) 'ZZZ'</code></p>
<p>I took out all of the date calculations so you can see it more clearly. It just says "get the sum of column B where column A is between two dates". Pretty simple. The main trick is calculating the date ranges for the start and end of the current week and the start and end of the current month. And here's how you do that. Hopefully you can see where the calculations below plug in above and follow along.</p>
<p>The current week starts on <code>today()-weekday(today())+1</code>. That is, "today - the day of the week + 1". So if today is Monday Oct 24, then this code would calculate: Monday Oct 24 - 2 + 1. Which ends up being Sunday Oct 23. And of course the last day of the week is just 6 days after that: <code>today()-weekday(today())+7</code>. (This is just the first expression +6 where the +1 and +6 have been summed.)</p>
<p>"This month" works exactly the same way but with different dates. The current month starts on <code>date(year(today()),month(today()), 1)</code>. That is, "a new date based on the current year, the current month, and use 1 for the day". And the current month ends on <code>date(year(today()),month(today())+1, 1)-1</code>. That is, "a new date based on the 1st of the month after this one minus 1 day". You can optimize this a little by using the <code>eomonth()</code> function (which calculates end of month dates)---but I like my way because I can see exactly what's going on.</p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/Keodw57BT_s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/cycling-google-spreadsheets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It’s the little things</title>
		<link>http://flagrantdisregard.com/its-the-little-things/</link>
		<comments>http://flagrantdisregard.com/its-the-little-things/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 06:36:14 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[conversations]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[peanut butter]]></category>
		<category><![CDATA[son]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=1951</guid>
		<description><![CDATA[Son: Dad, I need help. Me: With what? Son: I&#8217;m trying to make a peanut butter and jelly but I can&#8217;t open the jelly. It&#8217;s too hard. Me: OK, I can help you with that. Son: And the second problem is I can&#8217;t find the bread! Me: We&#8217;ll find that, too. Come on. Son: Thanks, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Son:</strong> Dad, I need help.<br />
<strong>Me:</strong> With what?<br />
<strong>Son:</strong> I&#8217;m trying to make a peanut butter and jelly but I can&#8217;t open the jelly. It&#8217;s too hard.<br />
<strong>Me:</strong> OK, I can help you with that.<br />
<strong>Son:</strong> And the second problem is I can&#8217;t find the bread!<br />
<strong>Me:</strong> We&#8217;ll find that, too. Come on.<br />
<strong>Son:</strong> Thanks, Dad.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/tcu5AHzalV0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/its-the-little-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Machine vision</title>
		<link>http://flagrantdisregard.com/machine-vision/</link>
		<comments>http://flagrantdisregard.com/machine-vision/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 20:03:26 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[dance]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3032</guid>
		<description><![CDATA[Working on a project for my wife to create an abstract representation of a modern dance piece to project behind the live performance. If it all works out I&#8217;ll post a video of the performance. I&#8217;m writing the app in Processing with the OpenCV library (the v2 beta because the movie() function wouldn&#8217;t work for [...]]]></description>
			<content:encoded><![CDATA[<p>Working on a project for my wife to create an abstract representation of a modern dance piece to project behind the live performance. If it all works out I&#8217;ll post a video of the performance. I&#8217;m writing the app in <a href="http://processing.org">Processing</a> with the <a href="http://ubaa.net/shared/processing/opencv/">OpenCV</a> library (the v2 beta because the movie() function wouldn&#8217;t work for me in v1).</p>
<p>The app uses OpenCV to do some processing on live output from my video camera. Here are some screengrabs from the prototype so far:</p>
<p><img class="aligncenter size-full wp-image-3033" title="Me + OpenCV + Processing" src="http://flagrantdisregard.com/wp-content/uploads/2011/08/opencv-me.png" alt="" width="640" height="424" /></p>
<p><img class="aligncenter size-full wp-image-3034" title="Me + OpenCV + Processing" src="http://flagrantdisregard.com/wp-content/uploads/2011/08/opencv-me-blob.png" alt="" width="640" height="424" /></p>
<p>I look younger without a nose.</p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/bmpLOOMYgQo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/machine-vision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carnivorous thing</title>
		<link>http://flagrantdisregard.com/carnivorous-thing/</link>
		<comments>http://flagrantdisregard.com/carnivorous-thing/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 04:51:51 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[pictures]]></category>
		<category><![CDATA[drawings]]></category>
		<category><![CDATA[sketches]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3018</guid>
		<description><![CDATA[I have no idea what it is but it came out of my imagination today. Maybe my subconscious is trying to say something about the economy. Look, I signed it and everything! Also, it&#8217;s cc-by-nc.]]></description>
			<content:encoded><![CDATA[<p>I have no idea what it is but it came out of my imagination today. Maybe my subconscious is trying to say something about the economy. Look, I signed it and everything! Also, it&#8217;s <a href="http://creativecommons.org/licenses/by-nc/3.0/">cc-by-nc</a>.</p>
<p><img class="aligncenter size-full wp-image-3021" title="Carnivorous thing" src="http://flagrantdisregard.com/wp-content/uploads/2011/08/carnivorous_thing_john_watson.jpg" alt="" width="448" height="896" /></p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/ATomsblYT4g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/carnivorous-thing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What language is that?</title>
		<link>http://flagrantdisregard.com/what-language-is-that/</link>
		<comments>http://flagrantdisregard.com/what-language-is-that/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 05:52:35 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[conversations]]></category>
		<category><![CDATA[daughter]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3014</guid>
		<description><![CDATA[Me: You&#8217;re the bee&#8217;s knees. Daughter: &#8230; Me: It means &#8221;you&#8217;re awesome.&#8221; Daughter: I know what it means, Dad. I speak &#8220;old people.&#8221;]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Me: </strong>You&#8217;re the bee&#8217;s knees.<br />
<strong>Daughter:</strong> &#8230;<br />
<strong>Me:</strong> It means &#8221;you&#8217;re awesome.&#8221;<br />
<strong>Daughter:</strong> I know what it means, Dad. I speak &#8220;old people.&#8221;</p></blockquote>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/ajHQKR7pWRY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/what-language-is-that/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fix for CrashPlan not remembering window position/size</title>
		<link>http://flagrantdisregard.com/crashplan-window-geometry/</link>
		<comments>http://flagrantdisregard.com/crashplan-window-geometry/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 05:24:35 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[crashplan]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3004</guid>
		<description><![CDATA[Last month I ditched rdiff-backup (which saved my bacon on a number of occasions) for CrashPlan+ with the Family Unlimited plan so I can backup all of our computers (one Ubuntu desktop, two Macs) locally and offsite. Used their seed service. Already had to do a small restore. Love it. Works great. The only problem I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Last month I ditched <a href="http://www.nongnu.org/rdiff-backup/">rdiff-backup</a> (which saved my bacon on a number of occasions) for <a href="http://www.crashplan.com/">CrashPlan</a>+ with the Family Unlimited plan so I can backup all of our computers (one Ubuntu desktop, two Macs) locally and offsite. Used their seed service. Already had to do a small restore. Love it. Works great.</p>
<p>The only problem I&#8217;ve had is this: it wouldn&#8217;t remember the window size and position of the desktop app on my Ubuntu machine. I installed CrashPlan as root as suggested by the installer (so that it can backup anything on the system). This put CrashPlan in /usr/local/crashplan, owned by root. Turns out that CrashPlan desktop wants to save window geometry in /usr/local/crashplan/conf. But it can&#8217;t because I run the desktop app as me, not as root.</p>
<p>So, the fix would be for CrashPlan to store user settings in the user&#8217;s home directory (for example ~/.crashplan/ui.properties). But the workaround until that happens is to manually create a properties file in the /usr/local/crashplan/conf folder that CrashPlan desktop has access to. Open a terminal and type:</p>
<pre>cd /usr/local/crashplan/conf
USERNAME=`whoami`
sudo touch ui_$USERNAME.properties
sudo chown $USERNAME ui_$USERNAME.properties</pre>
<p>That creates an empty properties file in the crashplan directory with your username that you have access to. You should be able to just copy that into a terminal. Double check the directory where CrashPlan is installed and note the backticks. My username is <em>john</em> so it creates a file named <em>ui_john.properties</em>. The next time you close CrashPlan, it will be able to write to that file so it will remember its window position and size.</p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/UxcoBlqjh3U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/crashplan-window-geometry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomato tells me when the kids wake up</title>
		<link>http://flagrantdisregard.com/tomato-tells-me-when-the-kids-wake-up/</link>
		<comments>http://flagrantdisregard.com/tomato-tells-me-when-the-kids-wake-up/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 17:24:46 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[tomato]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=3000</guid>
		<description><![CDATA[A side-effect of installing the Tomato firmware on my router&#8212;which I installed so that I could get an accurate picture of our household bandwidth usage across 9 devices&#8212;is that it tells me when my kids wake up in the morning. My son&#8217;s activity is mostly games. My daughter&#8217;s is mostly Netflix.]]></description>
			<content:encoded><![CDATA[<p>A side-effect of installing the <a href="http://en.wikipedia.org/wiki/Tomato_(firmware)">Tomato firmware</a> on my router&#8212;which I installed so that I could get an accurate picture of our household bandwidth usage across 9 devices&#8212;is that it tells me when my kids wake up in the morning.</p>
<p><img class="aligncenter size-full wp-image-3001" title="Bandwidth graph: When my kids wake up" src="http://flagrantdisregard.com/wp-content/uploads/2011/08/morning_bandwidth.png" alt="" width="757" height="300" /></p>
<p>My son&#8217;s activity is mostly games. My daughter&#8217;s is mostly Netflix.</p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/YoFDqGjMOyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/tomato-tells-me-when-the-kids-wake-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Terminating Amazon App Store agreement</title>
		<link>http://flagrantdisregard.com/terminating-amazon-app-store-agreement/</link>
		<comments>http://flagrantdisregard.com/terminating-amazon-app-store-agreement/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 18:00:34 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://flagrantdisregard.com/?p=2994</guid>
		<description><![CDATA[Amazon sure makes it hard to terminate your App Store account. Because they don&#8217;t allow you to delete apps, I manually edited each section of my app profile with blank information. Then, on the Help menu of the developer portal, there&#8217;s a Contact Us choice and one of the subjects you can choose is &#8220;Contract [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon sure makes it hard to terminate your App Store account. Because they don&#8217;t allow you to delete apps, I manually edited each section of my app profile with blank information. Then, on the Help menu of the developer portal, there&#8217;s a <a href="https://developer.amazon.com/help/contact-us.html">Contact Us</a> choice and one of the subjects you can choose is &#8220;Contract termination request.&#8221; After doing that I received this email with further instructions:</p>
<blockquote><p><em>Our goal is to establish long-term relationships with developers,</em><br />
<em> and we encourage you to contact us before terminating your agreement</em><br />
<em> to see if we can improve your Amazon Appstore Developer Program</em><br />
<em> experience.</em></p>
<p><em>If you would like to terminate your agreement, please send an email</em><br />
<em> with your developer name, contact information, and a list of your</em><br />
<em> applications to apps-notices@amazon.com with a CC via email to</em><br />
<em> contracts-legal@amazon.com. We will notify you of receipt of your</em><br />
<em> email and respond within 48 hours with confirmation of your request</em><br />
<em> to terminate your agreement.</em></p></blockquote>
<p>So I did that. Felt a lot like filling out one of those stupid mail-in rebate forms. Two days later I received a notice that my agreement was terminated and that they&#8217;d &#8220;appreciate feedback on why you are terminating your agreement.&#8221; The email was signed: <em>Winkie C., Amazon Appstore Account Team.</em></p>
<img src="http://feeds.feedburner.com/~r/flagrantdisregard/~4/sEO9eHlGFtw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://flagrantdisregard.com/terminating-amazon-app-store-agreement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

