<?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>hmmm....</title>
	<atom:link href="http://michael.thegrebs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://michael.thegrebs.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 Oct 2011 18:48:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Devops w/ Perl @ Linode PPW Talk Slides</title>
		<link>http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/</link>
		<comments>http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 18:46:31 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=330</guid>
		<description><![CDATA[Earlier this month a gave a talk about Linode&#8217;s use of Perl for devopsy things at the Pittsburgh Perl Workshop. Finally getting around to posting the slides online. I wanted to add some details so more of the slides made &#8230; <a href="http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Earlier this month a gave a talk about <a href="http://www.linode.com">Linode&#8217;s</a> use of <a href="http://www.perl.org/">Perl</a> for <a href="http://en.wikipedia.org/wiki/DevOps">devopsy</a> things at the<a href="http://pghpw.org/ppw2011/"> Pittsburgh Perl Workshop</a>.  Finally getting around to posting the slides online.  I wanted to add some details so more of the slides made since on their own but haven&#8217;t gotten around to it yet.</p>
<p><a href='http://michael.thegrebs.com/wp-content/uploads/2011/10/Linode-DevOps-w-Perl.pdf'>DevOps w/ Perl @ Linode.pdf</a> (2.1MB)</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Local Growl Notifications from Remote Irssi</title>
		<link>http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/</link>
		<comments>http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 04:50:05 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[irssi]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=323</guid>
		<description><![CDATA[What I&#8217;ve tried, What I want Skip to the next section if you just care about the end result. In the past, I&#8217;ve had my remote Irssi client send UDP Growl packets to my static home IP that were then &#8230; <a href="http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>What I&#8217;ve tried, What I want</strong><br />
Skip to the next section if you just care about the end result.  In the past, I&#8217;ve had my remote <a href="http://irssi.org/">Irssi</a> client send UDP <a href="http://growl.info/">Growl</a> packets to my static home IP that were then forwarded to the broadcast address on the local network.  This worked great and allowed me to get Growl notifications on which ever computer I happened to be sitting at.  These days, I&#8217;m always on my laptop, even when sitting at another computer (<a href="http://www.abyssoft.com/software/teleport/">Teleport</a> for the mega win).</p>
<p>I wanted a solution that would allow me to receive Growl notifications without having to forward any ports and no matter what the public IP for my laptop may be.  I use <a href="http://beta.metacpan.org/module/App::PersistentSSH">App::PersistentSSH</a> to maintain a persistent SSH control master connection to my <a href="http://www.linode.com/">Linode</a> so the ideal solution uses a reverse tunnel over this connection to get the notifications too my laptop.</p>
<p><strong>My Current Solution</strong></p>
<ul>
<li>Added
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--ssh_opts -R 127.0.0.1:22992:127.0.0.1:22</div></div>
<p>to my <a href="http://beta.metacpan.org/module/App::PersistentSSH">App::PersistentSSH</a> command line.  This connects localhost:22992 on my Linode to port 22 on my laptop.</li>
<li><a href="https://github.com/mikegrb/irssi-scripts/blob/master/local-growl.pl">local-growl.pl</a> &#8212; an Irssi script that uses growlnotify to send growl notifications</li>
<li><a href="https://github.com/mikegrb/irssi-scripts/blob/master/growlnotify.pl">growlnotify.pl</a> &#8212; an ssh proxy for growlnotify, passes it&#8217;s arguments to growlnotify on a remote system via ssh</li>
</ul>
<p>Simple push growl notifications from my <a href="http://www.linode.com">Linode</a> -> my MacBook Air whenever it is online.  The scripts and an irssi.png to use in the notifications are available on <a href="https://github.com/mikegrb/irssi-scripts">GitHub</a>.</p>
<p>Configuration for local-growl.pl is via Irssi&#8217;s in built settings, type</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/set growl</div></div>
<p>to see a list of possibilites:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[local-growl]<br />
growl_enabled = ON<br />
growl_growlnotifypath = /home/michael/bin/growlnotify<br />
growl_image_path = /Users/mgreb/Documents/irssi.png<br />
growl_show_hilights = ON<br />
growl_show_private_messages = ON<br />
growl_sticky = OFF</div></div>
<p>Configuration for growlnotify.pl is via a set of config variables near the top:</p>
<div class="codecolorer-container perl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="perl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ssh_host</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'localhost'</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ssh_port</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #cc66cc;">22992</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ssh_user</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'mgreb'</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$growlnotify</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/usr/local/bin/growlnotify'</span><span style="color: #339933;">;</span></div></div>
<p>Hopefully you will find this useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Whole House Energy Monitoring</title>
		<link>http://michael.thegrebs.com/2011/02/27/whole-house-energy-monitoring/</link>
		<comments>http://michael.thegrebs.com/2011/02/27/whole-house-energy-monitoring/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 00:18:20 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[eco]]></category>
		<category><![CDATA[electricity]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[green]]></category>
		<category><![CDATA[money]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=277</guid>
		<description><![CDATA[I placed an order for a TED 5000 on February 10th. The TED 5000 is a whole house energy monitor &#8212; a kill-a-watt for the whole house. I&#8217;ve spent a lot of time reading about the products available in this &#8230; <a href="http://michael.thegrebs.com/2011/02/27/whole-house-energy-monitoring/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I placed an order for a <a href="http://www.theenergydetective.com/ted-5000/features">TED 5000</a> on February 10th. The <em>TED 5000</em> is a whole house energy monitor &#8212; a kill-a-watt for the whole house.  I&#8217;ve spent a lot of time reading about the products available in this space.   I&#8217;ve looked at about 10 products for whole house energy monitoring and three jump to the top.  The <a href="http://www.wattvision.com/">wattvision</a>, <a href="http://www.powerhousedynamics.com/content/solutions">PowerHouse Dynamics&#8217;s eMonitor</a>, and the <a href="http://www.theenergydetective.com/ted-5000/features">TED 5000</a>.</p>
<p><a href="http://michael.thegrebs.com/wp-content/uploads/2011/02/wattvision-analog-sensor-beta.jpg"><img class="alignright size-medium wp-image-281" title="wattvision-analog-sensor-beta" src="http://michael.thegrebs.com/wp-content/uploads/2011/02/wattvision-analog-sensor-beta-300x168.jpg" alt="" width="300" height="168" /></a>The <a href="http://www.wattvision.com/">wattvision</a> (~$250) most closely resembles the TED in terms of price and features.  The wattvision uses an optical sensor that counts the rotation of the disk in the utility meter.  This sensor is connected to the device, which is powered by an AC adapter and sends the data to wattvision&#8217;s servers via your home wifi network.  This is the easiest to install, but would require running the sensor cable from the outside to inside. Additionally, all data is sent to wattvision&#8217;s servers.  I&#8217;d also need to subscribe to wattvision&#8217;s <a href="http://www.wattvision.com/info/pricing">$8.99/month service</a> for the other features I want (like API access.)</p>
<p><img class="alignright size-medium wp-image-283" title="powerhouse dynamics eMonitor" src="http://michael.thegrebs.com/wp-content/uploads/2011/02/Picture29-300x276.png" alt="" width="300" height="276" />The <a href="http://www.powerhousedynamics.com/content/solutions">eMonitor</a> (starting around $688 for 12 circuits) is something I just recently discovered.  Really, this is my ideal solution: for <a href="http://www.smarthome.com/90428/PowerHouse-Dynamics-eMonitor-44-Intelligent-Residential-Power-Usage-Monitor/p.aspx">$1,277</a>, you get the necessary equipment for monitoring the power feed plus 44 individual breakers.  This gives a much better view of where your power consumption is going.  Per-circuit monitoring also enables nifty alerts &#8212; an SMS for power draw in the kids room after school starts on a week day, or if the compressor on the fridge is running longer than normal (time to clean the coils, etc.) I just can&#8217;t justify the expense at $1,277.  The price is certainly reasonable for what you are getting, but there is no way the wife would approve the purchase :/</p>
<p><img class="alignright size-full wp-image-285" title="ted-5000-g" src="http://michael.thegrebs.com/wp-content/uploads/2011/02/ted-5000-g.png" alt="" width="265" height="265" /><a href="http://www.theenergydetective.com/ted-5000/features">The Energy Detective</a> (TED, ~$200) from Energy Inc provides full house consumption monitoring like the wattvision.  Unlike the wattvision, the data is stored and served from a gateway device on your home network.  Two current transformers go around the two lines for the incoming split phase feed.  These are connected to a box, which is installed next-to-or-inside the breaker panel. The breaker panel is powered and communicates via a connection to a breaker on each phase.  The gateway is installed elsewhere in the house and plugs into an outlet for power and communication with the current sensor, and via Ethernet to serve its precious data up.</p>
<p>So, February 10th I finally got approval from the wife to order the TED and purchased the <a href="http://www.theenergydetective.com/ted5000-g">TED 5000-G</a> with overnight shipping. It arrived as expected on the 11th and I was eager to install it.  A coworker (also interested in the TED,) came over for dinner and to help out with the installation.  I was too excited to wait for his arrival and finished the install before he got there ;-).</p>
<p>It&#8217;s now February 27th and I still don&#8217;t have a working TED system.  The gateway I was originally shipped has a defective Ethernet port. It&#8217;s already been to Energy Inc and back and is <span style="text-decoration: underline;">still</span> defective.  They finally agreed to ship me a replacement gateway on the 25th but sent it with 2nd day shipping, which has the same transit time as ground (just more expensive.) The new unit should arrive March 1st.</p>
<p><div id="attachment_318" class="wp-caption alignright" style="width: 143px"><a href="http://michael.thegrebs.com/wp-content/uploads/2011/02/TED5000-display.png"><img src="http://michael.thegrebs.com/wp-content/uploads/2011/02/TED5000-display-e1298852839843-133x150.png" alt="" title="Optional TED Display" width="133" height="150" class="size-thumbnail wp-image-318" /></a><p class="wp-caption-text">Optional TED Display</p></div><br />
I&#8217;m quite eager to get things up and running, and anticipate no problems once I have a working gateway. The most common issue people run into is excessive noise or attenuation of the <a href="http://en.wikipedia.org/wiki/Power_line_communication">power line communications</a> (PLC) signal between the sensor and gateway. The forums seem to be full of people with lots of grief around this issue. The gateway does contain a <a href="http://en.wikipedia.org/wiki/Zigbee">ZigBee</a> transceiver but that is for communication with the <a href="http://www.theenergydetective.com/additonal-ted-5000-display">optional wireless display</a>. Some have questioned switching from PLC to <a href="http://en.wikipedia.org/wiki/Zigbee">ZigBee</a> for the current data but a device inside the metal breaker box would have a hard time getting any sort of RF signal out, and PLC seems the most logical solution (even with it&#8217;s inherent issues.)  Of course, this is easy for me to say since I don&#8217;t anticipate having any issue with PLC. I can see a clear ~3-4Vpk signal on the zero crossing of the A/C at the outlet I plan to install the gateway:</p>
<p><img src="http://thegrebs.com/~michael/plc_w_ac.png" alt="AC with TED MCU transmissions" width="320" height="234" /></p>
<p>I have another blog post in the works documenting my seemingly unending issues with the other half of the TED solution: the support staff and engineers backing the product. To be fair, the support staff is 1:2 &#8212; the second guy I spoke to there was great, but I&#8217;m pretty sure their engineers shouldn&#8217;t be allowed to know customers even exist, let alone talk to them on the phone. But, this is a story for my next blog post.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2011/02/27/whole-house-energy-monitoring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bacon Salad &amp; Zinik Owes Me</title>
		<link>http://michael.thegrebs.com/2010/10/29/bacon-salad-zinik-owes-me/</link>
		<comments>http://michael.thegrebs.com/2010/10/29/bacon-salad-zinik-owes-me/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 18:04:12 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[BACON]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=270</guid>
		<description><![CDATA[First off, Zinik owes me bacon flavored donuts, the Internet says it, it must be true. I composed my first recipe the other night and figured I&#8217;d share it with you in the hopes that your doctor might hate me &#8230; <a href="http://michael.thegrebs.com/2010/10/29/bacon-salad-zinik-owes-me/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>First off, Zinik owes me bacon flavored donuts, the Internet says it, it must be true.</p>
<p>I composed my first recipe the other night and figured I&#8217;d share it with you in the hopes that your doctor might hate me as much as mine does.</p>
<p><strong>Bacon Salad</strong></p>
<p>1lb Pancetta<br />
1lb Virginia Bacon<br />
1lb Peppered Bacon<br />
1lb Canadian Bacon<br />
1lb Apple-Wood Smoked Bacon<br />
1lb Irish Bacon<br />
1lb Slab Bacon<br />
2lb Hog Jowl<br />
1   Bottle reduced fat Bacon Ranch Salad Dressing</p>
<p>Fry each, crispy.</p>
<p>Cut into 1&#215;2 inch rectangles.</p>
<p>Toss in bowl with salad dressing.</p>
<p>Makes 2, snack sized, servings.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2010/10/29/bacon-salad-zinik-owes-me/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Task Management with Hiveminder and Perl</title>
		<link>http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/</link>
		<comments>http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 23:08:25 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[hiveminder]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=247</guid>
		<description><![CDATA[This is how I manage my tasks with Hiveminder on a weekly basis and the Perl script that helps me do it. I don&#8217;t really expect the Perl script to be useful to anyone as-is but portions of it may &#8230; <a href="http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is how I manage my tasks with <a href="http://hiveminder.com/">Hiveminder</a> on a weekly basis and the Perl script that helps me do it.  I don&#8217;t really expect the Perl script to be useful to anyone as-is but portions of it may be useful to others, as well as the general work flow, so I&#8217;ve decided to share them.</p>
<p>At <a href="http://www.linode.com/">Linode</a> we have a wiki page where we list 5 or more tasks we wish to accomplish during the week.  There is a heading for each employee and below the heading we place our tasks.   Throughout the week we can add additional tasks or mark existing ones as done.</p>
<p>I&#8217;ve used <a href="http://hiveminder.com/">Hiveminder</a> for some time.  When we started the weekly task lists at <a href="http://www.linode.com/">Linode</a> I found that taking a few minutes to figure out which tasks I wish to complete in the coming week works quite well for me.  I started marking these tasks with the &#8216;week&#8217; tag in <a href="http://hiveminder.com/">Hiveminder</a>.  I quickly ended up writing a perl script, <a href="http://thegrebs.com/~michael/tasks/week.txt">week.pl</a>, to help me manage hem.</p>
<h3>My Weekly Workflow</h3>
<p>First thing Monday morning I run:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl report</div></div>
<p>This prints a report with two sections.  The first section lists tasks that currently have the &#8216;week&#8217; tag with a line through the task ID if it is completed.  This gives me a nice summary of what I planned on accomplishing the previous week and how I did.  The second section lists all of my tasks currently visible in <a href="http://hiveminder.com/">Hiveminder</a>.  I hide tasks that I know I&#8217;m not going to work on in the next few weeks so this list is usually no more than 20 or 30 items.</p>
<p><img src="http://thegrebs.com/~michael/tasks/report.png" height="260" width="334" alt="Sample report Image"/></p>
<p>I take this report into the Monday morning meeting with me.  During the meeting, I&#8217;ll glance over this list and select items for the upcoming week.  I also use this page to take notes on during the meeting, writing down any new tasks that come up in the meeting.</p>
<p>After the meeting, I add any new tasks generated in the meeting that I won&#8217;t be working on this week to <a href="http://hiveminder.com/">Hiveminder</a>.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ todo.pl braindump</div></div>
<p><tt>todo.pl</tt> comes from <a href="http://search.cpan.org/~alexmv/App-Todo-0.97/bin/todo.pl">App::Todo</a>, a command line <a href="http://hiveminder.com/">Hiveminder</a> interface.  The braindump command launches $EDITOR where I add new tasks, one per line.  The <a href="http://hiveminder.com/help/reference/tasklists/braindump.html">braindump syntax</a> allows for specifying tags, setting priorities, and other things as well.</p>
<p>Next, I prepare the task list for the upcoming week:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl edit<br />
Carry over the following tasks?<br />
bring about world peace (y or n) [default y] y<br />
write some awesome pre<br />
do some other cool stuff<br />
create practical cold fusion (y or n) [default y] n<br />
return library book</div></div>
<p>The <tt>edit</tt> command iterates over each task tagged with &#8216;week&#8217; if  the task is not marked completed. It prompts whether or not I wish to carry the task over to this week (leave the tag). Any tasks marked completed have the tag removed automatically.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl add<br />
Created:<br />
&nbsp; &nbsp; &nbsp; &nbsp; #YRVK write an awesome report for Tom [week dev]<br />
&nbsp; &nbsp; &nbsp; &nbsp; #YRVL test some new stuff for deployment [week admin]</div></div>
<p>The <tt>add</tt> command works the same as todo.pl&#8217;s braindump command except the &#8216;week&#8217; tag is automatically applied to the newly created tasks.  The full braindump syntax is available for specifying other properties of the tasks.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl update https://path.to.trac/wiki/Tasks/2010-03-15<br />
Sup dawg, I heard you like tasks so I did ur shit for you</div></div>
<p>The <tt>update</tt> command grabs my tasks tagged with &#8216;week&#8217; and formats them one per line started with &#8216; * &#8216;, a wiki bullet list.  It grabs the current wiki page, finds my heading, substitutes the formatted task list under the heading, and submits the change.  It also stores the path given in the YAML config file.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$week.pl go</div></div>
<p>This opens the stored URL for this week&#8217;s tasks wiki page in my default browser, allowing me to confirm week.pl did what it&#8217;s supposed to.</p>
<p>Later in the week once I&#8217;ve done something:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl done tom<br />
#YH7T bring about world peace [dev week]<br />
#YRVL test some new stuff for deployment [week admin]<br />
[DONE] #YRVK write an awesome report for Tom [week dev]</div></div>
<p>This retrieves the task(s) tagged &#8216;week&#8217; that are not marked completed containing the given string.  If there was only one match, the script marks it as done and then outputs the current state of tasks tagged &#8216;week&#8217;.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl update<br />
Sup dawg, I heard you like tasks so I did ur shit for you</div></div>
<p>Same as <tt>update</tt> before, except when no URL is given, the URL is read from the configuration file.  This way I only need to worry about the URL once per week, the first time I update for the week.</p>
<h3>Conclusion</h3>
<p>So there you have it.  If you are also using <a href="http://hiveminder.com/">Hiveminder</a>, maybe aspects of my work flow will make sense for you and pieces of the Perl script may be useful.  If you aren&#8217;t using <a href="http://hiveminder.com/">Hiveminder</a>, maybe you will be inspired to check it out.  I use michael@thegrebs.com on <a href="http://hiveminder.com/">Hiveminder</a> in case you feel the need to assign me a task or wish to gift me another year of Hiveminder Pro ;)</p>
<p><a href="http://thegrebs.com/~michael/tasks/week.txt">week.pl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comic Genius</title>
		<link>http://michael.thegrebs.com/2009/09/29/comic-genius/</link>
		<comments>http://michael.thegrebs.com/2009/09/29/comic-genius/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 00:26:56 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[comedy]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/2009/09/29/comic-genius/</guid>
		<description><![CDATA[This guy is a comic genius! Sheer hilarity.]]></description>
			<content:encoded><![CDATA[<p>This guy is a comic genius!  Sheer hilarity.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube-nocookie.com/v/kCvkatCGNFY&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/kCvkatCGNFY&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/09/29/comic-genius/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebService::MobileMe uploaded to the CPAN</title>
		<link>http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/</link>
		<comments>http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 23:06:23 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobileme]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=232</guid>
		<description><![CDATA[Just a quick post to announce a new perl module I uploaded to the CPAN the other day. It&#8217;s still to be considered alpha quality as it is lacking error checking and other such necessary stuffs but is working for &#8230; <a href="http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to announce a new perl module I uploaded to the CPAN the other day.  It&#8217;s still to be considered alpha quality as it is lacking error checking and other such necessary stuffs but is working for me.</p>
<p>Usage looks like:</p>
<div class="codecolorer-container perl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="perl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">use</span> WebService<span style="color: #339933;">::</span><span style="color: #006600;">MobileMe</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mme</span> <span style="color: #339933;">=</span> WebService<span style="color: #339933;">::</span><span style="color: #006600;">MobileMe</span><span style="color: #339933;">-&gt;</span><span style="color: #000000; font-weight: bold;">new</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; username <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'yaakov'</span><span style="color: #339933;">,</span> password <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'HUGELOVE'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$location</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$mme</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">locate</span><span style="color: #339933;">;</span><br />
<span style="color: #000066;">print</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">&lt;</span><span style="color: #ff0000;">&quot;EOT&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; As of <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>date<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #000066;">time</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> Yaakov was at<br />
&nbsp; &nbsp; <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>latitude<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>longitude<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#40;</span>plus <span style="color: #b1b100;">or</span> minus<br />
&nbsp; &nbsp; <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>accuracy<span style="color: #009900;">&#125;</span> meters<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><br />
EOT<br />
<span style="color: #0000ff;">$mme</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">sendMessage</span><span style="color: #009900;">&#40;</span> message <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'Hi Yaakov!'</span><span style="color: #339933;">,</span> <span style="color: #000066;">alarm</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>The online documentation is available via <a href="http://search.cpan.org/~mikegrb/WebService-MobileMe/lib/WebService/MobileMe.pm">search.cpan.org</a>.</p>
<p>Git Web: <a href="http://git.thegrebs.com/?p=WebService-MobileMe">http://git.thegrebs.com/?p=WebService-MobileMe</a><br />
Git Clone: http://git.thegrebs.com/git/WebService-MobileMe</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YAPC&#124;10</title>
		<link>http://michael.thegrebs.com/2009/06/01/yapc10/</link>
		<comments>http://michael.thegrebs.com/2009/06/01/yapc10/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 17:53:44 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[yapc]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=227</guid>
		<description><![CDATA[I will be at YAPC&#124;10 in Pittsburgh the end of June. Here&#8217;s a schedule of the talks I plan to attend. There are a few holes not because the talks at those time suck but because they rock so hard &#8230; <a href="http://michael.thegrebs.com/2009/06/01/yapc10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I will be at <a href="http://yapc10.org/yn2009/">YAPC|10</a> in Pittsburgh the end of June.  Here&#8217;s a schedule of the talks I plan to attend.  There are a few holes not because the talks at those time suck but because they rock so hard I can&#8217;t decide which I want to attend.</p>
<p><iframe src="https://www.google.com/calendar/hosted/thegrebs.com/embed?mode=AGENDA&amp;height=600&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=thegrebs.com_hoqmg0gv7oikpa0op34pjbm5tg%40group.calendar.google.com&amp;color=%23B1440E&amp;ctz=America%2FNew_York" style=" border:solid 1px #777 " width="500" height="600" frameborder="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/06/01/yapc10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing a Tone Through an Arduino Connected Piezo</title>
		<link>http://michael.thegrebs.com/2009/03/23/playing-a-tone-through-an-arduino-connected-piezo/</link>
		<comments>http://michael.thegrebs.com/2009/03/23/playing-a-tone-through-an-arduino-connected-piezo/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 02:27:52 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[piezo]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=214</guid>
		<description><![CDATA[I&#8217;m working on a top secret project, all I&#8217;ll say is it involves the Arduino, Twitter, and the refrigerator, and needed to play a tone through a piezo connected to the Arduino. I looked around and the closest I could &#8230; <a href="http://michael.thegrebs.com/2009/03/23/playing-a-tone-through-an-arduino-connected-piezo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a top secret project, all I&#8217;ll say is it involves the Arduino, Twitter, and the refrigerator, and needed to play a tone through a piezo connected to the Arduino.  I looked around and the closest I could find was <a href="http://www.arduino.cc/en/Tutorial/PlayMelody">a tutorial  that included code to play a melody</a>.</p>
<p>This wasn&#8217;t quite what I wanted and the playTone function expects the notes and timing to be in global variables which makes the baby jesus cry.  The premise was simple though.  Take the period and divide by two then bring the output high then low for this amount of time, repeat to make up the desired duration.</p>
<div class="codecolorer-container c vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333;">int</span> pinSpeaker <span style="color: #339933;">=</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #993333;">void</span> setup <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; pinMode<span style="color: #009900;">&#40;</span>pinSpeaker<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #993333;">void</span> loop <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; playTone<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">750</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">750</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// duration in mSecs, frequency in hertz</span><br />
<span style="color: #993333;">void</span> playTone<span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> duration<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> freq<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; duration <span style="color: #339933;">*=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #993333;">int</span> period <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color:#800080;">1.0</span> <span style="color: #339933;">/</span> freq<span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #0000dd;">1000000</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #993333;">long</span> elapsed_time <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>elapsed_time <span style="color: #339933;">&lt;</span> duration<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; digitalWrite<span style="color: #009900;">&#40;</span>pinSpeaker<span style="color: #339933;">,</span>HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; delayMicroseconds<span style="color: #009900;">&#40;</span>period <span style="color: #339933;">/</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; digitalWrite<span style="color: #009900;">&#40;</span>pinSpeaker<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; delayMicroseconds<span style="color: #009900;">&#40;</span>period <span style="color: #339933;">/</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; elapsed_time <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span>period<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>This simple sketch plays a 500Hz tone for 750 mSec, pauses 750 mSec and repeats.  To use it in your sketch simply define pinSpeaker and set it for output, copy playTone to your sketch and call it with the duration in milliseconds and the frequency in hertz.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/03/23/playing-a-tone-through-an-arduino-connected-piezo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>I am so totally a nerd</title>
		<link>http://michael.thegrebs.com/2009/03/03/i-am-so-totally-a-nerd/</link>
		<comments>http://michael.thegrebs.com/2009/03/03/i-am-so-totally-a-nerd/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 01:39:03 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[LOGO]]></category>
		<category><![CDATA[nerd]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=209</guid>
		<description><![CDATA[Somebody came into the IRC support channel for work and their nick was &#8216;turtle&#8217;. I made a logo joke and a co-worker corrected my short LOGO triangle. This prompted me to waste 20 minutes in a LOGO interpreter. RT 30 &#8230; <a href="http://michael.thegrebs.com/2009/03/03/i-am-so-totally-a-nerd/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Somebody came into the IRC support channel for work and their nick was &#8216;turtle&#8217;.  I made a logo joke and a co-worker corrected my short LOGO triangle.  This prompted me to waste 20 minutes in a LOGO interpreter.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RT 30<br />
REPEAT 3 [REPEAT 3 [FD 100 RT 120] RT 120]<br />
PENUP<br />
FD 100<br />
PENDOWN<br />
RT 90<br />
REPEAT 360 [FD 1.75 RT 1]</div></div>
<p>The output:<br />
<a href="http://michael.thegrebs.com/wp-content/uploads/2009/03/logo.png"><img src="http://michael.thegrebs.com/wp-content/uploads/2009/03/logo.png" alt="logo" title="logo" width="282" height="251" class="size-full wp-image-210" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/03/03/i-am-so-totally-a-nerd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

