<?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>rlucas.net: The Next Generation &#187; Uncategorized</title>
	<atom:link href="http://blog.rlucas.net/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rlucas.net</link>
	<description>...fighting entropy one financing round at a time</description>
	<lastBuildDate>Wed, 28 Jul 2010 02:03:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The &#8220;user&#8221; virtual file / workspace in Prolog.</title>
		<link>http://blog.rlucas.net/uncategorized/the-user-virtual-file-workspace-in-prolog/</link>
		<comments>http://blog.rlucas.net/uncategorized/the-user-virtual-file-workspace-in-prolog/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 19:35:00 +0000</pubDate>
		<dc:creator>rlucas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[prolog]]></category>
		<category><![CDATA[propaedeutics]]></category>

		<guid isPermaLink="false">http://blog.rlucas.net/?p=397</guid>
		<description><![CDATA[When you&#8217;re first learning about Prolog, sometimes you&#8217;ll read books or tutorials that show you typing in &#8220;clauses,&#8221; and then immediately thereafter typing a &#8220;query.&#8221; If you use a visual or browser-based Prolog implementation, you&#8217;ll discover that there are two &#8220;modes&#8221; (my term), one for the input of the program / database, and one for [...]]]></description>
			<content:encoded><![CDATA[<p>When you&#8217;re first learning about Prolog, sometimes you&#8217;ll read books or tutorials that show you typing in &#8220;clauses,&#8221; and then immediately thereafter typing a &#8220;query.&#8221;  If you use a visual or browser-based Prolog implementation, you&#8217;ll discover that there are two &#8220;modes&#8221; (my term), one for the input of the program / database, and one for querying.  The query form is denoted by the prompt &#8220;?-&#8221; as in:<br />
<code><br />
?- my_query_(Variable).</code></p>
<p>To me, it was somewhat confusing as to why and how I had to keep separate my program from my queries, since I was used to REPL-type interactive programming (e.g. irb for Ruby).</p>
<p>Later, in reading the SWI-Prolog manual, I saw reference to this odd snippet in the &#8220;<a href="http://www.swi-prolog.org/pldoc/doc_for?object=section%282%2c%20%274.27%27%2c%20swi%28%27%2fdoc%2fManual%2fextendarith.html%27%29%29">Adding Arithmetic Functions</a>&#8221; section:</p>
<p><code>?- [user].</p>
<p>:- other_stuff(x).</code><br />
&#8230;</p>
<p>It appeared that [user] was changing the mode from query-mode to program-mode, and allowing me to define new predicates.</p>
<p>Well, close.  It turns out the way to think about this (can&#8217;t seem to find it in the SWI-Prolog manual) is that the square-bracket notation is the &#8220;load file&#8221; shortcut, and Prolog comes with a virtual file known as &#8220;user.&#8221;  When you query:</p>
<p><code>?- [user].</code></p>
<p>and then go on to get:</p>
<p><code>|:</code></p>
<p>as your new prompt, you&#8217;re loading the &#8220;user&#8221; file which is like opening a handle on STDIN.  (Not precisely, but close enough.)  You can then type your program entries, /but you must terminate them with EOF/ (ctrl-D).</p>
<p>This bit of prerequisite knowledge would have saved me a lot of puzzlement and trial-and-error.  A shame that Prolog, despite a nearly 40-year history of continuous use and usefulness, has such a high propaedeutic load.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rlucas.net/uncategorized/the-user-virtual-file-workspace-in-prolog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Getting It&#8221; in IT Security</title>
		<link>http://blog.rlucas.net/uncategorized/getting-it-in-it-security/</link>
		<comments>http://blog.rlucas.net/uncategorized/getting-it-in-it-security/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 21:39:11 +0000</pubDate>
		<dc:creator>rlucas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[brainlessness]]></category>
		<category><![CDATA[getting it]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.rlucas.net/?p=374</guid>
		<description><![CDATA[Look, folks, PKI is hard to grok fully. But if your entire business is being a trust provider (SSL cert vendor), you should try. GeoTrust makes their Root Certs (the things you download and install in order to tell your computer, &#8220;trust things from this authority&#8221;) available via an insecure connection: http://www.geotrust.com/resources/root-certificates/ Unreal.]]></description>
			<content:encoded><![CDATA[<p>Look, folks, PKI is hard to grok fully.  But if your entire business is <em>being a trust provider</em> (SSL cert vendor), you should try.</p>
<p>GeoTrust makes their Root Certs (the things you download and install in order to tell your computer, &#8220;trust things from this authority&#8221;) available via an insecure connection:</p>
<p>http://www.geotrust.com/resources/root-certificates/</p>
<p>Unreal.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rlucas.net/uncategorized/getting-it-in-it-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Gotchas with using svndumpfilter</title>
		<link>http://blog.rlucas.net/uncategorized/some-gotchas-with-using-svndumpfilter/</link>
		<comments>http://blog.rlucas.net/uncategorized/some-gotchas-with-using-svndumpfilter/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 22:41:09 +0000</pubDate>
		<dc:creator>rlucas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bugfix]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blog.rlucas.net/uncategorized/some-gotchas-with-using-svndumpfilter/</guid>
		<description><![CDATA[A few things: 1. svndumpfilter can take multiple args, e.g. $ svndumpfilter include /x /y /z > mydump to include /x, and /y, and /z. It can&#8217;t, however, do both include and exclude at once. In theory, you can run multiple dumps when you later load them, so you could (sort of; see below) accomplish [...]]]></description>
			<content:encoded><![CDATA[<p>A few things:</p>
<p>1. svndumpfilter can take multiple args, e.g.</p>
<p>  $ svndumpfilter include /x /y /z > mydump</p>
<p>to include /x, and /y, and /z.  It can&#8217;t, however, do both include and exclude at once.  In theory, you can run multiple dumps when you later load them, so you could (sort of; see below) accomplish the sameish thing with</p>
<p>  $ svndumpfilter include /x > mydumpx<br />
  $ svndumpfilter include /y > mydumpy<br />
  $ svndumpfilter include /z > mydumpz</p>
<p>2. HOWEVER, if you have ever MOVED a file within the repository between (in the example above), /x and /y, you can&#8217;t rely upon doing it piecewise.  That&#8217;s because the references within the loading process during the load of /y will no longer be valid as they point to /x/whatever.</p>
<p>3. It is commonly suggested that one edit &#8220;Node-path:&#8221; entries within the dump in order to fix up directory structure issues.  NOTE that you MUST also change &#8220;Node-copyfrom-path:&#8221; in the same manner.  Trickily, Node-copyfrom-path is only present in nodes that were (surprise!) copied from another node.  This is of course tied to 2. above.</p>
<p>&#8212;</p>
<p>What is all this about, you ask?  Well, it turns out that if you have a single respository with a lot of sprawling projects all under /trunk, you might need to break them out.  (For example, if you intend to upload your repository dump to someone like a CVSDude or Beanstalk).</p>
<p>The error message that got me was something like:</p>
<p>svnadmin: File not found: revision 91, path &#8216;/trunk/x/whatever&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rlucas.net/uncategorized/some-gotchas-with-using-svndumpfilter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technologies I want an excuse to use&#8230;</title>
		<link>http://blog.rlucas.net/uncategorized/technologies-i-want-an-excuse-to-use/</link>
		<comments>http://blog.rlucas.net/uncategorized/technologies-i-want-an-excuse-to-use/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 00:15:52 +0000</pubDate>
		<dc:creator>rlucas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.rlucas.net/?p=325</guid>
		<description><![CDATA[Cassandra, the Facebook-derived, neither-row-nor-column-oriented-quite, massively distributed data store. New hybrid languages that run atop Java VMs: Scala and Groovy. Hadoop.  Just &#8216;cuz. The R statistical computing system.]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://incubator.apache.org/cassandra/">Cassandra</a>, the Facebook-derived, neither-row-nor-column-oriented-quite, massively distributed data store.</li>
<li>New hybrid languages that run atop Java VMs: <a href="http://www.scala-lang.org/">Scala</a> and <a href="http://groovy.codehaus.org/">Groovy</a>.</li>
<li>Hadoop.  Just &#8216;cuz.</li>
<li>The R statistical computing system.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.rlucas.net/uncategorized/technologies-i-want-an-excuse-to-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password Policies Must Be Disclosed!</title>
		<link>http://blog.rlucas.net/uncategorized/password_policy_must_be_disclosed/</link>
		<comments>http://blog.rlucas.net/uncategorized/password_policy_must_be_disclosed/#comments</comments>
		<pubDate>Thu, 20 Jul 2006 07:00:00 +0000</pubDate>
		<dc:creator>rlucas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rlucas.net/wp/uncategorized/password_policy_must_be_disclosed/</guid>
		<description><![CDATA[Most all web applications require some sort of username and password to login. However, you never know upon signing up how the application (site, service, whatever) will treat your password. &#8211; Option 1: The app does what all good applications, having been entrusted with your password, ought to do: it passes it through a one-way [...]]]></description>
			<content:encoded><![CDATA[<p>Most all web applications require some sort of username and password to login.  However, you never know upon signing up how the application (site, service, whatever) will treat your password.  &#8211; Option 1: The app does what all good applications, having been entrusted with your password, ought to do: it passes it through a one-way hash function (ideally with a random salt), and stores /only/ that hash code. There is *no* mathematically feasible way to retrieve your password, given only the hash code (although in some cases dictionary attacks work).  Hence, if you forget your password, they have to send you a new one, but at no time does a second human have a chance to see your chosen password.  &#8211; Option 2: The app is brain-dead, and stores your password in plain-text, (or in a symmetrically encrypted form where the decryption key is programmatically available to the app).  These boneheads become recognizable when, upon using the &#8220;forgot password&#8221; functionality, they  /send back your original chosen password in unencrypted email!/  (Dear reader, it should hardly be necessary to describe why this is a problem, but consider that in our wireless age, every unencrypted communication may as well be considered public knowledge.)  There are exceptions, of course, where option 2 is quite reasonable; the venerable mailing list manager Majordomo tells you up front,  &#8220;/Do not use a valuable password as it will occasionally be emailed back to you in cleartext/,&#8221; which tells you right up front what the situation is.  Yet, any number of ostensibly professionally-run web apps &#8212;  /many of whom anticipate being the lucky recipient of my credit card number to consummate a transaction/ &#8212; cannot be bothered either to properly protect my password or to inform me about their practices.  *Therefore, I propose:* a &#8220;Password Statement&#8221;, as an adjust to or embedded within a site&#8217;s privacy and security policies, that describes how they plan on treating your shared secret (password).  This statement should be summarized in a one-sentence line next to the password box on the registration dialog, with a link to more information (much as has become the /de facto/ standard for a statement about spam policies).  Finally, I propose a voluntary &#8220;seal&#8221; program whereby a TRUSTe- or Verisign secure site-like seal is made available, subject to a benign entity&#8217;s copyright and trademark protection, to both signify a site&#8217;s password policy at a glance and to serve as a link to the password statement.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rlucas.net/uncategorized/password_policy_must_be_disclosed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->