<?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>M@Blog &#187; M</title>
	<atom:link href="http://mattwork.potsdam.edu/blog/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattwork.potsdam.edu/blog</link>
	<description></description>
	<lastBuildDate>Wed, 18 Nov 2009 23:09:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>An Anniversary, of sorts</title>
		<link>http://mattwork.potsdam.edu/blog/2009/11/18/an-anniversary-of-sorts/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/11/18/an-anniversary-of-sorts/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 23:09:58 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=599</guid>
		<description><![CDATA[Twenty years ago this week, I wrote my first real computer program, kinda. I know this only because I found the source code in an unlikely place recently, and surprisingly I dated it in the comments. It was on a VIC-20, written in BASIC. I say &#8220;kinda&#8221;, because I didn&#8217;t write it, originally, I improved [...]]]></description>
			<content:encoded><![CDATA[<p>Twenty years ago this week, I wrote my first real computer program,<em> kinda</em>. I know this only because I found the source code in an unlikely place recently, and surprisingly I dated it in the comments. It was on a <a href="http://en.wikipedia.org/wiki/VIC_20">VIC-20</a>, written in <a href="http://en.wikipedia.org/wiki/BASIC">BASIC</a>. I say &#8220;kinda&#8221;, because I didn&#8217;t write it, originally, I improved it. I took a one-keyboard multiplayer baseball game, (QWEASDZXC (left) for player 1 and UIOJKLM&lt;&gt; (right)  for player 2), and wrote what became my first network protocol (I didn&#8217;t know that until a few years later) so that two copies could run on two VIC-20&#8217;s connected by a serial cable. To this day I&#8217;ve never met or heard of anyone who networked two VIC-20&#8217;s together.</p>
<p>Finding my copy of BASICball, re-reading my cute little grade-school comments (&#8221;Screen math is stupid&#8221;), remembering  anecdotes about what was going on at the time (&#8221;Our class gerbil is coming home with me for Thanksgiving break!!!!&#8221;), caught me up in an atypical wave of nostalgia. And in that wave, in looking back &#8211; really thinking about everything I have written over the years: millions upon millions of lines &#8211; that two things really stand out as being key to my success: <a href="http://en.wikipedia.org/wiki/Worse_is_better">Worse is Better</a>, and <a href="http://en.wikipedia.org/wiki/Modularity_%28programming%29">Modularity</a> is Ultimate.</p>
<p>I&#8217;ll write more about those things, I&#8217;m sure, but for now: Happy 20th Anniversary BASICball v6.0.</p>
<p>I just aged a bit, happily.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/11/18/an-anniversary-of-sorts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Droid Does, Indeed</title>
		<link>http://mattwork.potsdam.edu/blog/2009/11/11/droid-does-indeed/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/11/11/droid-does-indeed/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 11:47:38 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Linuxy]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Products]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=593</guid>
		<description><![CDATA[I really expected the HTC Dream (T-Mobile G1) to seriously dent the mobile device world. I had been using the Android SDK for a bit, but didn&#8217;t have hardware to test on, so I bought one. Great keyboard. Decent UI. Tiny screen. Slow processor. Lousy device support. Horrible network.
A little later, I really expected the [...]]]></description>
			<content:encoded><![CDATA[<p>I really expected the HTC Dream (T-Mobile G1) to seriously dent the mobile device world. I had been using the Android SDK for a bit, but didn&#8217;t have hardware to test on, so I bought one. Great keyboard. Decent UI. Tiny screen. Slow processor. Lousy device support. Horrible network.</p>
<p>A little later, I really expected the Palm Pre to be the nirvana of compact, hyper-connected mobile devices. It wasn&#8217;t <a href="http://www.apple.com/">pretentious</a>. It had a f%$#!%&amp; keyboard. It was ahead of the curve in a number of features. But it wasn&#8217;t <em>substantially</em> different. Palm made the concious decision to keep the interface very similar to the old Palm OS, and let&#8217;s face it &#8211; user interfaces have evolved since then. But I got one. I like it. It&#8217;s a nice toy. If you want a compact, full-features smart phone, it&#8217;s still your best bet.</p>
<p>Motorola unveiled the Sholes over the summer. Beefy processor. Best-of-breed screen. Ridiculous connectivity solutions. A f%$#!%&amp; keyboard. And CDMA (like the pre) so I don&#8217;t have to use the Ancient Telegram &amp; Trash network. 5MP camera w/ LED flash. Ran Android (1.6 at the time). Super cool. At that point, they were still shopping for a vendor. I was cautiously optimistic it wouldn&#8217;t be a metro-only network like T-Mobile or Sprint.</p>
<p>Then came the onslaught of <a href="http://droiddoes.com/">Droid Does</a> during the baseball post-season. Speculation ran wild as to which phone it was, beneath the hype. <a href="http://www.boygeniusreport.com/">BGR</a> scooped it and pointed it out as a Sholes running Android 2.0. Thursday last I received mine.</p>
<p>Metal. Everywhere.</p>
<p>Ridiculously clear screen with outstanding pixel density.</p>
<p>Incredibly fast processor.</p>
<p>A f%$#!%&amp; keyboard.</p>
<p>Seamless integration with all of the stuff I use (e-mail, calendar, contacts, etc. etc.).</p>
<p>Transparent movement between WIFI and the Verizon 3G network.</p>
<p>Incredibly fast processor.</p>
<p>Deep interface built atop a fully-accessible Linux system.</p>
<p>Scads of customizability.</p>
<p>Surprisingly good camera with shockingly bright flash.</p>
<p>Oh, and an incredibly fast processor.</p>
<p>If the pricetag is $100 too high for you, Verizon is also offering an HTC-based version called the Eris with no keyboard, more plastic, and a mid-level processor, with the same interface and general feature-set.</p>
<p>Oh yeah, and when you send e-mail, it&#8217;s not tagged &#8220;Sent from my &lt;BlackBerry|iPhone|Other Pretentious Device&gt;&#8221;.</p>
<p>But, since most people seem to enjoy those things: This post authored using a WordPress app from my Droid.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/11/11/droid-does-indeed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More About Endocrys</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/30/more-about-endocrys/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/30/more-about-endocrys/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 02:12:22 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linuxy]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=584</guid>
		<description><![CDATA[I previously mentioned that I&#8217;ve re-acquired rights to Endocrys, and that I was excited about it. My copious free time has been spent, of late, ripping it apart and making it cleaner and applying the lessons learned over 7 years of maintaining a sizable (458 system (peak)) Endocrys network.
Endocrys has two primary modular components: Autocrys [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://mattwork.potsdam.edu/blog/2009/10/27/introducing-endocrys/">previously mentioned</a> that I&#8217;ve re-acquired rights to Endocrys, and that I was excited about it. My copious free time has been spent, of late, ripping it apart and making it cleaner and applying the lessons learned over 7 years of maintaining a sizable (458 system (peak)) Endocrys network.</p>
<p>Endocrys has two primary modular components: Autocrys and Paracrys.</p>
<p><strong>Autocrys</strong> is an extensible communication protocol atop XMPP. It governs the syntax of commands or queries sent to systems or groups, the responses of systems to those queries, how to manage their presence, and how to react to presence changes in others.</p>
<p><strong>Paracrys</strong> is a database-driven deployment and configuration system. Paracrys allows module code and configuration data to be stored centrally and deployed to Endocrys nodes on-demand. Paracrys fully supports versioning, thus allowing changes to be rolled-back in the case of a major oopsie. How small can a Paracrys module be? Here&#8217;s an example that implements a command called &#8217;shell&#8217; that allows you to do, essentially, whatever you want on an Endocrys client:</p>
<pre>BEGIN { $Endo::MODS{SHELL}++; $Endo::CMDS{SHELL} = \&amp;shell; }
END { delete $Endo::MODS{SHELL}; delete $Endo::CMDS{SHELL}; }

sub shell {
 return `@_`;
}</pre>
<p>Drop that puppy into the Paracrys MODULES table with some other data, issue a mass &#8220;fetch module SHELL; refresh;&#8221; command, and bingo, all of your systems now let you do very bad things. It&#8217;s that easy to create a command to do something&#8230; Hopefully something useful.</p>
<p>Of course you should note that there is no access control in the above code&#8230; How do we prevent Bad People from using our horrendously very bad shell command? That used to be managed by the Communication Masters using another database called EndoACL, but has been folded into Paracrys&#8217; duties and drastically simplified. Each Endocrys client, when receiving the shell command, will now ask Paracrys if the user who sent it is authorized to issue that command. Previously, the clients never even received commands from users not authorized to send them, at great expense.</p>
<p>One of the major goals of the project originally was to have absolutely minimal dependencies on third-party code, so I reinvented the wheel in numerous places. Now that it&#8217;s mine again, those requirements are vapor and I&#8217;m ripping out large swaths of my code, and exchanging it for API calls into other code that is the de facto standard to do whatever. For example, I wrote a function that copies a file from one location to another. Ew. The <a href="http://search.cpan.org/perldoc?File::Copy">File::Copy</a> module is the Perl Way to do that, so that&#8217;s how we do it now. Less code I have to maintain, and less code you have to read to understand Endocrys.</p>
<p>Another major goal of the original project was absolute redundancy on all levels. With a requirement like that, I over-engineered what were called the Communication Masters (CMs) so that they heart-beated each other, transferred each other&#8217;s sessions, held elections to decide who was authoritative for which IP ranges, dealt with segmentation and partitioning, etc. All of this at the cost of highly-customized hybrid XMPP/SQL servers that weren&#8217;t readily upgradeable. Wednesday night I spent a lot of time diagramming, and tonight solidified the spec to separate the XMPP server from the SQL database, and rely on established high-availability tools like <a href="http://siag.nu/pen/">pen</a> or an SLB appliance to ensure connectivity to a farm of XMPP servers if needed. Additionally, this separation has allowed me to use MySQL clusters for the Paracrys bits, which adds scary levels of redundancy to those very critical bits.</p>
<p>Lastly for this post, the entire ithread Endocrys implementation has been ripped out and replaced with <a href="http://search.cpan.org/perldoc?EV">EV</a> and <a href="http://search.cpan.org/perldoc?AnyEvent">AnyEvent</a>, and the <a href="http://search.cpan.org/perldoc?Net::XMPP">Net::XMPP</a> code has been replaced with <a href="http://search.cpan.org/perldoc?AnyEvent::XMPP">AnyEvent::XMPP</a> for one cohesive event loop that runs very very fast. Originally I envisioned an Endocrys client maintaining dozens of XMPP sessions while handling dozens of system events and receiving dozens of commands, so I stuck everything in threads, and allowed it to scream along on SMP boxes. While this works just fine, there is a LOT of extra complexity involved with sharing variables across threads, dealing with races, etc. and the benefits are dubious when compared against a good, strong, <a href="http://search.cpan.org/perldoc?EV">event-loop system</a>. I&#8217;m not quite done yet, but the net loss should be about 30% of the main code modules, with reduced complexity for all sub-modules as well.</p>
<p>I don&#8217;t have an ETA as to when the code will be generally available, but I&#8217;ve had some pings from some bright people interested in hammering the retooled version in non-critical environments, so hopefully it will be this year.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/30/more-about-endocrys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Endocrys</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/27/introducing-endocrys/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/27/introducing-endocrys/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:52:43 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linuxy]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=581</guid>
		<description><![CDATA[Endocrys [en doe kriss] (was Endocryn until a TradeMark popped up) is a distributed, encrypted, modular, real-time, hot-upgradable, self-healing system geared at autonomous communication between distributed systems. It was developed for a client in 2002 and 2003, and they&#8217;ve decided to let the 10-year exclusivity lapse early.
This is one of my favorite products, and I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Endocrys [en doe kriss] (was Endocryn until a TradeMark popped up) is a distributed, encrypted, modular, real-time, hot-upgradable, self-healing system geared at autonomous communication between distributed systems. It was developed for a client in 2002 and 2003, and they&#8217;ve decided to let the 10-year exclusivity lapse early.</p>
<p>This is one of my favorite products, and I&#8217;m more than a little excited to get it back and get it out. It&#8217;s been battle-tested for many years, and I&#8217;m very proud of it. I&#8217;m working on getting the code cleaned up and abstracted before releasing it under the GPLv2. Below are edited points from slides describing Endocrys and why you might be interested in it.</p>
<h2>The Problems</h2>
<p>Dozens&#8230; hundreds&#8230; of systems, physical and virtual, all going about their business. Then something happens: maybe a disk drive failed, maybe a process died, maybe someone ordered a &#8216;reboot&#8217; or &#8216;halt&#8217;. Those systems don&#8217;t have a way of communicating that externally. There is no &#8220;Hey, I&#8217;m rebooting, BRB&#8221; in the server world.</p>
<p>Dozens&#8230; hundreds&#8230; of systems, physical and virtual, all going about their business. Then you have a question: How many of them have Western Digital harddrives listed in a recent recall? How many of them are running &lt;2GB of RAM? How many of them are running a certain version of some software listed in a security advisory? There&#8217;s no way to ask that question to the farm. There is no &#8220;Dear Lazyweb, answer this question for me&#8221; in the server world.</p>
<h2>The Purpose</h2>
<p>At its most basic level, Endocrys is a conduit between all of the systems and you. Think of it like a gigantic Instant Messaging buddy list, where all of your buddies are systems. When they&#8217;re online, they are in the list and can set their status messages, send you messages, send each other messages, receive messages, etc. Endocrys leverages the eXtensible Messaging and Presence Protocol (XMPP) to tie this framework into existing clients, transports and APIs, enabling a near-infinite number of possible applications or functions you can deploy.</p>
<h2>The Technology</h2>
<p>Endocrys is built as a framework &#8211; an abstract set of rules that can be extended at any time by writing little modules. These modules can be applied across the Endrocrys network instantly, without any downtime.</p>
<p>By leveraging XMPP, the Endocrys network is highly-redundant with no single fail points. Any number of &#8220;Communication Masters&#8221; (XMPP servers) are online, but only one is needed to keep communication flowing. All network communication is encrypted and signed. Partitioning and segmentation is handled rationally.</p>
<p>Communication is very similar to Instant Messaging, there is relatively no latency, and XMPP assures delivery even to systems offline when the message was sent.</p>
<p>Monitoring and control systems can participate on Endocrys, automating the remediation of problems remotely and automatically.</p>
<h2>The Protocol</h2>
<p>XMPP sits atop TCP, and atop that sits the Endocrys Communication Protocol aka Autocrys. ECP is a fully-authenticated, fully-controlled, skeptical protocol that serves both for sending structured announcements as well as sending and processing commands. The entire ECP specification is listed in AUTOCRYS.TXT. Endocrys agents can be written in any programming language, attached to any other framework, at any OSI level, as long as they can speak XMPP and implement ECP appropriately.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/27/introducing-endocrys/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Expansive Consolidation: Saga 3</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/23/expansive-consolidation-saga-3/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/23/expansive-consolidation-saga-3/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 22:02:26 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Linuxy]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=567</guid>
		<description><![CDATA[As discussed previously, I&#8217;m in the midst of a rather involved and highly-delicate &#8220;case mod&#8221; involving  expensive wooden furniture and nearly 350degrees of thermal load, in my copious free time.
The first diagram below (left) shows the near-final design diagram, and I&#8217;ve confirmed that everything fits. Everything except the rear exhaust fan block. There will [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://mattwork.potsdam.edu/blog/2009/10/16/expansive-consolidation-sagas-1-and-2/">discussed previously</a>, I&#8217;m in the midst of a rather involved and highly-delicate &#8220;case mod&#8221; involving  expensive wooden furniture and nearly 350degrees of thermal load, in my copious free time.</p>
<p>The <a href="http://mattwork.potsdam.edu/blog/wp-content/uploads/2009/10/etfront.png">first diagram below</a> (left) shows the near-final design diagram, and I&#8217;ve confirmed that everything fits. Everything except the rear exhaust fan block. There will have to be a wee bit of &#8230; &#8220;furniture modification&#8221; as the slot for cable ingress is too small. A liquid cooling system was added mainly to keep the sound level down. The pump is quieter than most fans, and the large CPU heatsink and exhaust fan pictured were able to be replaced with a small copper block and some tubes.</p>
<p>The<a href="http://mattwork.potsdam.edu/blog/wp-content/uploads/2009/10/etcase.png"> second diagram below</a> (right) outlines the machining specification for the replacement front door panel. Originally it was  high-end non-thermal glass (to allow remote control IR to pass through), but had to be replaced with something I could cut. After a bunch of trial and error, I settled on  1/8&#8243; acrylic. I&#8217;m still working on this piece- I&#8217;ve gone through a bunch of scrap trying to get the cuts and breaks right, and that is holding up the final tweaking (and pictures!), mostly.</p>
<p>The liquid cooling system (pump and exhaust fans) has a total noise of 11dB, all of which are in the rear of the cabinet. The 120MM intake fan is almost completely silent ~5dB, but inward-facing so it doesn&#8217;t expel much noise at all (&lt;1db immediately outside the cabinet). The noise measure from The Comfiest Couch in the world with the entire system runnng is 5 dB &#8211; quiet enough to hear the harddrives prattling about, and substantially quieter (5-6 times) than the air-cooled equivalent.</p>

<a href='http://mattwork.potsdam.edu/blog/2009/10/23/expansive-consolidation-saga-3/etfront/' title='Entertainment Center Case, Front View'><img width="150" height="150" src="http://mattwork.potsdam.edu/blog/wp-content/uploads/2009/10/etfront-150x150.png" class="attachment-thumbnail" alt="" title="Entertainment Center Case, Front View" /></a>
<a href='http://mattwork.potsdam.edu/blog/2009/10/23/expansive-consolidation-saga-3/etcase/' title='Entertainment Center, Front Door Glass Replacement'><img width="150" height="150" src="http://mattwork.potsdam.edu/blog/wp-content/uploads/2009/10/etcase-150x150.png" class="attachment-thumbnail" alt="" title="Entertainment Center, Front Door Glass Replacement" /></a>

]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/23/expansive-consolidation-saga-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Death To Passwords</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/23/death-to-passwords/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/23/death-to-passwords/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 13:22:10 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=565</guid>
		<description><![CDATA[A close friend forwarded me a note from a relative who was trying to solve a password-management problem. What was going to be a short statement of opinion turned into a moderately-humorous manifesto, and I thought I&#8217;d share (lightly edited).
I certainly empathize with your password management situation. Passwords  are, actually, horrible security mechanisms and [...]]]></description>
			<content:encoded><![CDATA[<p>A close friend forwarded me a note from a relative who was trying to solve a password-management problem. What was going to be a short statement of opinion turned into a moderately-humorous manifesto, and I thought I&#8217;d share (lightly edited).</p>
<p>I certainly empathize with your password management situation. Passwords  are, actually, horrible security mechanisms and it is my opinion that  they should be done away with altogether. Problem solved: No passwords  means no password management headaches.</p>
<p>So, how to do prove you&#8217;re who you are? How do your systems <em>trust</em> who  you say you are? A token. A &#8220;key&#8221;. A physical and logical item possessed  by the user. Something they can lose or get stolen or drop in their  coffee mug, but doesn&#8217;t matter because it&#8217;s useless without them leashed  to it- and can be reproduced by authorized personnel in a jiffy.</p>
<p>The security industry likes calling it &#8220;two-factor authentication&#8221;: The  two factors being something you <em>have</em> (the token) and something you <em>know</em> (the sentence uttered by your first girlfriend when she dumped  you, song lyrics, the title of a book &#8230; whatever). Behind the scenes  we shift from password management (gross and abhorrent) to key  management (fun and exciting!)</p>
<p>Encrypted-key security is the only managed authentication scheme I have  rolled out in client environments for the last 7&#8230;8 years. It can be  &#8220;difficult&#8221; to wrench into an existing infrastructure, changing the  culture, disrupting the status quo- but technologically is a vastly  superior solution to identity management.</p>
<p>The defacto standard is PGP [1], although there are a lot of players in this market  with varying quality of products, some aiming at various vertical markets. The link below gives a nice picture of how various systemic pieces tie together.</p>
<p>I know I didn&#8217;t answer your question- people tell me that a lot- but I  can&#8217;t in good faith recommend password management. I haven&#8217;t been able  to since 1999 or so, and certainly can&#8217;t as 2009 winds down. Sure, there  are things you can do &#8211; the DoD uses the Mandylion [2], which you can buy on  ThinkGeek [3] for $50 &#8211; but it doesn&#8217;t solve the actual problem of  secure identity management: Please pardon the crudeness, but it&#8217;s like  putting whipped-cream on dogshit.</p>
<p>[1] <a href="http://www.pgp.com/products/index.html">http://www.pgp.com/products/index.html</a><br />
[2] <a href="http://www.mandylionlabs.com/">http://www.mandylionlabs.com/</a><br />
[3] <a href="http://www.thinkgeek.com/gadgets/security/91a2/">http://www.thinkgeek.com/gadgets/security/91a2/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/23/death-to-passwords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chicken Tikka Masala</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/21/chicken-tikka-masala/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/21/chicken-tikka-masala/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 01:12:51 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Recipes]]></category>
		<category><![CDATA[curry]]></category>
		<category><![CDATA[indian]]></category>
		<category><![CDATA[peppers]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=562</guid>
		<description><![CDATA[This Indian classic is very easy to make. This is not the easy version, but instead the amazing Matt-went-home-two-hours-early-to-cook-the-feast gourmet version, heavily adapted from numerous sources.
3 lbs boneless chicken breasts
1 lemon, cut in half
1/4 cup ghee, melted
4 large garlic cloves, chopped fine
thumb-sized piece of fresh ginger, peeled and chopped fine
2 tbsp ground paprika
1 tsp ground [...]]]></description>
			<content:encoded><![CDATA[<p>This Indian classic is very easy to make. This is <em><strong>not</strong></em> the easy version, but instead the amazing Matt-went-home-two-hours-early-to-cook-the-feast gourmet version, heavily adapted from numerous sources.</p>
<p>3 lbs boneless chicken breasts<br />
1 lemon, cut in half<br />
1/4 cup ghee, melted<br />
4 large garlic cloves, chopped fine<br />
thumb-sized piece of fresh ginger, peeled and chopped fine<br />
2 tbsp ground paprika<br />
1 tsp ground cinnamon<br />
1 tbsp ground cumin<br />
1 tsp ground coriander<br />
1/2-1 tsp ground chili powder<br />
1/2 tsp ground cloves<br />
1/2 cup plain yogurt<br />
4 drops red food coloring<br />
2 drops yellow food coloring<br />
2-3 small (or one large and seeded) chili peppers, chopped fine<br />
14 oz can diced tomatoes<br />
1 cup heavy cream<br />
1/4 cup fresh cilantro (chopped)<br />
salt<br />
pepper</p>
<p>Preheat oven to 400F (will be using top rack). Place cleaned chicken in large glass bowl  and  stab repeatedly with pairing knife. Rub in 1/2 lemon and 1/2 tsp salt. Add in 1/2 of the chopped garlic, 1/2 of the cumin, 1 tbsp paprika,  and all of: ginger, yogurt, food coloring, cinnamon, coriander, chili powder, cloves. Mix with your hands until everything is evenly coated up to your elbows. If prepping ahead, this mix can go into the fridge for up to a week just fine.</p>
<p>Put chicken on cookie cooling rack over a solid, rimmed cookie sheet (dripping on the bottom of the oven are not fun). Some people claim a roasting pan works too. *shrug* With turkey baster, or a spoon if you&#8217;re boring, splurt 1/2 of the ghee over the top of  the chicken mess. Bake for 45 minutes. Broil for 10-20 minutes until top coating visibly blackening in spots (not burning!!). While broiling, make the sauce (next paragraph).</p>
<p>In large cast iron skillet, add remaining ghee over high heat until drops of water cause sizzling. Add remaining garlic and chili pepper, sauteing for 30 seconds or so. <strong>CAREFULLY</strong> add cream, diced tomatoes (with liquid) &#8211; ghee will be hot and addition of liquid may causing flashing!! Stir in remaining spices except cilantro (a few grinds of salt and pepper, too). Reduce heat to medium and simmer uncovered, stirring regularly,  for about 10  minutes or until sauce visibly thicker.</p>
<p>After chicken is done, remove and allow to cool for a couple minutes. Cut into small chunks and add to sauce.  Cover and reduce heat to low, cooking about 5 minutes.</p>
<p>Serve with rice and bread, sprinkling cilantro and a lemon wedge around plate edges for garnish and extra seasoning.</p>
<p>Serves 4. Prep time about 1 hour (serial). Cook time 70-85 minutes.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/21/chicken-tikka-masala/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Expansive Consolidation: Sagas 1 and 2</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/16/expansive-consolidation-sagas-1-and-2/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/16/expansive-consolidation-sagas-1-and-2/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 22:38:22 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Linuxy]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=558</guid>
		<description><![CDATA[Saga 1: The Cascading Power of New Things
A while back, I got a new &#8220;TV&#8221;: An LG LH90. This TV, unlike my old TV (a Sony Wega that weighed 275lbs), could actually be placed atop furniture (as opposed to a steel-reinforced, purpose-built &#8220;Wega Stand&#8221;). Through the miracle of 4 HDMI ports on the TV, the [...]]]></description>
			<content:encoded><![CDATA[<h2>Saga 1: The Cascading Power of New Things</h2>
<p>A while back, I got a new &#8220;TV&#8221;: An <a href="http://www.lge.com/products/model/detail/lh90%20series.jhtml">LG</a> LH90. This TV, unlike my old TV (a Sony Wega that weighed 275lbs), could actually be placed atop <em>furniture</em> (as opposed to a steel-reinforced, purpose-built &#8220;Wega Stand&#8221;). Through the miracle of 4 HDMI ports on the TV, the cable box, Playstation 3 and my primary home PC can all be slaved  to a single gigantic screen: The TV also has a fiberoptic audio output which went smoothly into my old-yet-still-amazing surround-sound receiver, allowing me to use just the HDMI between devices for all video <em>and</em> audio. Consolidation nirvana!! But there was a problem:</p>
<p>My TV could be remote controlled from The Comfiest Couch In The World.</p>
<p>My PS3 could be remote controlled from The Comfiest Couch In The World.</p>
<p>My cable box could be remote controlled from The Comfiest Couch In The World.</p>
<p>My PC &#8230; couldn&#8217;t.</p>
<p>*twitch* *twitch* *sob* I had to <em>get up</em> and &#8230; *twitch* push a button.</p>
<p>So, I set upon the Intertubes with the goal of fixing that. Unfortunately, as forays into the morass of technology acquisition seem to go for me, I was sidetracked by a dangerous thing: <em>potential.</em></p>
<h2>Saga 2: Patiently Purveying Potential Possibilities&#8230; Primarily</h2>
<p>While I should have been sufficiently pleased with acquiring a <a href="http://www.thermaltakeusa.com/">Thermaltake</a> <a href="http://www.thermaltakeusa.com/Product.aspx?C=1156&amp;ID=1485">HTPC remote system</a>, I kept listing restlessly at night, thinking of the other magical things I saw on the Interweb&#8230; Thinking of what I <em>could</em> do. After all, wouldn&#8217;t it be <em>so cool</em> if I built my PC <em>into</em> the <em>furniture</em>? That little cubby on the right was just begging to be modded- Begging to serve a higher purpose than banal storage.</p>
<p>But a mod of <em>wood</em>? Wood is a poor conductor of heat, and an amazing insulator: That would be a thermodynamic nightmare! And that point was precisely why I had to do it: I found a worthy challenge.</p>
<h3>Specification</h3>
<ul>
<li>Must not destroy, scratch or poke holes in the pricey (and pretty) furniture</li>
<li>Must properly cool my 6-core system, and oversized graphics cards</li>
<li>Must not be externally louder than current design (10-20dB)</li>
<li>Must be completely controllable from The Comfiest Couch In The World</li>
<li>Must be worthy</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/16/expansive-consolidation-sagas-1-and-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Answer: Is Working For the Gambling Industry a Black Mark?</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/13/answer-is-working-for-the-gambling-industry-a-black-mark/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/13/answer-is-working-for-the-gambling-industry-a-black-mark/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 11:45:49 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=556</guid>
		<description><![CDATA[A recent Ask Slashdot posed the question &#8220;is working for the gambling industry a black mark?&#8221; The answer: Yes and No.
If you apply for jobs being vetted by morally superior -word removed- who pine for the &#8220;old days&#8221; of hunting witches in Salem , probably yes.
If not, then no. As someone who has done a [...]]]></description>
			<content:encoded><![CDATA[<p>A recent <a href="http://ask.slashdot.org/story/09/10/12/1928215/Is-Working-For-the-Gambling-Industry-a-Black-Mark">Ask Slashdot</a> posed the question &#8220;is working for the gambling industry a black mark?&#8221; The answer: Yes and No.</p>
<p>If you apply for jobs being vetted by morally superior -<em>word removed</em>- who pine for the &#8220;old days&#8221; of hunting witches in Salem , probably yes.</p>
<p>If not, then no. As someone who has done a lot of consulting for various gambling-related businesses, I can tell you that any software development company should prize former casino/gambling-related coders (that leave on good terms). It takes a lot of pedantic coding, edge-case handling, and vociferous documentation to make that industry run &#8220;right&#8221;, and those skills are hard to bake into someone.</p>
<p>I can&#8217;t speak to other countries, but in the US there are very few jobs that will &#8211; in and of themselves &#8211; cause you to get passed over for prospective employment. Except maybe working for the Revenue Service. We really don&#8217;t like them.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/13/answer-is-working-for-the-gambling-industry-a-black-mark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can You Have Too Many Roombas?</title>
		<link>http://mattwork.potsdam.edu/blog/2009/10/08/can-you-have-too-many-roombas/</link>
		<comments>http://mattwork.potsdam.edu/blog/2009/10/08/can-you-have-too-many-roombas/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 22:45:00 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linuxy]]></category>
		<category><![CDATA[Roomba]]></category>

		<guid isPermaLink="false">http://mattwork.potsdam.edu/blog/?p=553</guid>
		<description><![CDATA[I have four Roombas of three different models (I blame Steve for telling me about &#8220;deals&#8221;). I think I may have too many. Regardless, the one thing they all have in common is a hacked together BlueTooth connection so I can run various software on them remotely. While I haven&#8217;t really talked a lot about [...]]]></description>
			<content:encoded><![CDATA[<p>I have four Roombas of three different models (I blame Steve for telling me about &#8220;deals&#8221;). I think I may have too many. Regardless, the one thing they all have in common is a hacked together BlueTooth connection so I can run various software on them remotely. While I haven&#8217;t really talked a lot about those &#8220;various softwares&#8221;, I&#8217;m really excited about a project I&#8217;m working on now, working title of RooCluster.</p>
<p>RooCluster is a command-and-control application designed for the special needs of  multiple robots operating in the same space, or over large multi-room spaces. Each Roomba is being fitted with an RFID tag, which, in coordiation with some more wireless access points, allows me to triangulate where a Roomba is and its travel vector (sometimes, math is cool). This information can help RooCluster avoid nasty Roomba-on-Roomba collisions, and also presents the possibility of meta-virtual walls.</p>
<p>If you have a Roomba, you probably have a virtual wall &#8211; the little pylon that sends out an infrared beam that the Roombas treat just like a wall. With some work, RooCluster should be able to honor coordinate-based lines (which could, in turn, form other shapes) and effectively &#8220;wall-off&#8221; areas without needing a physical barrier, or a battery-sucking virtual wall. You can also overlay the position and vector data onto floorplans, and see exactly where the Roombas are, and where they&#8217;re going.</p>
<p>Of course, you can also use it to make your Roombas dance with each other.</p>
<p>Or joust.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattwork.potsdam.edu/blog/2009/10/08/can-you-have-too-many-roombas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
