<?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>Drinkable Chicken &#187; programming</title>
	<atom:link href="http://4.flowsnake.org/archives/tag/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://4.flowsnake.org</link>
	<description>A Pythoneer's adventures with Scheme, Clojure and a whole lot more. ^_^</description>
	<lastBuildDate>Sat, 10 Jul 2010 14:39:46 +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>eBay listings, part 1</title>
		<link>http://4.flowsnake.org/archives/821</link>
		<comments>http://4.flowsnake.org/archives/821#comments</comments>
		<pubDate>Fri, 23 Oct 2009 19:27:05 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[ebay]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=821</guid>
		<description><![CDATA[Well, I&#8217;ve started to sell some stuff on eBay&#8230; I will post the listings here, so you, my faithful readers, will get to see them first. :-) I am actually selling these items so I can pay Dreamhost for another year of hosting, so it&#8217;s for a good cause. (I hope&#8230;) Anyway, here are the [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve started to sell some stuff on eBay&#8230; I will post the listings here, so you, my faithful readers, will get to see them first. :-)</p>
<p>I am actually selling these items so I can pay Dreamhost for another year of hosting, so it&#8217;s for a good cause. (I hope&#8230;)</p>
<p>Anyway, here are the first listings:</p>
<ul>
<li>Lisp in Small Pieces:<br />
<a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=220499454202&amp;ssPageName=STRK:MESELX:IT#ht_500wt_939">eBay listing</a> <strong>*SOLD*</strong><br />
<a href="http://www.amazon.com/Lisp-Small-Pieces-Christian-Queinnec/dp/0521545668">Amazon listing</a> (sells for $79 used, $83 new)</li>
</ul>
<ul>
<li>Programming Python, 2nd edition:<br />
<a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=220499512485&amp;ssPageName=STRK:MESELX:IT"> eBay listing</a><br />
<a href="http://www.amazon.com/Programming-Python-Second-Mark-Lutz/dp/0596000855/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1256325785&amp;sr=1-1"> Amazon listing</a></li>
</ul>
<ul>
<li>Python Cookbook, first edition:<br />
<a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=220499516006&amp;ssPageName=STRK:MESELX:IT"> eBay listing</a><br />
<a href="http://www.amazon.com/Python-Cookbook-Alex-Martelli/dp/0596001673"> Amazon listing</a></li>
</ul>
<ul>
<li>Python and Tkinter Programming:<br />
<a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=220499519442&amp;ssPageName=STRK:MESELX:IT"> eBay listing</a><br />
<a href="http://www.amazon.com/Python-Tkinter-Programming-Grayson-Ph-D/dp/1884777813"> Amazon listing</a> ($188 new, $70 used)</li>
</ul>
<p>Programming Python, and the Cookbook, are a bit dated, of course&#8230; but that&#8217;s why they start out cheap! ;-)</p>
<p>The other two seem to be collectors items, more or less; my buy-it-now price is still lower than what you pay for the used version on Amazon, though.</p>
<p>More books coming up&#8230; mostly programming/computer science, and maybe some gaming stuff&#8230; if you are looking for something specific, and you suspect I might have it, drop me a note. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/821/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Subtext, revisited</title>
		<link>http://4.flowsnake.org/archives/327</link>
		<comments>http://4.flowsnake.org/archives/327#comments</comments>
		<pubDate>Fri, 26 Dec 2008 03:51:21 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[subtext]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=327</guid>
		<description><![CDATA[Almost four years ago I took a look at Subtext, an unusual programming &#8220;language&#8221;. Today I stumbled upon it again. Development has continued, and while I don&#8217;t see this appearing on worker bee&#8217;s desktops anytime soon, it&#8217;s definitely worth another look. As you can tell from the updated video, programming is done by creating and [...]]]></description>
			<content:encoded><![CDATA[<p>Almost four years ago I <a href="http://zephyrfalcon.org/weblog2/arch_e10_00720.html#e724">took a look</a> at <a href="http://subtextual.org/">Subtext</a>, an unusual programming &#8220;language&#8221;. Today I stumbled upon it again. Development has continued, and while I don&#8217;t see this appearing on worker bee&#8217;s desktops anytime soon, it&#8217;s definitely worth another look.</p>
<p>As you can tell from the updated <a href="http://subtextual.org/subtext2.html">video</a>, programming is done by creating and manipulating &#8220;schematic tables&#8221;&#8230; sort of a crossover between a flowchart and a spreadsheet. (Do watch that video&#8230; it&#8217;s hard to explain the essence of Subtext in just a few words. You have to *see* it.)</p>
<p>It moves away from the assumption that &#8220;a program == text&#8221;. Or, as the author puts it, &#8220;Much of the design of our programming language is an artifact of the linear nature of text.&#8221;</p>
<p>While the new approach is interesting and makes for a whole new way of writing programs, I&#8217;m not sure how well it would hold up when dealing with more complex programming problems. (The examples mentioned in the video are fairly simple&#8230; fibonacci and an algorithm to calculate damage in an RPG-like game.) Also, it seems to rely heavily on the mouse, while the general trend in programming editors and IDEs seems to be, to use the keyboard as much as possible.</p>
<p>Subtext is capable of doing some pretty nifty things&#8230; like pointing out gaps or contradictions in your logic. (Again, see the video.)</p>
<p>I&#8217;m also curious how easy it is to define custom abstractions with Subtext, as is common in more expressive programming languages.</p>
<p>I haven&#8217;t made up my mind yet if this way of programming is easier or harder than the &#8220;conventional&#8221; way&#8230; The difference in layout (a table with different columns rather than a class hierarchy, for instance) makes some things easier to see and grasp. But again, I don&#8217;t know how well this scales to more complex algorithms. In any case, it&#8217;s different.</p>
<p>Now, when will this be available for download? I want to play with it. :-)</p>
<p><a class="noborder" href="http://4.flowsnake.org/wp-content/uploads/2008/12/subtext.png"><img class="alignnone size-medium wp-image-341" title="subtext" src="http://4.flowsnake.org/wp-content/uploads/2008/12/subtext-300x226.png" alt="" width="300" height="226" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/327/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Math vs programming (part III)</title>
		<link>http://4.flowsnake.org/archives/111</link>
		<comments>http://4.flowsnake.org/archives/111#comments</comments>
		<pubDate>Tue, 03 Jun 2008 16:12:32 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=111</guid>
		<description><![CDATA[In which I react to some of the comments on my &#8220;Who needs code samples?&#8221; post. Rather than quoting people, I will reply to some of the general ideas outlined in the comments. After this post, it&#8217;s case closed; this whole discussion has taken up way too much energy and time already. Sample code contains [...]]]></description>
			<content:encoded><![CDATA[<p>In which I react to some of the comments on my <a href="http://4.flowsnake.org/archives/107">&#8220;Who needs code samples?&#8221;</a> post.</p>
<p>Rather than quoting people, I will reply to some of the general ideas outlined in the comments. After this post, it&#8217;s case closed; this whole discussion has taken up way too much energy and time already.</p>
<p><em>Sample code contains implementation details, while formulas deal with the abstract concept (rather than a specific implementation)</em>.<br />
No disagreement there. It would have been better if the book had given both formulas and example code. In an ideal situation, it would also have tried to abstract away some concepts (data storage, etc), or at least separate them from the actual algorithm. OTOH, this might not always have been possible, as performance is an issue as well.</p>
<p><em>Suggestions to look at <a href="http://mitpress.mit.edu/SICM/">SICM</a>:</em><br />
I have looked at this book before, but gave up on it before long. One of the reasons might have been the abudance of formulas; another is that I am not particularly interested in physics.</p>
<p><em>Competent programmers know how to read these formulas. Computer science is programming. Reading math formulas is a useful skill for programmers. You need a degree in CS to be a good programmer. (etc)</em><br />
Here I refer to my <a href="http://4.flowsnake.org/archives/108">previous</a> <a href="http://4.flowsnake.org/archives/109">posts</a> about the relevance of math in everyday programming tasks.</p>
<p><em>The formulas described in the original article are not particularly difficult.</em><br />
Probably, but they still require context to read them. In short: <em>||v1-v2||</em> requires that you know what <em>v1</em> and <em>v2</em> are, what <em>||</em> stands for, what subtraction means in this context. By contrast, <em>vector1 &#8211; vector2</em> is a bit longer, but much clearer. My point is that I neither need nor want to know the context to read these particular formulas, because they have no relevance to my work.</p>
<p><em>Strong anti-math sentiment:</em><br />
I believe this is related to the fact that some people love to shoehorn programming into the mathematics branch. It just doesn&#8217;t belong there; the math needed and taught in CS courses has little relevance to the real world (hence the vast numbers of CS graduates that are unprepared for a real programming job). This causes resentment.</p>
<p>In my case, there are other reasons why I object very strongly to the notion of &#8220;math is a requirement to be a programmer&#8221;. In fact, when I was ~16, I wanted to become a programmer, so studying computer science seemed a logical step; then was told that you needed to be good at math. This struck me as odd, since I had been tinkering with programming and it required very little math, but hey, people must know what they&#8217;re talking about, right? So I went on to do something else, keeping on programming as a hobby. I sold some of my homebrew programs. No math required. Eventually I landed a job as a programmer. Still no math required. That was 10 years ago; in the meantime I&#8217;ve written all kinds of software, very few of which need any advanced math.</p>
<p>This notion (&#8220;you need to be good at math to be a programmer&#8221;) almost stopped me from realizing my dream. I figured it must have stopped others as well, and still does, so I will do everything I can to fight this <strong>myth</strong>.</p>
<p><em>Formulas are a great way to express abstract concepts; their notation is really just another &#8220;language&#8221; one needs to learn.</em><br />
This is true, but I&#8217;m unsure if learning this &#8220;language&#8221; will benefit me much (other than saving me from the scorn of Reddit readers ;-). Aside from that, the notation has problems&#8230; but that&#8217;s a different story.</p>
<p><em>Code examples in Haskell:</em><br />
Haskell is interesting, but it does strike me as math notation disguised as a programming language. It suffers from some of the same problems: conciseness to the point of being unreadable, and little usefulness in the real world. That said, maybe someday I will make a serious attempt at learning it properly.</p>
<p>:::</p>
<p>All this discussion has distracted from the fact that I don&#8217;t hate math, and am not particularly bad at it either. I just would prefer code samples in many cases. That&#8217;s all. I&#8217;m now going back to my coding. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/111/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Math vs programming (part II)</title>
		<link>http://4.flowsnake.org/archives/109</link>
		<comments>http://4.flowsnake.org/archives/109#comments</comments>
		<pubDate>Tue, 03 Jun 2008 14:14:00 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=109</guid>
		<description><![CDATA[Looking at the comments on my previous post and the subsequent Reddit thread, it seems that many implicit assumptions are made, some of them dubious at best. Without going into all of them, I will say this: It&#8217;s possible to know areas of math relevant to computer science, and to dislike mathematical formulas at the [...]]]></description>
			<content:encoded><![CDATA[<p>Looking at the comments on my <a href="http://4.flowsnake.org/archives/107">previous post</a> and the subsequent <a href="http://reddit.com/r/programming/info/6lqvm/comments/">Reddit thread</a>, it seems that many implicit assumptions are made, some of them dubious at best. Without going into all of them, I will say this:</p>
<ul>
<li>It&#8217;s possible to know areas of math relevant to computer science, and to dislike mathematical formulas at the same time. It&#8217;s quite reasonable to be unfamiliar with areas that you don&#8217;t encounter in everyday programming.</li>
<li>Computer science may be mostly math, but computer science != programming. It plays an important role, but in most programming jobs, most CS concepts are rarely touched upon.</li>
</ul>
<p>There&#8217;s also a more dangerous set of assumptions shining through the whole discussion. It comes down to this: &#8220;Programming is computer science. Computer science is math. The more advanced math you know, the better a programmer you are. If you cannot do something rudimentary like reading a mathematical formula, then you don&#8217;t know math, and therefore you cannot be a competent programmer.&#8221;</p>
<p>If you want to believe that (or a variant thereof), be my guest, but it&#8217;s simply not true. Unless you redefine &#8220;programming&#8221; to mean &#8220;100% computer science&#8221;, rather than all that messy stuff that people do in the real world. You know, with GUIs, web apps, databases, SQL, dynamic languages, design, unit testing, refactoring, &#8230;? Oh wait, you probably *don&#8217;t* know. My bad. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/109/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Math vs programming (part I)</title>
		<link>http://4.flowsnake.org/archives/108</link>
		<comments>http://4.flowsnake.org/archives/108#comments</comments>
		<pubDate>Tue, 03 Jun 2008 13:12:50 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=108</guid>
		<description><![CDATA[Wow, my previous post sure stirred up some controversy (by my blog&#8217;s standards at least ;-). As I write this, the comments are still pouring in. (Also see the Reddit thread, which is probably where all these new commenters come from.) But really, what I was trying to say is quite simple: I am a [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, my <a href="http://4.flowsnake.org/archives/107">previous post</a> sure stirred up some controversy (by my blog&#8217;s standards at least ;-). As I write this, the comments are still pouring in. (Also see the <a href="http://reddit.com/r/programming/info/6lqvm/comments/">Reddit</a> thread, which is probably where all these new commenters come from.)</p>
<p>But really, what I was trying to say is quite simple:</p>
<ul>
<li>I am a programmer.</li>
<li>I am *not* a mathematician (obviously :-).</li>
<li>If given a choice, I would much rather see the code sample (which I can understand) than the formula, although in an ideal situation you&#8217;d have both.</li>
</ul>
<p>For some reason, some people seem to take &#8220;I don&#8217;t like to read mathematical formulas&#8221; to mean that I know next to nothing about math. This assumption is not necessarily true. Nowhere did I mention anything about my background, other than the fact that I am not a mathematician. (For the record, I studied economics in college.)</p>
<p>Anyway, whatever my background, seeing convoluted (and even not-so-convoluted) mathematical formulas tends to intimidate me (much like it intimidates *everybody else* who doesn&#8217;t have a strong grasp of this stuff). Not because I am inherently unable to, but because I lack the knowledge about what most of these symbols and constructs mean, in the given context. As I am a programmer rather than a mathematician, I prefer code samples.</p>
<p>Some people are apparently offended by this. Take, for example, this <a href="http://gergo.erdi.hu/blog/2008-06-02-incompetent_fuckwits/">eloquent rebuttal</a>. &#8220;How can you forget stuff like the meaning of Σ or Π as accumulators?&#8221; Gee, let me see&#8230; maybe because I have <strong>never needed it</strong> in my job as a programmer? You learn it. You don&#8217;t use it. You forget about it. (The formula, that is, not the concept.)</p>
<p>Let&#8217;s take the vector example in the <a href="http://blog.lphuberdeau.com/wordpress/2008/06/01/who-reads-code-samples/">original article</a>. Some seem to think it&#8217;s ridiculous that I would prefer the code over the formula. But tell me&#8230; why in the world should I know vector notation? Or why would I want to, in the first place? I&#8217;ve been programming since 1985, and I have *never* needed vectors. I guess I haven&#8217;t been doing any real work!</p>
<p>For some reason I never needed differential equations either when I was trying to debug a GUI app or write an SQL query. And all this time I thought I was an actual programmer! Silly me!</p>
<p>Now, I am not trying to downplay the importance of computer science, or the importance of math in computer science. There are certain areas of programming that are strongly math-related, and wouldn&#8217;t exist without it. I also believe that having a decent grasp of math makes one a better programmer. <sup>1</sup>) It&#8217;s important&#8230; but not to the point where you have to be a math major in order to be a competent programmer!</p>
<p>Many (or even most) areas of math are completely irrelevant to my day-to-day work. While this is not true for everyone, it is true for the vast majority of programmers. So I don&#8217;t like to read mathematical formulas. How does that affect my skills in designing a GUI, writing an object system, debugging a database, optimizing a query, writing unit tests with good coverage, refactoring a code base, &#8230;?</p>
<p>Anyway, in my next post I&#8217;ll react to some of the more reasonable replies to my post. :-)</p>
<p><sup>1</sup>) And so does a decent grasp of philosophy, sociology, linguistics, art, organization skills, emotional intelligence, &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/108/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Who reads code samples?</title>
		<link>http://4.flowsnake.org/archives/107</link>
		<comments>http://4.flowsnake.org/archives/107#comments</comments>
		<pubDate>Mon, 02 Jun 2008 14:42:53 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=107</guid>
		<description><![CDATA[Who reads code samples? (via Reddit) Um, me? Sorry, but I take code samples over mathematical formulas any day. The first example cited in the aforementioned post pretty much confirms this. The Python example is something I can actually read and understand. I can follow it step by step, understanding what it does at each [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lphuberdeau.com/wordpress/2008/06/01/who-reads-code-samples/">Who reads code samples?</a> (via Reddit)</p>
<p>Um, me?</p>
<p>Sorry, but I take code samples over mathematical formulas any day. The first example cited in the aforementioned post pretty much confirms this.</p>
<p>The Python example is something I can actually read and understand. I can follow it step by step, understanding what it does at each point. (And if I don&#8217;t, I can copy it to a file, stick <em>print</em> statements in it, and examine what it does exactly.)</p>
<p>The formula, on the other hand, is gobbledygook to me. I am a programmer, not a mathematician. To me, the formula is just a confusing mix of (Greek) letters and other symbols. It is essentially unreadable without knowing the context, i.e. the meaning of all those symbols and how they fit together.</p>
<p>(You could argue that the same is true for the Python code &#8212; yes, there is context there too, of course, but the difference is that I am expected to know it, as I am a <strong>programmer</strong> reading a <a href="http://www.amazon.com/Programming-Collective-Intelligence-Building-Applications/dp/0596529325">book</a> meant for <strong>programmers</strong>. It&#8217;s not a math book meant for mathematicians or students of math.)</p>
<p>The second example is even worse; the code is longer, but so is the formula, to the point where it&#8217;s not only completely unreadable to me, but also sufficiently overwhelming that I won&#8217;t even try to figure it out.</p>
<p>It&#8217;s cool if you can easily read the formulas, of course. More power to ya. But limiting the examples to formulas makes the text inaccessible to those who can&#8217;t read them, or have trouble doing so. Also, you&#8217;d still have to translate them to working code (because, again, this is a book for programmers :-).</p>
<p>(I have this book too, by the way&#8230; I kinda like it so far.)</p>
<p><strong>Update:</strong> Come to think of it, I would much rather have learned math (what little I know of it, that is :-) illustrated with programming examples, rather than using formulas that are so dense that my eyes gloss over the moment I see them. Math would probably have been a lot more understandable and clear back then. </p>
<p>Which makes me wonder, *are* there books that teach math concepts using programming examples? I&#8217;m not talking about books like SICP that assume that you already have a firm grasp of mathematical knowledge.</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/107/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Freedom from choice</title>
		<link>http://4.flowsnake.org/archives/97</link>
		<comments>http://4.flowsnake.org/archives/97#comments</comments>
		<pubDate>Sat, 12 Apr 2008 12:50:26 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=97</guid>
		<description><![CDATA[This was going to be a long post, but I&#8217;ll just condense it to this: Back in 1991, I knew which programming language to use, and how to distribute programs so that they would Just Work for other PC users. These days, with three major operating systems to develop for, and dozens of programming languages [...]]]></description>
			<content:encoded><![CDATA[<p>This was going to be a long post, but I&#8217;ll just condense it to this:</p>
<p>Back in 1991, I knew which programming language to use, and how to distribute programs so that they would Just Work for other PC users. These days, with three major operating systems to develop for, and dozens of programming languages to develop in, I&#8217;m never sure anymore.</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/97/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
