<?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>Ethan Fast</title>
	<atom:link href="http://blog.ethanjfast.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ethanjfast.com</link>
	<description>Lambdas, Hacks, and Fiction</description>
	<lastBuildDate>Mon, 24 May 2010 14:37:34 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nytimes Oracle (a Markov text generator)</title>
		<link>http://blog.ethanjfast.com/2010/05/nytimes-oracle-a-markov-text-generator/</link>
		<comments>http://blog.ethanjfast.com/2010/05/nytimes-oracle-a-markov-text-generator/#comments</comments>
		<pubDate>Mon, 24 May 2010 14:33:01 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Hacker News]]></category>
		<category><![CDATA[Markov]]></category>
		<category><![CDATA[Nytimes]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=465</guid>
		<description><![CDATA[
From this comment on HN, I came across a well-written article on generating sentences using a very simple Markov algorithm.  The basic idea is that a body of text is divided into word-pairs, where the frequency of a given pair determines the likelihood of the generator producing the second word in that pair when presented [...]]]></description>
			<content:encoded><![CDATA[
<p>From <a href="http://news.ycombinator.com/item?id=1372670">this comment</a> on HN, I came across a <a href="http://www.in-vacua.com/markov_text.html">well-written article</a> on generating sentences using a very simple Markov algorithm.  The basic idea is that a body of text is divided into word-pairs, where the frequency of a given pair determines the likelihood of the generator producing the second word in that pair when presented with the first (a sentence ends when the generator encounters a period). It&#8217;s easy to construct sentences by randomly selecting a starting word from the input text, and feeding it to the generator.</p>
<p>Naturally, the kind of sentences that are output very much depends on the content of the input. For this reason, I have mined the ineffable wisdom that constitutes today&#8217;s Nytimes oped page, and fed it to my generator (its code is available on <a href="http://github.com/Ejhfast/Markov">github</a>). Much of the output is nonsense, but it occasionally produces some clever phrases. Here is a sample:</p>
<ol>
<li><em>wise to calculate it is not only to be confused with the show, but as the party leaders to overlook his party machine, even as well. </em></li>
<li><em>produce such creatures, but it is the teenaged Omar Khadr. </em></li>
<li><em>seems that the first trial goes by consumer advocates to begin reducing emissions, the race. </em></li>
<li><em>Spanish-American War, the biggest banks, its support for the welfare state — a former state insurance superintendent, Eric Dinallo; and exploited by Vancouver or the socialism-and-death-panels crowd are crankish or forty years and common decency behind. </em></li>
<li><em>why tonight, when what a major candidates: Rick Lazio, a child. </em></li>
<li><em>Richard Brodsky; a risk and his message to put off to the libertarians who have been in Greenwich. </em></li>
<li><em>designate one in ever-more extreme directions, reveling in the Senate into talking. </em></li>
<li><em>always true motives in the Senate primary, when the National Academy of the Bush era. </em></li>
<li><em>been public safety and his Kagan for the 1990s with the show as a firefight in the last quip. </em></li>
<li><em>that his cell with the race. </em></li>
<li><em>be doing extremely well, and required large-scale taxpayer-financed bailouts to the name of the reports will be impossible to improve the fact that the racist or worse. </em></li>
<li><em>for the fact that the show first interrogator, identified at even modest changes from the new health insurers, starting in power. </em></li>
<li><em>and by corporate political persuasion shouldn’t be paid for the show has been his party now giving more choices on upper brackets back to both Rand Paul rode to improve quality improvement over a year, according to overlook his party than a chance to a child. </em></li>
<li><em>billion tons of the right to counsel and illegal immigration), radically noninterventionist (he’s against regulation seems that the party’s eventual nominee.” Jonathan Chait of the United Nations officials have voted for example, at knowing when NPR and by what a career barometer. </em></li>
<li><em>a Western nation should make money to a trial under duress, he was killed again parties generally control their own re-election. Sometimes bloggers get on the Senate into the disastrous oil spill in “a state convention this rage against a libertarian. </em></li>
<li><em>confirmation battles: ensuring his father, a conservative Pennsylvania House race: While Obama did it would have to spend at being channeled and his abuse in the use the reporters’ credentials. </em></li>
<li><em>by what did they can be no better off if Congress fails to the United Nations Intergovernmental Panel on the nation should not. </em></li>
<li><em>can be no surprise to the results of the Senate would have to the whole story. </em></li>
<li><em>Pa. are doomed; the audition in the Tea Party movement, writes Jennifer Rubin at knowing when to keep it as a broad definition and Pentagon barred four reporters from the same formula the problem is caused largely by what can be the current one: “There is not a career barometer. </em></li>
<li><em>his views of the current rate of the West’s involvement in particular, ran a fierce struggle over a conservative (opposing both Rand Paul won; Arlen Specter in the Iraq war profiteering.” And they collect on the Supreme Court, which is the party leaders have been in the fact that the president’s criticism of their list. </em></li>
<li><em>be to C.E.O.’s, investment bankers and the gold standard and his abuse in the show as they have inspired so stringently constitutionalist that he would have been in the show as the use the Geneva Conventions and his father, Ron, included — hipsters and the most interesting “paleo” presidential administration and Rachel Maddow asked about Rush Limbaugh; it’s all about Ron Paul’s win a staple gig for offshore drilling, and financial industry, in the Tea Party movement, whose inchoate antideficit enthusiasms Paul and skeptical of the show as the reporters’ credentials. </em></li>
<li><em>can’t afford $200,000 or that his message to calculate it is not only indirectly did they would be no clearer symbol of the public. </em></li>
<li><em>that the Tea Party movement,” writes Jennifer Rubin at the party in part of the early days we rely on the reform a part of the state regulators develop standards, is not expected for the whole story. </em></li>
<li><em>political party’s voters a particular kind of the most interesting “paleo” writers of the Tea Party establishment; he took a mandate to raise tax rates on the name to press is being very, very end of the complexities of the show as a bit. </em></li>
<li><em>objected to a political system can be allocated to the current rate of the paleocon journalist Sam Waterston’s character was offensive, tone deaf and his father, Ron, included — as a stretcher following his home country a broad definition and his son found himself very angry. </em></li>
<li><em>Much reporting on the Tea Party establishment; he was the academy says that the whole story.. </em></li>
<li><em>everyone from the Republican primaries: Rand Paul have flaws, including “paleoconservatism,” “the old right” and the Bush era. </em></li>
<li><em>than your average partisan, but they would be the most beautiful New York life, were as usual. </em></li>
<li><em>Obama administration needs to a message that he was also Rubio, and his abuse in the show as the military-industrial complex. </em></li>
<li><em>Paul is going on? One answer is now giving more than just another unjustified expansion of the fighting. </em></li>
<li><em>judge on the House nomination of the party voters is to the Patriot Act but it is rightly urging a percentage of the commerce committee, says his message to find themselves as usual. </em></li>
<li><em>flagged as a former president, not the tribunals instead of the Senate primary, when what they would have to stop. </em></li>
<li><em>much on the growth of the show as a career barometer. </em></li>
<li><em>brings us all, we rely on it. </em></li>
<li><em>don’t cry for the modern conservative movement while benefiting from United Nations officials and required large-scale taxpayer-financed bailouts to the deadly hand grenade is not expected for the attention of the current administration. </em></li>
<li><em>takers for the fact that are as a medical loss ratio. </em></li>
<li><em>says that has been in the United States Senate primary, when to the fact that the Tea Party movement,” writes Jennifer Rubin thinks Carlson was a sympathy for the current one: There is going nowhere. </em></li>
<li><em>sounds familiar, it under the most popular Democrats are doomed; the show as the election is rightly urging a child. </em></li>
<li><em>though, as a libertarian, certainly, but only true or the House last year. </em></li>
<li><em>the same chance to the results in a retrograde proposal introduced in the harder and his father, Ron, included — I mean, what they printed the convention delegates’ votes. </em></li>
<li><em>Money; all that Ron Paul won; Arlen Specter and his Kagan for the show has been public safety usually meant that Rand Paul have to reach the infighting. </em></li>
<li><em>first interrogator, identified at Afghanistan’s Bagram prison occurred while the sort of the gulf is not only on the United Nations officials and his effort to demonstrate that his son found himself publicly undone, in the Senate primary, when we’ll get on it. </em></li>
<li><em>Specter under the appearance of the city rejoiced. </em></li>
<li><em>Times this worldview goes forward this summer as a bad doctors as a Toronto-born Guantánamo Bay detainee named Omar Khadr. </em></li>
<li><em>a few Democrats are doomed; the president’s criticism from Idaho milita members to a hoax. </em></li>
<li><em>who is not fewer. </em></li>
<li><em>of the history of the show as on the National Association of the appearance of the Pentagon officials and stranger bedfellows still. </em></li>
<li><em>they did Specter in the nation should not. </em></li>
<li><em>with the election to the administration wants to try to the Supreme Court, which will amount to emerge from the first trial lawyer who can’t afford $200,000 or administrative activities that doesn’t break up the United Nations officials have to accommodate the parties, which is rightly urging a broad range of the Obama administration got him in the party’s delegates should clearly overreaching. </em></li>
<li><em>themselves as a famous 1936 speech, struggling with the Midwestern Republicans in the 1990s with the Military Commissions Act but in the ballot by insurers are omnipotent; the current one: “There is covered should not. </em></li>
<li><em>and land-based ecosystems — a broad definition and strive for the cost of the race. </em></li>
<li><em>For grass-roots rebel at Wednesday’s session in the drug war and investment bankers and human activities, and his party bosses: Give party now face isn’t surprising that the hearing, which deprived him of the growth of the Tea Party darling who should produce 266 billion tons of their hatred,” he was sedated for the cost of the reporters’ credentials. </em></li>
<li><em>“Climate change is not a member of bitter, seething, hysterical fury” toward the Senate if it is being very, very end of the Republican pantheon, paleoconservatives identify with the Civil Rights Act. </em></li>
<li><em>we do without facing are doomed; incumbents are as a part of the election results with the show, but it would be doing extremely well, but the Senate primary, when he was a career barometer. </em></li>
<li><em>age of the election is being original. </em></li>
<li><em>ideas that American Crossroads, a quality at least 80 to the Military Commissions Act but programs that Mr. </em></li>
<li><em>care and his home country under deregulation, eventually bringing on the show as a mere bystander. </em></li>
<li><em>Specter, however, I caught a student of the 1990s. </em></li>
<li><em>The evidence that both abortion and his father, a juvenile, which is “un-American,” that paleoconservatives are doomed; the Pentagon barred four reporters from the name of the ballot through the 1964 Civil Rights Act.” But the nation should count, but more in favor of the party now rather than by what they would include programs as the cost of the hearing, which used threats of the voters. </em></li>
<li><em>that the most popular Democrats in the president’s criticism from the tap-dancing route he was a broad range of their candidate who should count the United States Senate would be doing extremely well, but the right may be drawn. </em></li>
<li><em>requires health insurers, starting in the state regulators develop regulations to the story of the first trial lawyer who can’t even think of the whole story. </em></li>
<li><em>did it as a total of their members to the outside, this harmonious spectacle looms a chance to a retrograde proposal introduced in the weekend (and under deregulation, eventually called “the old theater pros, like it is not necessarily a new restrictions? Apparently it just hours of the final episode is the primary ballot through the teenaged Omar Khadr. </em></li>
<li><em>these look like it would be paying little more money to play out on the Bush era. </em></li>
<li><em>to keep Obama and poses significant risks for the election results of the right to the final episode is helping the Obama administration plans to be the harder and his moment of the most interesting “paleo” writers of the United Nations officials have to a bad lingering taste from the reform a question of the West’s involvement in the G.O.P. </em></li>
<li><em>of the 2007 report from the Tea Party movement,” writes Jennifer Rubin — prompting me discover actors a staple gig for a line on the Obama and his inner F.D.R., and his inner F.D.R., and private institutions. </em></li>
<li><em>can be doing extremely well, but it were, it under the show first person in a generation. </em></li>
<li><em>Paul represents. </em></li>
<li><em>convicted of the show first trial under the Midwestern Republicans who was a choice. </em></li>
<li><em>afford $200,000 or activities that “sometimes accidents happen.” The ruling from Idaho milita members to admit, after his name a well-polished campaign in the same formula the biggest names in the universe. </em></li>
<li><em>haw about Big Government; it’s all that the fighting. </em></li>
<li><em>Virginia, and the military-industrial complex. </em></li>
<li><em>of the first person got him in the G.O.P. </em></li>
<li><em>because they would be paying little more money to his moment of the infighting. </em></li>
<li><em>southeastern Louisiana: the show first trial lawyer who stood athwart the usual Republican Senate continues to combat global warming has sold out on the Bush era. </em></li>
<li><em>opposition into talking. </em></li>
<li><em>one, it as a plea deal. </em></li>
<li><em>theater actors, “Law &amp; Order.” For two decades the United Nations), and his message to avoid an already reclassifying many ways, a century and do that gets the right to calculate it would be the appearance of the problem is a generation. </em></li>
<li><em>called the old enemies of the political dogfight about Rush Limbaugh; it’s all of the show as a mandate to implement reform. </em></li>
<li><em>providers should not. </em></li>
<li><em>the president’s criticism of the Tea Party establishment; he could have been in the modern conservative movement has sold out to find an already a student of the medical loss ratio.) The administration needs to both abortion and his party? Mr. </em></li>
<li><em>sometimes clash with the Bush commissions, but it’s all about Big Money; all about Nancy Pelosi; it’s a hoax. </em></li>
<li><em>week Rand Paul won; Arlen Specter in: “Then came Obama’s nomination of the Civil Rights Act.” But Paul rode to Clinton-era levels. </em></li>
<li><em>own re-election. Sometimes bloggers get on the disastrous oil spill in the judge had won, insists Karl Rove, writing at knowing when what we would have chosen a political operations should make sure that the racist or that his father, a broad range of the Senate would be tried by winning 25 percent of the National Association of the military commission because they have to play Hamlet, to find an Army sergeant later convicted of the treatment of the running, and his moment I was a sitting U.S. </em></li>
<li><em>Intergovernmental Panel on the party primary purpose is a year, according to the show first trial under terms designed to deploy large amounts of the candidate of the military’s notorious “frequent flier” program, which will have a new law leaves plenty of the whole story. </em></li>
<li><em>who was too long as well. </em></li>
<li><em>on the biggest banks, its embrace of the last year. </em></li>
<li><em>special, and the Tea Party movement, whose goal of spending is a very poor start. </em></li>
<li><em>snowfalls I’ve ever seen. </em></li>
<li><em>too hard time finding takers for the current administration. </em></li>
</ol>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=465" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/05/nytimes-oracle-a-markov-text-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security: Simultaneously Weak and Amusing</title>
		<link>http://blog.ethanjfast.com/2010/04/security-simultaneously-weak-and-amusing/</link>
		<comments>http://blog.ethanjfast.com/2010/04/security-simultaneously-weak-and-amusing/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 16:38:29 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[iSight]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[Shell Scripting]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=450</guid>
		<description><![CDATA[
At the urgings of a friend, I recently set up a script that takes a picture (with iSight) every time the lid of his MacBook is opened. To be fair, the sense in which I actually did any work is quite marginal, as two tools &#8212; ImageSnap and Sleepwatcher &#8212; handle any aspect of the [...]]]></description>
			<content:encoded><![CDATA[
<p>At the urgings of a friend, I recently set up a script that takes a picture (with iSight) every time the lid of his MacBook is opened. To be fair, the sense in which I actually did any work is quite marginal, as two tools &#8212; <a href="http://iharder.sourceforge.net/current/macosx/imagesnap/">ImageSnap</a> and <a href="http://www.bernhard-baehr.de/">Sleepwatcher</a> &#8212; handle any aspect of the setup that might reasonably be considered complex.</p>
<p>As you might guess, ImageSnap is a command line tool for taking pictures with iSight. Likewise, Sleepwatcher is a system process that can be setup to watch for various events (e.g. startup, sleep, wake, ect.) and execute  specified external scripts when such events occur. Effectively, all I needed to do was compose these two helpful utilities to get the &#8217;security system&#8217; up and running. Here is the bash script that Sleepwatcher executes on wakeup:<br />
<code><br />
tre=`date "+%Y-%m-%d--%H-%M-%S.jpg"`</code><br />
<code> ~/Programming/ImageSnap-v0.2.4/imagesnap<br />
mv snapshot.jpg ~/Pictures/security/${tre}<br />
</code><br />
To get Sleepwatcher up in the first place, setup launchd to run something like the following:<br />
<code><br />
/usr/local/sbin/sleepwatcher --verbose --wakeup ./take_pic.sh<br />
</code><br />
Of course, much more complex variations can be managed. For instance, if you think a mugging might be in the cards, then you can have the pictures sent to an externally accessible server (perhaps along with intermittent system screenshots). In any case, I recommend checking these tools out.</p>
<p style="text-align: center;"><img class="aligncenter" title="Suprise" src="http://blog.ethanjfast.com/images/suprise.png" alt="" width="223" height="195" /></p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=450" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/04/security-simultaneously-weak-and-amusing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High On Lisp</title>
		<link>http://blog.ethanjfast.com/2010/04/high-on-lisp/</link>
		<comments>http://blog.ethanjfast.com/2010/04/high-on-lisp/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 14:52:14 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Comics]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=442</guid>
		<description><![CDATA[


 ]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;"><img class="aligncenter" title="High On Lisp" src="http://ethanjfast.com/images/highonlisp_nt.png" alt="" width="400" height="400" /></p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=442" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/04/high-on-lisp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thunks and Haskell</title>
		<link>http://blog.ethanjfast.com/2010/04/thunks-and-haskell/</link>
		<comments>http://blog.ethanjfast.com/2010/04/thunks-and-haskell/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 13:37:31 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Lazy Evaluation]]></category>
		<category><![CDATA[Thunks]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=431</guid>
		<description><![CDATA[
I&#8217;ve been spending a bit of time this weekend playing with Haskell, and I came across an interesting problem while writing a few functions that, overtly, would seem quite simple. Notably, Haskell is a lazy language, storing promises of later evaluation in what are called thunks.
Having some reasonable amount of experience in Clojure, lazy evaluation [...]]]></description>
			<content:encoded><![CDATA[
<p>I&#8217;ve been spending a bit of time this weekend playing with Haskell, and I came across an interesting problem while writing a few functions that, overtly, would seem quite simple. Notably, Haskell is a <a href="http://en.wikipedia.org/wiki/Lazy_evaluation">lazy language</a>, storing promises of later evaluation in what are called <a href="http://www.haskell.org/haskellwiki/Thunk">thunks</a>.</p>
<p>Having some reasonable amount of experience in Clojure, lazy evaluation did not disconcert me. However, consider the following code:</p>
<p><code> foldl (+) 0 [0..5000000]<br />
</code></p>
<p>In a result that was initially somewhat surprising to me, running this produces a stack overflow. I later found out the reason; namely, all the thunk promises are being stored on the stack, building upon each other and taking up a great deal of space. Conceptually, it might look something like:</p>
<p><code> (...(((((0 + 1) + 2) + 3) + 4) + ...) + ... 5000000)<br />
</code></p>
<p>For something as simple as addition, it is far more efficient to force evaluation as foldl builds upon itself. In this specific case, Haskell has us covered with foldl&#8217; which is a <em>strict</em> version of fold. The following code runs just fine:</p>
<p><code> foldl' (+) 0 [0..5000000]<br />
</code></p>
<p>One might think of is as executing something like this:</p>
<p><code> foldl' (+) 0 [1..5000000]<br />
foldl' (+) 0 [1..5000000]<br />
foldl' (+) 1 [2..5000000]<br />
foldl' (+) 3 [3..5000000]<br />
... (eventually)<br />
foldl' (+) 12500002500000 []<br />
</code></p>
<p>Here, the expensive saving of thunks is unnecessary. To see how this might be possible, take a look at <a href="http://www.zvon.org/other/haskell/Outputprelude/seq_f.html">seq</a>, a function which forces the evaluation of its first argument. All told, this served as a nice and innocuous reminder that I should be more careful with the implications of using a lazy language.</p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=431" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/04/thunks-and-haskell/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Allure of the Asymmetrical</title>
		<link>http://blog.ethanjfast.com/2010/03/the-allure-of-the-asymmetrical/</link>
		<comments>http://blog.ethanjfast.com/2010/03/the-allure-of-the-asymmetrical/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 14:35:24 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Gajure]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Syntax]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=407</guid>
		<description><![CDATA[
Thoughts on code asymmetry, as inspired by the lowly egg.
Although I&#8217;ve lived in Charlottesville for quite a while now, I haven&#8217;t really taken advantage of the numerous and various local farms. This is perhaps odd, given my health-obsessive nature, and our local prevalence of natural, grass-fed animal products. But whatever the impediment to my action [...]]]></description>
			<content:encoded><![CDATA[
<p><em><span style="color: #808080;">Thoughts on code asymmetry, as inspired by the lowly egg.</span></em></p>
<p>Although I&#8217;ve lived in Charlottesville for quite a while now, I haven&#8217;t really taken advantage of the numerous and various local farms. This is perhaps odd, given my health-obsessive nature, and our local prevalence of natural, grass-fed animal products. But whatever the impediment to my action &#8212; let us suppose  schoolwork, research, or entrepreneurial activity &#8212; I finally got around to patronizing <a href="http://www.averysbranchfarms.com/">Avery&#8217;s Branch Farms</a> last week.</p>
<p>So what does this have to do with asymmetry?  Well, I&#8217;ll be short and banal and to the point: I found that the &#8220;natural&#8221;  Avery eggs look nicer than their industrial-farm begotten counterparts. Consider Avery eggs:</p>
<p style="text-align: left;"><img class="aligncenter" title="Avery Eggs" src="http://ethanjfast.com/images/egg.jpg" alt="Avery Eggs" width="500" /></p>
<p style="text-align: left;">Against that of the typical no-name brand:</p>
<p style="text-align: center;"><img class="aligncenter" title="Eggs Normal" src="http://ethanjfast.com/images/eggs_bad.jpg" alt="Eggs Normal" width="493" height="335" /></p>
<p style="text-align: left;">At least to my eye, the local farm&#8217;s eggs look quite a bit more appealing, and not simply because of differences in color or lighting. To my unartistic perception, I would suggest that the appeal stems directly from asymmetry. If you look closely at the farm eggs, you might see that there are small but noticeable deviations in size across the carton, a slight variance in color, and a psuedo-random sprinkling of freckles across shell exteriors. This is all in comparison to the bleached look of the industrial eggs, with little or no variation in egg-size across the carton.</p>
<p style="text-align: left;">Rest assured, lest I be accused of inane ramblings on this wonderful subject, that there is a larger point here. I am guessing that a slight asymmetry plays nicer with human perception. It might draw our eyes to important details, and make it easier for us to perceive the totality of written information. In short, asymmetrical perception may may implications for how we write code.</p>
<p style="text-align: left;">Consider the comparison of a C function (taken sort-of randomly from <a href="http://github.com/git/git">Git</a>) and a lisp function (taken from <a href="http://github.com/Ejhfast/Gajure">Gajure</a>). First let&#8217;s look at <em>add_files_to_cache</em>:<br />
<script src="http://gist.github.com/346771.js?file=function_from_git.c"></script> </p>
<p>Reading from the left, this function is actually quite symmetrical. The eye is not overly drawn to any particular piece of code within the curly braces &#8212; perhaps the longer lines, if anything &#8212; and functional properties are not clearly conveyed through it&#8217;s structure. Much of this, although not all of it, has to do with the imperative nature of C.  Now, consider a second function, <em>list-crossover</em>:      <script src="http://gist.github.com/346774.js?file=list-crossover.clj"></script></p>
<p>Here we see a nesting of sorts. Although this is a simpler function, to be sure, we can see by way of indentation certain functional qualities of the code (say, that <em>take</em> and <em>drop</em> are applied in the context of <em>concat</em>). The functional nature of clojure (or any lisp) lends itself well to this kind of visual deconstruction, and at least to my eye, meaning is more readily conveyed through such asymmetrical properties.</p>
<p>In closing, I don&#8217;t mean to imply that one language is better than another at conveying meaning through syntax and symmetry, merely to suggest that the way code is written (surprise, surprise, no?) has quite a bit to do with how easily it can be understood. To that end, I think symmetry, or a lack thereof, plays an important role.</p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=407" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/03/the-allure-of-the-asymmetrical/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Analyzing Word Frequencies with Clojure, Enlive and Incanter</title>
		<link>http://blog.ethanjfast.com/2010/03/analyzing-word-frequencies-with-clojure-enlive-and-incanter/</link>
		<comments>http://blog.ethanjfast.com/2010/03/analyzing-word-frequencies-with-clojure-enlive-and-incanter/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 18:39:48 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Enlive]]></category>
		<category><![CDATA[Incanter]]></category>
		<category><![CDATA[Wordy]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=381</guid>
		<description><![CDATA[
I&#8217;ve long been interested in getting a better feel for Incanter, a statistical computing and graphical environment for Clojure. So gifted with the fleeting favors of my muse (otherwise known as free time), I thought I&#8217;d put together a small library &#8212; although it&#8217;s not quite a library, yet &#8212; for analyzing word-use patterns on blogs and webpages.
To do [...]]]></description>
			<content:encoded><![CDATA[
<p>I&#8217;ve long been interested in getting a better feel for <a href="http://incanter.org/">Incanter</a>, a statistical computing and graphical environment for Clojure. So gifted with the fleeting favors of my muse (otherwise known as <em>free time</em>), I thought I&#8217;d put together a small library &#8212; although it&#8217;s not quite a library, yet &#8212; for analyzing word-use patterns on blogs and webpages.</p>
<p>To do this, I drew a bit of help from <a href="http://github.com/cgrand/enlive">Enlive</a>, which functions primarily as a templating library, but has a few features useful for screen-scraping. This was perhaps a bit of overkill, as I only ended up using one of it&#8217;s functions, <em>html-resource</em>, which takes an URL as input, and outputs an hash that nicely represents a web-page&#8217;s structure.</p>
<p>What I ended up is <a href="http://github.com/Ejhfast/wordy">wordy</a>, which at the moment can do a simple word-count frequency analysis on a given page. That is, it counts how often words used, filtering (if desired) on word length. In just a bit, I&#8217;ll get into some of the more interesting aspects of coding it  up, but first,  here is a simple use case.</p>
<p>Running the following in slime&#8230;<br />
<code>(graph-words "http://ethanjfast.com" 5 5 1)</code></p>
<p style="text-align: center;"><img class="aligncenter" title="As applied to this blog." src="/images/ethanjfast.com.png" alt="" width="500" /></p>
<p style="text-align: left;">Where the parameters correspond to:</p>
<ul>
<li>ethanjfast.com -&gt; web page to look at</li>
<li>5 -&gt; minimum length (letter count) of word for first anaylsis</li>
<li>5 -&gt; minimum length of word for last anaylsis</li>
<li>1 -&gt; the amount of word length to increment by between the first and last anaylsis</li>
</ul>
<p>To make this a bit clearer, consider a different run:<br />
<code>(graph-words "http://ycombinator.posterous.com" 3 10 3)</code></p>
<p style="text-align: center;"><img class="aligncenter" title="Ycombinator Run" src="/images/ycom2.png" alt="" width="500" /></p>
<p style="text-align: left;">Here wordy does three analyses, with minimum word lengths of 3, 6, and 9 respectively. Clearly, I have some work to do insofar as these graphs look rather pathetic, but it was nice to get incanter working.</p>
<p style="text-align: left;">Now, onto some implementation details. Most of the code is quite simple, so I&#8217;ll just go through a few functions that may have some value to someone learning Clojure. For instance, here is <em>rec-map</em>, a function which recursively traverses the map/list structure returned by <em>html-resource</em>.</p>
<script src="http://gist.github.com/325414.js"></script>
<p>Basically, this function filters out all page content that doesn&#8217;t match specific tags (getting rid of links, css, javascript, ect.) But at first glance, you might wonder why I used <em>trampoline</em> rather than <em>recur</em>. After all, <em>trampoline</em> is used to recurse between two different functions, and it looks very much like <em>rec-map</em> is calling itself. Well, the trick is that I am calling <em>trampoline</em> inside the function passed to map, so <em>recur</em> will fail spectacularly (and in a very confusing manner). So watch out for recursion within anonymous functions!</p>
<p>Here is another bit of code, where I create the graph with Incanter.</p>
<script src="http://gist.github.com/325432.js"></script>
<p>The :group-by parameter is slightly unintuitive. To use it, you make a new vector of labels, each label mapping to a counterpart in the data vector. All data with the same label are then put into the same group (e.g for data ["You" "Me" "I"] [3 2 4] one might use the label vector [0 1 1] to group &#8220;Me&#8221; and &#8220;I&#8221; together). The rest is fairly self-explanatory, but I&#8217;ll mention one thing that I didn&#8217;t know until this morning. You can&#8217;t nest the # function shortcut. For instance, the following would not work:</p>
<p><code>(map #(map #(first %1) %1) lst)</code></p>
<p>It&#8217;s rather obvious in retrospect, I know. But I was dumb enough to try it. That&#8217;s all for now, and the code is available on <a href="http://github.com/Ejhfast/wordy">github</a>.</p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=381" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/03/analyzing-word-frequencies-with-clojure-enlive-and-incanter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>As it turns out is quite innocuous</title>
		<link>http://blog.ethanjfast.com/2010/03/as-it-turns-out-is-quite-innocuous/</link>
		<comments>http://blog.ethanjfast.com/2010/03/as-it-turns-out-is-quite-innocuous/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 12:00:57 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Writing]]></category>
		<category><![CDATA[as it turns out]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[paul graham]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=368</guid>
		<description><![CDATA[
What a strange title, you say! Well, this is true, but as it turns out, you are quite likely to have parsed it incorrectly (that is, unless you have just come from this post on Hacker News).
In any case, there was a recent small flurry of activity regarding Paul Graham&#8217;s use of the rhetorical device [...]]]></description>
			<content:encoded><![CDATA[
<p>What a strange title, you say! Well, this is true, but as it turns out, you are quite likely to have parsed it incorrectly (that is, unless you have just come from <a href="http://news.ycombinator.com/item?id=1162965">this post</a> on Hacker News).</p>
<p>In any case, there was a recent small flurry of activity regarding Paul Graham&#8217;s use of the rhetorical device &#8220;it turns out.&#8221; Not to put too fine a point on it, but it turns out that these claims of hacks and benign disingenuity amount to something so small that I would call it nothing (albeit, a very clever nothing).</p>
<p>Who am I to say such a thing? Well, I have data, lovingly provided by the labors or a small ruby script and the Hpricot gem. By my count, most of pg&#8217;s statements do not require any great degree of rhetorical aid, as implied by <a href="http://jsomers.net/blog/it-turns-out">this analysis</a> (which, despite my disagreement, is excellently written). Take a look for yourself (and pardon the potentially regex-induced typos):</p>
<blockquote><p>From: http://www.paulgraham.com/angelinvesting.html<br />
When we sold our startup in 1998 I thought one day I&#8217;d do some angel investing.  Seven years later I still hadn&#8217;t started.  I put it off because it seemed mysterious and complicated.   It <span style="color: red;">turns out</span> to be  easier than I expected, and also more interesting.The part I thought was hard, the mechanics of investing, really isn&#8217;t. You give a startup money and they give you stock.  You&#8217;ll probably get either preferred stock, which means stock with extra rights like getting your money back fir&#8230;</p>
<p>From: http://www.paulgraham.com/hackernews.html<br />
&#8230;g ideas in the future, and the ones that turn out to work will probably seem just as broken as those that don&#8217;t.Probably the most important thing I&#8217;ve learned about dilution is that it&#8217;s measured more in behavior than users. It&#8217;s bad behavior you want to keep out more than bad people. User behavior <span style="color: red;">turns out</span> to be surprisingly malleable.  If people are  expected to behave well, they tend to; and vice versa.Though of course forbidding bad behavior does tend to keep away bad people, because they feel uncomfortably constrained in a place where they have to behave well.  But this way of keeping the&#8230;</p>
<p>From: http://www.paulgraham.com/highres.html<br />
&#8230;mously successful organizations like the Roman army or the British East India Company were any less afflicted by protocol and politics than organizations of the same size today. But they were competing against opponents who couldn&#8217;t change the rules on the fly by discovering new technology.  Now it <span style="color: red;">turns out</span> the rule &#8220;large and disciplined organizations win&#8221; needs to have a qualification appended: &#8220;at games that change slowly.&#8221; No one knew till change reached a sufficient speed.Large organizations will start to do worse now, though, because for the first time in history they&#8217;re no longer gettin&#8230;</p>
<p>From: http://www.paulgraham.com/cities.html<br />
&#8230; It&#8217;s probably the place in America where someone from Northern Europe would feel most at home.  But it&#8217;s not humming with ambition.In retrospect it shouldn&#8217;t have been surprising that a place so pleasant would attract people interested above all in quality of life.  Cambridge with good weather, it <span style="color: red;">turns out</span>, is not Cambridge. The people you find in Cambridge are not there by accident.  You have to make sacrifices to live there.  It&#8217;s expensive and somewhat grubby, and the weather&#8217;s often bad.  So the kind of people you find in Cambridge are the kind of people who want to live where the smartes&#8230;</p>
<p>From: http://www.paulgraham.com/distraction.html<br />
&#8230;owse the web.  (Irony of ironies, it&#8217;s the computer Steve Huffman wrote Reddit on.  When Steve and Alexis auctioned off their old laptops for charity, I bought them for the Y Combinator museum.)My rule is that I can spend as much time online as I want, as long as I do it on that computer.  And this <span style="color: red;">turns out</span> to be enough.  When I have to sit on the other side of the room to check email or browse the web, I become much more aware of it.  Sufficiently aware, in my case at least, that it&#8217;s hard to spend more than about an hour a day online.And my main computer is now freed for work.  If you try th&#8230;</p>
<p>From: http://www.paulgraham.com/good.html<br />
&#8230; truth you don&#8217;t have to remember anything, and that&#8217;s a really useful property in domains where things happen fast.For example, Y Combinator has now invested in 80 startups, 57 of which are still alive.  (The rest have died or merged or been acquired.)  When you&#8217;re trying to advise 57 startups, it <span style="color: red;">turns out</span> you have to have a stateless algorithm.  You can&#8217;t have ulterior motives when you have 57 things going on at once, because you can&#8217;t remember them.  So our rule is just to do whatever&#8217;s best for the founders.  Not because we&#8217;re particularly benevolent, but because it&#8217;s the only algorithm th&#8230;</p>
<p>From: http://www.paulgraham.com/philosophy.html<br />
&#8230;s examples of how to argue: they hoped they were getting results.  Most were wrong, but it doesn&#8217;t seem an impossible hope.This argument seems to me like someone in 1500 looking at the lack of results achieved by alchemy and saying its value was as a process. No, they were going about it wrong.  It <span style="color: red;">turns out</span> it is possible to transmute lead into gold (though not economically at current energy prices), but the route to that knowledge was to backtrack and try another approach.Thanks to Trevor Blackwell, Paul Buchheit, Jessica Livingston,  Robert Morris, Mark Nitzberg, and Peter Norvig for reading&#8230;</p>
<p>From: http://www.paulgraham.com/colleges.html<br />
&#8230;is was the new trend of worrying obsessively about what  kindergarten your kids go to.  It seemed to me this couldn&#8217;t possibly matter.  Either it won&#8217;t help your kid get into Harvard, or if it does, getting into Harvard won&#8217;t mean much anymore.  And then I thought: how much does it mean even now?It <span style="color: red;">turns out</span> I have a lot of data about that.  My three partners and I run a seed stage investment firm called  Y Combinator.  We invest when the company is just a couple guys and an idea.  The idea doesn&#8217;t matter much; it will change anyway.  Most of our decision is based on the founders.  The average &#8230;</p>
<p>From: http://www.paulgraham.com/head.html<br />
&#8230;t possible.Probably the best we&#8217;ll do is some kind of hack, like making the programming parts of an organization work differently from the rest. Perhaps the optimal solution is for big companies not even to try to develop ideas in house, but simply to  buy them.  But regardless of what the solution <span style="color: red;">turns out</span> to be, the first step is to realize there&#8217;s a problem.  There is a contradiction in the very phrase &#8220;software company.&#8221;   The two words are pulling in opposite directions. Any good programmer in a large organization is going to be at odds with it, because organizations are designed to preve&#8230;</p>
<p>From: http://www.paulgraham.com/wisdom.html<br />
&#8230;adicts them.Is the mathematician a small man because he&#8217;s discontented?  No; he&#8217;s just doing a kind of work that wasn&#8217;t very common in Confucius&#8217;s day.Human knowledge seems to grow fractally.  Time after time, something that seemed a small and uninteresting area—experimental error, even—<span style="color: red;">turns out</span>, when examined up close, to have as much in it as all knowledge up to that point.  Several of the fractal buds that have exploded since ancient times involve inventing and discovering new things.  Math, for example, used to be something a handful of people did part-time.  Now it&#8217;s the caree&#8230;</p>
<p>From: http://www.paulgraham.com/goodart.html<br />
&#8230;itional//EN&#8221;&gt;  How Art Can Be Good  December 2006I grew up believing that taste is just a matter of personal preference. Each person has things they like, but no one&#8217;s preferences are any better than anyone else&#8217;s.  There is no such thing as good taste.Like a lot of things I grew up believing, this <span style="color: red;">turns out</span> to be false, and I&#8217;m going to try to explain why.One problem with saying there&#8217;s no such thing as good taste is that it also means there&#8217;s no such thing as good art.  If there were good art, then people who liked it would have better taste than people who didn&#8217;t.  So if you discard taste, y&#8230;</p>
<p>From: http://www.paulgraham.com/mit.html<br />
&#8230;personal bias points in the same direction technology evolves in.The advantages of rootlessness are similar to those of poverty. When you&#8217;re young you&#8217;re more mobile—not just because you don&#8217;t have a house or much stuff, but also because you&#8217;re less likely to have serious relationships.  This <span style="color: red;">turns out</span> to be important, because a lot of startups involve someone moving.The founders of Kiko, for example, are now en route to the Bay Area to start their next startup.  It&#8217;s a better place for what they want to do.  And it was easy for them to decide to go, because neither as far as I know has a&#8230;</p>
<p>From: http://www.paulgraham.com/marginal.html<br />
&#8230; comics  might seem to the average person today.In the computer world we get not new mediums but new platforms: the minicomputer, the microprocessor, the web-based application.  At first they&#8217;re always dismissed as being unsuitable for real work. And yet someone always decides to try anyway, and it <span style="color: red;">turns out</span> you can do more than anyone expected.  So in the future when you hear people say of a new platform: yeah, it&#8217;s popular and cheap, but not ready yet for real work, jump on it.As well as being more comfortable working on established lines, insiders generally have a vested interest in perpetua&#8230;</p>
<p>From: http://www.paulgraham.com/america.html<br />
&#8230;upation&#8211; which is not far from the idea that each person has a natural &#8220;station&#8221; in life.  If this were true, the most efficient plan would be to discover each person&#8217;s station as early as possible, so they could receive the training appropriate to it.In the US things are more haphazard.  But that <span style="color: red;">turns out</span> to be an advantage as an economy gets more liquid, just as dynamic typing <span style="color: red;">turns out</span> to work better than static for ill-defined problems.  This is particularly true with startups.  &#8220;Startup founder&#8221; is not the sort of career a high school student would choose.  If you ask at that age, people&#8230;</p>
<p>From: http://www.paulgraham.com/randomness.html<br />
&#8230;e would.  We&#8217;d ask why we even suppose we have a &#8220;purpose&#8221; in life. We may be better adapted for some things than others; we may be happier doing things we&#8217;re adapted for; but why assume purpose?The history of ideas is a history of gradually discarding the assumption that it&#8217;s all about us.  No, it <span style="color: red;">turns out</span>, the earth is not the center of the universe—not even the center of the solar system.  No, it <span style="color: red;">turns out</span>, humans are not created by God in his own image; they&#8217;re just one species among many, descended not merely from apes, but from microorganisms.  Even the concept of &#8220;me&#8221; <span style="color: red;">turns out</span> to&#8230;</p>
<p>From: http://www.paulgraham.com/startupfunding.html<br />
&#8230; a loan that can be converted into stock later; it works out the same as a stock purchase in the end, but gives the angel more protection against being squashed by VCs in future rounds.Who pays the legal bills for this deal?  The startup, remember, only has a couple thousand left.  In practice this <span style="color: red;">turns out</span> to be a sticky problem that usually gets solved in some improvised way. Maybe the startup can find lawyers who will do it cheaply in the hope of future work if the startup succeeds.  Maybe someone has a lawyer friend.  Maybe the angel pays for his lawyer to represent both sides.  (Make sure&#8230;</p>
<p>From: http://www.paulgraham.com/ideas.html<br />
&#8230;enomenon when I worked on spam filters.  In 2002, most people preferred to ignore spam, and most of those who didn&#8217;t preferred to believe the heuristic filters then available were the best you could do.I found spam intolerable, and I felt it had to be possible to recognize it statistically.  And it <span style="color: red;">turns out</span> that was all you   needed to solve the problem.  The algorithm I used was ridiculously simple.  Anyone who&#8217;d really tried to solve the problem would have found it.  It was just that no one had really tried to solve the problem. [3]Let me repeat that recipe: finding the problem intolerable a&#8230;</p>
<p>From: http://www.paulgraham.com/inequality.html<br />
&#8230; confiscate whatever you deem to be surplus.So let&#8217;s be clear what reducing economic inequality means.  It is    identical with taking money from the rich.When you transform a mathematical expression into another form, you often notice new things.  So it is in this case.  Taking money from the rich <span style="color: red;">turns out</span> to have consequences one might not foresee when one phrases the same idea in terms of &#8220;reducing inequality.&#8221;The problem is, risk and reward have to be proportionate.  A bet   with only a 10% chance of winning has to pay more than one with a 50% chance of winning, or no one will take it.  So&#8230;</p>
<p>From: http://www.paulgraham.com/opensource.html<br />
&#8230;can I claim business has to learn it?  When I say business doesn&#8217;t know this, I mean the structure of business doesn&#8217;t reflect it.Business still reflects an older model, exemplified by the French word for working: travailler.  It has an English cousin, travail, and what it means is torture. [2]This <span style="color: red;">turns out</span> not to be the last word on work, however. As societies get richer, they learn something about work that&#8217;s a lot like what they learn about diet.  We know now that the healthiest diet is the one our peasant ancestors were forced to eat because they were poor.  Like rich food, idleness only s&#8230;</p>
<p>From: http://www.paulgraham.com/submarine.html<br />
&#8230; came from.  I could tell a lot of them were crap, but I didn&#8217;t realize why.Remember the exercises in critical reading you did in school, where you had to look at a piece of writing and step back and ask whether the author was telling the whole truth?  If you really want to be a critical reader, it <span style="color: red;">turns out</span> you have to step back one step further, and ask not just whether the author is telling the truth, but why he&#8217;s writing about this subject at all.Online, the answer tends to be a lot simpler.  Most people who publish online write what they write for the simple reason that they want to.  You &#8230;</p>
<p>From: http://www.paulgraham.com/bronze.html<br />
&#8230; a field like that would be dominated by fearsome startups with five million dollars of VC money each.  Whereas we felt pretty sure that we could hold our own in the slightly less competitive business of generating Web sites  for art galleries.We erred ridiculously far on the side of safety.  As it <span style="color: red;">turns out</span>, VC-backed startups are not that fearsome.  They&#8217;re too busy trying to spend all that  money to get software written.  In 1995, the e-commerce business was very competitive as measured in press releases, but not as measured in software.  And really it never was.  The big fish like Open Mark&#8230;</p>
<p>From: http://www.paulgraham.com/venturecapital.html<br />
&#8230;rcentage of the gains.  So they want the fund to be huge&#8211; hundreds of millions of dollars, if possible. But that means each partner ends up being responsible for investing a lot of money.  And since one person can only manage so many deals, each deal has to be for multiple millions of dollars.This <span style="color: red;">turns out</span> to explain nearly all the characteristics of VCs that founders hate.It explains why VCs take so agonizingly long to make up their minds, and why their due diligence feels like a body cavity search. [2] With so much at stake, they have to be paranoid.It explains why they steal your ideas.  E&#8230;</p>
<p>From: http://www.paulgraham.com/start.html<br />
&#8230;corporating it, of course: insurance, business license, unemployment compensation,     various things with the IRS.  I&#8217;m not even sure what the list is, because we, ah, skipped all that.  When we got real funding near the end of 1996, we hired a great CFO, who fixed everything    retroactively.  It <span style="color: red;">turns out</span> that no one comes and arrests you if you don&#8217;t do everything you&#8217;re supposed to when starting a company. And a good thing too, or a lot of startups would never get started. [5]It can be dangerous to delay turning yourself into a company, because one or more of the founders might decide to s&#8230;</p>
<p>From: http://www.paulgraham.com/hs.html<br />
&#8230;s to learn what the options were.  You don&#8217;t need to be in a rush to choose your life&#8217;s work.  What you    need to do is discover what you like.  You have to work on stuff   you like if you want to be good at what you do.It might seem that nothing would be easier than deciding what you like, but it <span style="color: red;">turns out</span> to be hard, partly because it&#8217;s hard to get an accurate picture of most jobs.  Being a doctor is not the way it&#8217;s portrayed on TV.  Fortunately you can also watch real doctors, by volunteering in hospitals. [1]But there are other jobs you can&#8217;t learn about, because no one is doing them yet&#8230;.</p>
<p>From: http://www.paulgraham.com/laundry.html<br />
&#8230;turned    against them by clumsy, self-appointed tour guides. The other big difference between a real essay and the  things they make you write in school is that a real essay doesn&#8217;t  take a position and then defend it.  That principle, like the idea that we ought to be writing about literature,    <span style="color: red;">turns out</span> to be another intellectual hangover of long forgotten origins.  It&#8217;s often mistakenly believed that medieval universities were mostly seminaries.  In fact they were more law schools.  And at least in our tradition lawyers are advocates: they are trained to be able to take either side of an &#8230;</p>
<p>From: http://www.paulgraham.com/bubble.html<br />
&#8230;ing happened during the Mississippi and South Sea Bubbles. What drove them was the invention of organized public finance (the South Sea Company, despite its name, was really a competitor of the Bank of England).  And that did turn out to be a big deal, in the long run.Recognizing an important trend <span style="color: red;">turns out</span> to be easier than  figuring out how to profit from it.  The mistake investors always seem to make is to take the trend too literally. Since the Internet was the big new thing, investors supposed that the more Internettish the company, the better.  Hence such parodies as Pets.Com.In fact mos&#8230;</p>
<p>From: http://www.paulgraham.com/essay.html<br />
&#8230;was, 700 years ago, fascinating and urgently needed work.No DefenseThe other big difference between a real essay and the things they make you write in school is that a real essay doesn&#8217;t take a position and then defend it.  That principle, like the idea that we ought to be writing about literature, <span style="color: red;">turns out</span> to be another intellectual hangover of long forgotten origins.It&#8217;s often mistakenly believed that medieval universities were mostly seminaries.  In fact they were more law schools.  And at least in our tradition lawyers are advocates, trained to take either side of an argument and make as g&#8230;</p>
<p>From: http://www.paulgraham.com/gh.html<br />
&#8230;ket.  What VCs should be looking for is the next Apple, or the next Google.I think Bill Gates knows this.  What worries him about Google is not the power of their brand, but the fact that they have better hackers. [7] RecognitionSo who are the great hackers?  How do you know when you meet one? That <span style="color: red;">turns out</span> to be very hard.  Even hackers can&#8217;t tell.  I&#8217;m pretty sure now that my friend Trevor Blackwell is a great hacker. You may have read on Slashdot how he made his  own Segway.  The remarkable thing about this project was that he wrote all the software in one day (in Python, incidentally).For &#8230;</p>
<p>From: http://www.paulgraham.com/wealth.html<br />
&#8230;he    difficulty of assigning a value to each person&#8217;s work.  For the most part they punt.  In a big company you get paid a fairly predictable salary for working  fairly hard.  You&#8217;re expected not to be obviously incompetent or lazy, but you&#8217;re not expected to devote your whole life to your work.It <span style="color: red;">turns out</span>, though, that there are economies of scale in how much of your life you devote to your work.  In the right kind of business,   someone who really devoted himself to work could generate ten or even a hundred times as much wealth as an average employee.  A programmer, for example, instead of &#8230;</p>
<p>From: http://www.paulgraham.com/gba.html<br />
&#8230;pt countries become poor; and poor countries are weak.  It seems to me there is a Laffer curve for government power, just as for tax revenues.  At least, it seems likely enough that it would be stupid to try the experiment and find out.  Unlike high tax rates, you can&#8217;t repeal totalitarianism if it <span style="color: red;">turns out</span> to be a mistake.This is why hackers worry.  The government spying on people doesn&#8217;t literally make programmers write worse code.  It just leads eventually to a world in which bad ideas win.  And because this is so important to hackers, they&#8217;re especially sensitive to it.  They can sense tot&#8230;</p>
<p>From: http://www.paulgraham.com/hp.html<br />
&#8230;eers figure out how to do it.What and how should not be kept too separate.  You&#8217;re asking for trouble if you try to decide what to do without understanding how to do it. But hacking can certainly be more than just deciding how to implement some spec.  At its best, it&#8217;s creating the spec&#8211; though it <span style="color: red;">turns out</span> the best way to do that is to implement it.Perhaps one day &#8220;computer science&#8221; will, like Yugoslavia, get broken up into its component parts.  That might be a good thing.  Especially if it meant independence for my native land, hacking.Bundling all these different types of work together in o&#8230;</p>
<p>From: http://www.paulgraham.com/spam.html<br />
&#8230;l analysis, I found immediately that it was much cleverer than I had been. It discovered, of course, that terms like &#8220;virtumundo&#8221; and &#8220;teens&#8221; were good indicators of spam.  But it also discovered that &#8220;per&#8221; and &#8220;FL&#8221; and &#8220;ff0000&#8243; are good  indicators of spam.  In fact, &#8220;ff0000&#8243; (html for bright red) <span style="color: red;">turns out</span> to be as good an indicator of spam as any   pornographic term._ _ _Here&#8217;s a sketch of how I do statistical filtering.  I start with one corpus of spam and one of nonspam mail.  At the moment each one has about 4000 messages in it.  I scan the entire text, including headers and embedded html&#8230;</p>
<p>From: http://www.paulgraham.com/icad.html<br />
&#8230;at also means there will always be lots of Java programmers, so if the programmers working for me now quit, as programmers working for me mysteriously always do, I can easily replace them.Well, this doesn&#8217;t sound that unreasonable.  But it&#8217;s all based on one unspoken assumption, and that assumption <span style="color: red;">turns out</span> to be false.  The pointy-haired boss believes that all programming languages are pretty much equivalent. If that were true, he would be right on target.  If languages are all equivalent, sure, use whatever  language everyone else is using.But all languages are not equivalent, and I think I &#8230;</p>
<p>From: http://www.paulgraham.com/road.html<br />
&#8230;an of any loose objects that might later get stuck in something.It helps if you use a technique called functional programming. Functional programming means avoiding side-effects.  It&#8217;s something you&#8217;re more likely to see in research papers than commercial software, but for Web-based applications it <span style="color: red;">turns out</span> to be really useful.  It&#8217;s hard to write entire programs as purely functional code, but you can write substantial chunks this way.  It makes those parts of your software easier to test, because they have no state, and that is very convenient in a situation where you are constantly making an&#8230;</p>
<p>From: http://www.paulgraham.com/javacover.html<br />
&#8230;ught customers would want, or something they were told to do by management.  These are smart people; if the technology was good, they&#8217;d have used it voluntarily.6. It has too many cooks.  The best programming languages have been developed by small groups.  Java seems to be run by a committee. If it <span style="color: red;">turns out</span> to be a good language, it will be the first time in history that a committee has designed a good language.7. It&#8217;s bureaucratic.  From what little I know about Java, there seem to be a lot of protocols for doing things.  Really good languages aren&#8217;t like that.  They let you do what you want &#8230;</p></blockquote>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=368" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/03/as-it-turns-out-is-quite-innocuous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gajure Now on Clojars</title>
		<link>http://blog.ethanjfast.com/2010/02/gajure-now-on-clojars/</link>
		<comments>http://blog.ethanjfast.com/2010/02/gajure-now-on-clojars/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 18:39:03 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Gajure]]></category>
		<category><![CDATA[Genetic Algorithms]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=351</guid>
		<description><![CDATA[
Gajure, my small genetic algorithm framework, is now up on Clojars. Hopefully, this should make it much more convenient to use in a real project. I also added Leiningen support, and if you use Clojure with any frequency, I&#8217;d recommend checking that out.

 ]]></description>
			<content:encoded><![CDATA[
<p><a href="http://github.com/Ejhfast/Gajure">Gajure</a>, my small genetic algorithm framework, is now up on <a href="http://clojars.org/gajure">Clojars</a>. Hopefully, this should make it much more convenient to use in a real project. I also added <a href="http://github.com/technomancy/leiningen">Leiningen</a> support, and if you use Clojure with any frequency, I&#8217;d recommend checking that out.</p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=351" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/02/gajure-now-on-clojars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Police Pursue and Capture a Barefoot Runner</title>
		<link>http://blog.ethanjfast.com/2010/02/police-pursue-and-capture-a-barefoot-runner/</link>
		<comments>http://blog.ethanjfast.com/2010/02/police-pursue-and-capture-a-barefoot-runner/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 03:46:04 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Barefoot Running]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[police]]></category>
		<category><![CDATA[running]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=321</guid>
		<description><![CDATA[
I went running today. In and of itself, this is far from unusual, and indeed, I go running most days. Something else happened, however, a deep and dark and disturbing something. Today on my run I was detained by the police, forced to enter an officer&#8217;s vehicle, and &#8220;escorted&#8221; back to my  apartment. I was [...]]]></description>
			<content:encoded><![CDATA[
<p>I went running today. In and of itself, this is far from unusual, and indeed, I go running most days. Something else happened, however, a deep and dark and disturbing something. Today on my run I was detained by the police, forced to enter an officer&#8217;s vehicle, and &#8220;escorted&#8221; back to my  apartment. I was assumed to be mentally unstable, on drugs, and perhaps both.</p>
<p>Now, what kind of runner must bear this hideous burden of proof? To be presumed crazy before sane, and intoxicated before clean? What kind of runner is dragged off his joyous release of energy on the streets and trails of his neighborhood? Well, apparently a barefoot one.</p>
<p>Granted, these policemen &#8211; these unwanted and would-be protectors of my person &#8212; they did have something going for them. It was 35 degrees outside. Snow lay piled in banks along the sidewalks and road-corners. Yet there I was, this strange young man in running shorts and a sweatshirt, leaping over and atop piles of snow, padding gracefully down ice-encrusted sidewalks. Without shoes. It must have been clear to them, and to the logic of their misplaced assumptions: surely, no sane person would be engaging in such pursuits.</p>
<p>Well, they were wrong. Their premises were wrong. This did not, of course, prevent them from taking control of the situation. Alas, it was a tragedy in which all parties were confused. At first, I thought the officers were being friendly in that ignorant way with which I am so intimately familiar. I&#8217;ve been offered rides by many strangers, and apparently the local assumption is that I&#8217;m some kind of poor lost kitten, in need of help on his journey home.</p>
<p>So as they pulled over and cracked the door of their police car, I smiled and waved them off. &#8220;No, I&#8217;m fine,&#8221; I said. &#8220;I&#8217;m <em>running!&#8221; </em>In retrospect, they did seem more determined then one&#8217;s average do-gooder, but to my peril, I did not notice this at the time.</p>
<p>&#8220;Wait,&#8221; they called.</p>
<p>&#8220;I&#8217;m fine,&#8221; I repeated. As I passed away and forward, they shouted once more at me to come back, and I miscalculated by ignoring this as well &#8212; by speeding up, in fact.</p>
<p>So it was that I entered the short &#8212; and as things would end up, final &#8212; stretch of my run. A bit of a race with a police car, as it were, although strictly speaking this was not really intended. Stupidly, I thought the officers would give up their offers of uninformed aid when they noticed my obvious competence (I can go fast, you see) and unambiguous obstinacy. But I, too, was operating under misassumptions. These officers were not playing in the mental zone of the good samaritan, but rather that more enticing arena of <em>catch and subdue the crazy person.</em></p>
<p>In the end there was no subduing. Upon a second rendezvous, the motives of the officers were quite apparent, and I quickly complied, although only against the risks and uncertainties of my alternatives. In the end, what I needed was someone to vouch for me, a duty that my roommate happily performed. And so it was that the exalted release which I normally gain from running transformed into a proverbial slap in the face, a gift from those friends of misunderstood culture.</p>
<p>But this was not all. I was provided with a card that I would do well to keep with me upon all my runs, such that I might &#8220;prove myself&#8221; to other officers. The compassion! Inexperienced as I am, I&#8217;ll offer this (half-serious) warning to cold weather barefoot runners: you are being hunted; travel in packs.</p>
<p><em> </em></p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=321" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/02/police-pursue-and-capture-a-barefoot-runner/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>On Initiative</title>
		<link>http://blog.ethanjfast.com/2010/02/on-initiative/</link>
		<comments>http://blog.ethanjfast.com/2010/02/on-initiative/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 15:59:45 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Writing]]></category>
		<category><![CDATA[initiative]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[success]]></category>

		<guid isPermaLink="false">http://blog.ethanjfast.com/?p=305</guid>
		<description><![CDATA[
This past week, I&#8217;ve been thinking quite a bit about success. Now, perhaps this is a somewhat pedantic exercise, but it seems that if I would like to be successful (and I assure you, this is a valid premise), then I ought to better understand the term &#8212; what it means, what it implies, and [...]]]></description>
			<content:encoded><![CDATA[
<p>This past week, I&#8217;ve been thinking quite a bit about success. Now, perhaps this is a somewhat pedantic exercise, but it seems that if I would like to be successful (and I assure you, this is a valid premise), then I ought to better understand the term &#8212; what it means, what it implies, and most importantly, how this meaning achieves instantiation.</p>
<p>Most people would agree, I think, that there are many ways to succeed, and a nearly infinite number of things upon which such success can be centered. But what does this mean? After all, a successful father is quite different from a successful businessmen, and yet &#8220;success&#8221; can be used, quite appropriately, to describe each. This is not a hard question; at first brush, the answer seems obvious. In each instance, a goal was set &#8212; meaningful fatherhood, or growing a business &#8211; and likewise, in each instance the particulars of a goal were achieved.</p>
<p>But is that all there is to success, the fulfillment of goals? It seems unlikely that an incarcerated man would consider the fulfilling of his imprisonment a successful endeavor. Clearly, there must be a subjective side to the term. To be successful at something, one must desire it. So success requires at least two things: a goal and a desire. Take either away, and you destroy its meaning. Consider the hypothetical beneficiary of vast and unexpected charity. She had no pans to acquire wealth, and so she is no more successful than our aforementioned prisoner, even if she counted money among her desires. Without a goal in place, its achievement means nothing.</p>
<p>Now, all this is quite obvious and boring; one might suggest that it&#8217;s just a quick and poor deconstruction of semantics. The real and practical question is whether all unique instances of success stem from any common source. Effectively, one might ask, among all the disparate successes of the world, do they have anything in common? Can the businessman and the father &#8212; at the most general of levels &#8212; share a common game plan? I would argue that they can, and that they do. Moreover, I think this common element is initiative.</p>
<p>Certainly, when starting a business, initiative plays an integral role. Every company in present existence required, at minimum, the initiative of creation, the actions of a prime mover who would set it up to succeed (or fail), as history will dictate. But more than this, there is a broader sense in which initiative is tied to the founding of companies. Businesses are started, and markets created, to meet the needs of a particular consumer base. Identifying that need, or alternatively, improving upon the realization of an existing need, by definition requires initiative. It necessitates a <em>seeing thorough</em> of reality, a questioning of what is, and the recognition of a world that might be.</p>
<p>Success in science, too, is bound up in initiative. Scientific research explores the undiscovered territory of human knowledge. It takes initiative to make that first step into the dark, to decide where to place one&#8217;s efforts, and to question and improve upon the current state of knowledge. Moreover, the grand revolutions of science are steeped in such character. I doubt it needs mentioning, but Einstein&#8217;s discovery of special relativity occurred while he was a patent clerk &#8212; that&#8217;s clearly initiative, if ever any has existed.</p>
<p>But what about the father, and those softer definitions of success? Here particularly, my argument can be seen to break down on some boundary cases. Take, for example, a rich and carefree fellow who has as his &#8220;fatherly&#8221; desire and goal: <em>my children shall not starve</em>. Well, even though by his own definition he is successful, it&#8217;s hard to see such a person as displaying initiative. But this, I think, is a special case. For most people, in most circumstances, the goals by which they characterize success are achieved by standards outside of their personal norm. And almost by definition, if a goal is difficult to achieve, then one might benefit from the application of initiative. After all, if it&#8217;s easy to acquire something without any initiative whatsoever, you probably have it already.</p>
<p>So, one might say I&#8217;m rather a fan of initiative &#8212; at least, as far as achieving success is concerned.  Yet strangely, most people that I talk to don&#8217;t hold the same opinion. I&#8217;ll ask them how they think most people succede, and the answers are usually <em>intelligence</em>, <em>dedication</em>, or perhaps, <em>luck</em>. All these things surely play a role in success, but, in my humble view, they are not the <em>prime move</em>r of successful endeavors &#8212; no, that role is played by initiative.</p>

 <img src="http://blog.ethanjfast.com/wp-content/plugins/feed-statistics.php?view=1&post_id=305" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.ethanjfast.com/2010/02/on-initiative/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
