<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments for Sambal</title>
	<atom:link href="http://www.sambal.org/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sambal.org</link>
	<description>Trying to avoid labels</description>
	<pubDate>Thu, 18 Mar 2010 19:48:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on C++ Runtime Types: Find All Classes Derived From a Base Class (3) by J</title>
		<link>http://www.sambal.org/2009/10/c-runtime-types-find-all-classes-derived-from-a-base-class-3/comment-page-1/#comment-519</link>
		<dc:creator>J</dc:creator>
		<pubDate>Thu, 04 Mar 2010 02:22:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=811#comment-519</guid>
		<description>Thanks for posting these solutions!  I was tackling the same problem in a program and this was just what I was looking for.</description>
		<content:encoded><![CDATA[<p>Thanks for posting these solutions!  I was tackling the same problem in a program and this was just what I was looking for.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why I hate python by jojje</title>
		<link>http://www.sambal.org/2008/06/why-i-hate-python/comment-page-1/#comment-502</link>
		<dc:creator>jojje</dc:creator>
		<pubDate>Wed, 20 Jan 2010 03:18:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=681#comment-502</guid>
		<description>Ok, the article is 1 1/2 years old by now, but as Pyta said, I also googled, but for Why I Hate Python to find out what peeves others had and hopefully how to work around them.

I first tried Python now close to 10 years ago but didn't like it, coming from a C and Scheme background.
I've tried it again every 3 years to see if my peeves had been addressed but still no-show.

Most recently I've had to suffer Jython 2.0 in a project and that made me REALLY hate python. Writing in cPython 2.6 isn't much funnier, but at least scoping isn't completely broken (referencing outer variables from inner functions) as they used to be.

My main issues are:

9) No standardized packaging system.
easy_install? uninstalling eggs? "go into some dir and remove some files or folders and do some fixups" / "I've never found a reason for uninstalling eggs" and idiotic python-cult defenses like that.

8) No natural testing framework.
I use rspec for testing both ruby and java code and it works great. However due to language limitations (closure limits) I can't see Python being able to support something similar unfortunately. 

7) def (fragging_redundant_self):\n self...  \n self .. \n self ... 
But only sometimes... Not needed for inner functions ... but let's annoy you for fist level object functions (90% of all code you write), since we don't think we've caused you enough grief with the tab infinitum puzzle and the underscore contest.

6) No support for anonymous context aware functions (closures). Lambda, hah!

5) Special rules for built-ins. If the language is OO, why can't I extend or re-define builtins such as {} (dict)? Ok, Ruby is extremely good in this regard and close to perfect for DSLs (sorry about repeating the cliche touted by the ruby fanboys, but it's mostly true). Javascript is pretty good, not for DSLs but that you know what to expect from the runtime (everything except numbers is a dictionary). You can treat anything as an object and extend even what is typically regarded as native types.

4) Poor documentation !!! Here I think Java and C# shines, Perl is OK, ruby is bad to so-so and Python absolutely stinks in comparison.

3) Giving meaning to indentation. What an idiotic idea in the modern age of personal computing. The only worse language I've used in this regard was IBM RPG, but then that language had an excuse of having been created decades before Python when higher level languages started taking off. Didn't Guido ever write a make-file before he created Python? If so, it seems he learned nothing from that lesson.

2) The Python community. I don't think you can find a more elitist unhelpful bunch of ass-wipes on the internet (in general.. article author and Carl T. excluded). The attitude hasn't changed in 10 years so judging by that trend, I don't hold by breath for the future.

1) Getting Python shoved down my throat by commercial vendors.

When I code Python it feels like 40% of all characters I type are just waste of space, obscuring intent or forcing me to repeat myself without improving readability one iota. Yes, I include indentation in that fraction.
Every time I write some python code or read some piece of code on the net, I get a tinge of bad taste. The code I've seen is not more readable than the same algorithms implemented in comparable languages and neither do they communicate intent very clearly.
Are the methods private or not? will I break something or risk my code breaking after an update if I make use of the underscore variants? __is_it__ just the designers idea of moving seldom used functions to the __back__?

To give future readers something to ponder..
Let's say I want to print out the frequency of words from a column in a space delimited table. In Python I could use this routine:

hash = {}
[hash.update({a:(hash.get(a) or 0)+1}) for a in [re.split("\s+",line)[1] for line in open("file.txt")] ]
print "\n".join([ ": ".join([a,str(n)]) for a,n in sorted(hash.items(),lambda i1,i2: cmp(i2[1],i1[1])) ])

And the equivalent in Ruby:
puts open("file.txt").map{&#124;line&#124; line.split(/\s+/)[1] }.reduce({}){&#124;hash,a&#124; hash[a] &#124;&#124;= 0; hash[a]+=1; hash}.sort{&#124;i1,i2&#124; i2[1]  i1[1]}.map{&#124;a,n&#124; [a,n].join ": "}

This example avoided the abundant tabs which typically plague python code.

Point is, which is more readable? Ok, neither are good examples of readability, but they show some aspects about the language syntax philosophies. 
Since ruby allows for easy chaining a'la jQuery it typically leads to less nesting and keeping the problem focused. Each step is clearly delimited, here with curly braces. An editor will help with block highlighting since virtually all editors support brace matching and many do folding as well,

The python example however shows limitations when it comes to chaining which forces me to use a lot more temporary objects (name space and stack clutter) and to break expressions whether *I* want to or not.

Finally, what I don't understand is why Python has gotten so much traction in the commercial market. Companies selling scriptable tools and middleware typically select Python as their scripting language for their products and I can't for the life of me understand why. There is nothing simple or readable about Python that can not be expressed better in Javascript or Ruby for example..

That's my take on why I think Python is as fun as having a live one around the neck.</description>
		<content:encoded><![CDATA[<p>Ok, the article is 1 1/2 years old by now, but as Pyta said, I also googled, but for Why I Hate Python to find out what peeves others had and hopefully how to work around them.</p>
<p>I first tried Python now close to 10 years ago but didn&#8217;t like it, coming from a C and Scheme background.<br />
I&#8217;ve tried it again every 3 years to see if my peeves had been addressed but still no-show.</p>
<p>Most recently I&#8217;ve had to suffer Jython 2.0 in a project and that made me REALLY hate python. Writing in cPython 2.6 isn&#8217;t much funnier, but at least scoping isn&#8217;t completely broken (referencing outer variables from inner functions) as they used to be.</p>
<p>My main issues are:</p>
<p>9) No standardized packaging system.<br />
easy_install? uninstalling eggs? &#8220;go into some dir and remove some files or folders and do some fixups&#8221; / &#8220;I&#8217;ve never found a reason for uninstalling eggs&#8221; and idiotic python-cult defenses like that.</p>
<p> <img src='http://www.sambal.org/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> No natural testing framework.<br />
I use rspec for testing both ruby and java code and it works great. However due to language limitations (closure limits) I can&#8217;t see Python being able to support something similar unfortunately. </p>
<p>7) def (fragging_redundant_self):\n self&#8230;  \n self .. \n self &#8230;<br />
But only sometimes&#8230; Not needed for inner functions &#8230; but let&#8217;s annoy you for fist level object functions (90% of all code you write), since we don&#8217;t think we&#8217;ve caused you enough grief with the tab infinitum puzzle and the underscore contest.</p>
<p>6) No support for anonymous context aware functions (closures). Lambda, hah!</p>
<p>5) Special rules for built-ins. If the language is OO, why can&#8217;t I extend or re-define builtins such as {} (dict)? Ok, Ruby is extremely good in this regard and close to perfect for DSLs (sorry about repeating the cliche touted by the ruby fanboys, but it&#8217;s mostly true). Javascript is pretty good, not for DSLs but that you know what to expect from the runtime (everything except numbers is a dictionary). You can treat anything as an object and extend even what is typically regarded as native types.</p>
<p>4) Poor documentation !!! Here I think Java and C# shines, Perl is OK, ruby is bad to so-so and Python absolutely stinks in comparison.</p>
<p>3) Giving meaning to indentation. What an idiotic idea in the modern age of personal computing. The only worse language I&#8217;ve used in this regard was IBM RPG, but then that language had an excuse of having been created decades before Python when higher level languages started taking off. Didn&#8217;t Guido ever write a make-file before he created Python? If so, it seems he learned nothing from that lesson.</p>
<p>2) The Python community. I don&#8217;t think you can find a more elitist unhelpful bunch of ass-wipes on the internet (in general.. article author and Carl T. excluded). The attitude hasn&#8217;t changed in 10 years so judging by that trend, I don&#8217;t hold by breath for the future.</p>
<p>1) Getting Python shoved down my throat by commercial vendors.</p>
<p>When I code Python it feels like 40% of all characters I type are just waste of space, obscuring intent or forcing me to repeat myself without improving readability one iota. Yes, I include indentation in that fraction.<br />
Every time I write some python code or read some piece of code on the net, I get a tinge of bad taste. The code I&#8217;ve seen is not more readable than the same algorithms implemented in comparable languages and neither do they communicate intent very clearly.<br />
Are the methods private or not? will I break something or risk my code breaking after an update if I make use of the underscore variants? __is_it__ just the designers idea of moving seldom used functions to the __back__?</p>
<p>To give future readers something to ponder..<br />
Let&#8217;s say I want to print out the frequency of words from a column in a space delimited table. In Python I could use this routine:</p>
<p>hash = {}<br />
[hash.update({a:(hash.get(a) or 0)+1}) for a in [re.split("\s+",line)[1] for line in open(&#8221;file.txt&#8221;)] ]<br />
print &#8220;\n&#8221;.join([ ": ".join([a,str(n)]) for a,n in sorted(hash.items(),lambda i1,i2: cmp(i2[1],i1[1])) ])</p>
<p>And the equivalent in Ruby:<br />
puts open(&#8221;file.txt&#8221;).map{|line| line.split(/\s+/)[1] }.reduce({}){|hash,a| hash[a] ||= 0; hash[a]+=1; hash}.sort{|i1,i2| i2[1]  i1[1]}.map{|a,n| [a,n].join &#8220;: &#8220;}</p>
<p>This example avoided the abundant tabs which typically plague python code.</p>
<p>Point is, which is more readable? Ok, neither are good examples of readability, but they show some aspects about the language syntax philosophies.<br />
Since ruby allows for easy chaining a&#8217;la jQuery it typically leads to less nesting and keeping the problem focused. Each step is clearly delimited, here with curly braces. An editor will help with block highlighting since virtually all editors support brace matching and many do folding as well,</p>
<p>The python example however shows limitations when it comes to chaining which forces me to use a lot more temporary objects (name space and stack clutter) and to break expressions whether *I* want to or not.</p>
<p>Finally, what I don&#8217;t understand is why Python has gotten so much traction in the commercial market. Companies selling scriptable tools and middleware typically select Python as their scripting language for their products and I can&#8217;t for the life of me understand why. There is nothing simple or readable about Python that can not be expressed better in Javascript or Ruby for example..</p>
<p>That&#8217;s my take on why I think Python is as fun as having a live one around the neck.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Visual Studio 6.0 list::sort erases some elements when more than 32767 are present by Sam</title>
		<link>http://www.sambal.org/2008/06/visual-studio-60-listsort-erases-some-elements-when-more-than-32767-are-present/comment-page-1/#comment-501</link>
		<dc:creator>Sam</dc:creator>
		<pubDate>Tue, 19 Jan 2010 15:07:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=692#comment-501</guid>
		<description>Al, 

 There is a fix at this MSDN page, provided you are able to change your STL headers and recompile:

http://support.microsoft.com/kb/240014/en-us

I'm happy to see that I'm not the last person still using VS6.0!</description>
		<content:encoded><![CDATA[<p>Al, </p>
<p> There is a fix at this MSDN page, provided you are able to change your STL headers and recompile:</p>
<p><a href="http://support.microsoft.com/kb/240014/en-us" rel="nofollow">http://support.microsoft.com/kb/240014/en-us</a></p>
<p>I&#8217;m happy to see that I&#8217;m not the last person still using VS6.0!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Visual Studio 6.0 list::sort erases some elements when more than 32767 are present by Al Crowley</title>
		<link>http://www.sambal.org/2008/06/visual-studio-60-listsort-erases-some-elements-when-more-than-32767-are-present/comment-page-1/#comment-500</link>
		<dc:creator>Al Crowley</dc:creator>
		<pubDate>Tue, 19 Jan 2010 13:16:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=692#comment-500</guid>
		<description>I found this same problem while debugging my application.  I did a quick google search to see if it was documented and if there was a work around other than not using list::sort for big lists.

Still haven't found a work around, but at least I know that someone else gets a problem with it too.</description>
		<content:encoded><![CDATA[<p>I found this same problem while debugging my application.  I did a quick google search to see if it was documented and if there was a work around other than not using list::sort for big lists.</p>
<p>Still haven&#8217;t found a work around, but at least I know that someone else gets a problem with it too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C++ Runtime Types: Find All Classes Derived From a Base Class (2) by C++ Runtime Types: Find All Classes Derived From a Base Class (3) &#171; Sambal</title>
		<link>http://www.sambal.org/2009/10/c-runtime-types-find-all-classes-derived-from-a-base-class-2/comment-page-1/#comment-426</link>
		<dc:creator>C++ Runtime Types: Find All Classes Derived From a Base Class (3) &#171; Sambal</dc:creator>
		<pubDate>Mon, 19 Oct 2009 17:05:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=809#comment-426</guid>
		<description>[...] classes of a base class: part 1 is here, discussing the motivation and frame of the problem.  Part 2 is here, discussing one approach that works but not for [...]</description>
		<content:encoded><![CDATA[<p>[...] classes of a base class: part 1 is here, discussing the motivation and frame of the problem.  Part 2 is here, discussing one approach that works but not for [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C++ Runtime Types: Find All Classes Derived From a Base Class (1) by C++ Runtime Types: Find All Classes Derived From a Base Class (3) &#171; Sambal</title>
		<link>http://www.sambal.org/2009/10/c-runtime-types-find-all-classes-derived-from-a-base-class-1/comment-page-1/#comment-425</link>
		<dc:creator>C++ Runtime Types: Find All Classes Derived From a Base Class (3) &#171; Sambal</dc:creator>
		<pubDate>Mon, 19 Oct 2009 17:05:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=805#comment-425</guid>
		<description>[...] on a way to find all the derived classes of a base class: part 1 is here, discussing the motivation and frame of the problem.  Part 2 is here, discussing one approach that [...]</description>
		<content:encoded><![CDATA[<p>[...] on a way to find all the derived classes of a base class: part 1 is here, discussing the motivation and frame of the problem.  Part 2 is here, discussing one approach that [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C++ Runtime Types: Find All Classes Derived From a Base Class (1) by C++ Runtime Types: Find All Classes Derived From a Base Class (2) &#171; Sambal</title>
		<link>http://www.sambal.org/2009/10/c-runtime-types-find-all-classes-derived-from-a-base-class-1/comment-page-1/#comment-421</link>
		<dc:creator>C++ Runtime Types: Find All Classes Derived From a Base Class (2) &#171; Sambal</dc:creator>
		<pubDate>Sun, 18 Oct 2009 16:31:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=805#comment-421</guid>
		<description>[...] on a way to find all the derived classes of a base class: part 1 is here, discussing the motivation and frame of the [...]</description>
		<content:encoded><![CDATA[<p>[...] on a way to find all the derived classes of a base class: part 1 is here, discussing the motivation and frame of the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Idiomatic Ruby by C++ Runtime Types: Find All Classes Derived From a Base Class (1) &#171; Sambal</title>
		<link>http://www.sambal.org/2008/06/idiomatic-ruby/comment-page-1/#comment-419</link>
		<dc:creator>C++ Runtime Types: Find All Classes Derived From a Base Class (1) &#171; Sambal</dc:creator>
		<pubDate>Sat, 17 Oct 2009 16:28:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=682#comment-419</guid>
		<description>[...] maybe I could do what ruby does, enumerate all the classes in the type system and see if they can be cast down to CError.  I could [...]</description>
		<content:encoded><![CDATA[<p>[...] maybe I could do what ruby does, enumerate all the classes in the type system and see if they can be cast down to CError.  I could [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mainstreaming Polyamory by Anita Wagner</title>
		<link>http://www.sambal.org/2009/10/mainstreaming-polyamory/comment-page-1/#comment-418</link>
		<dc:creator>Anita Wagner</dc:creator>
		<pubDate>Sat, 17 Oct 2009 13:11:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=792#comment-418</guid>
		<description>Newt, clearly in your grandfather's case there's a difference.  Polyamorists generally subscribe to a code of behavior that makes the consent of all involved mandatory.   

As to control, I don't think anyone says that poly people who argue that it's the way they are wired are also saying they can't control their actions.  It's not about control but rather about being free to live a life that is authentic to who they are, and not being forced via condemnation to deny their very nature when no one is being hurt.  

In that respect we have a lot in common with the queer community.  Both they and we (and some of us are both) can say no to our desires, and, in fact, we do, sometimes often, in situations where it would not be appropriate to act due to lack of consent.  But where consent exists, we have as much right to be left in peace and to be fulfilled in our love lives as anyone else.  

Sambal, amongst poly leadership identity politics is quite controversial.  I object to language that says that polyamory is a choice without also acknowledging that for some it is much more than that.  Some would like to fight discrimination against poly people by arguing that the choice is a valid one.  Since I think there's more to the story, I also believe it's unfair to fail to also recognize publicly that there are those for whom it's not just a choice, but indeed, an identity.</description>
		<content:encoded><![CDATA[<p>Newt, clearly in your grandfather&#8217;s case there&#8217;s a difference.  Polyamorists generally subscribe to a code of behavior that makes the consent of all involved mandatory.   </p>
<p>As to control, I don&#8217;t think anyone says that poly people who argue that it&#8217;s the way they are wired are also saying they can&#8217;t control their actions.  It&#8217;s not about control but rather about being free to live a life that is authentic to who they are, and not being forced via condemnation to deny their very nature when no one is being hurt.  </p>
<p>In that respect we have a lot in common with the queer community.  Both they and we (and some of us are both) can say no to our desires, and, in fact, we do, sometimes often, in situations where it would not be appropriate to act due to lack of consent.  But where consent exists, we have as much right to be left in peace and to be fulfilled in our love lives as anyone else.  </p>
<p>Sambal, amongst poly leadership identity politics is quite controversial.  I object to language that says that polyamory is a choice without also acknowledging that for some it is much more than that.  Some would like to fight discrimination against poly people by arguing that the choice is a valid one.  Since I think there&#8217;s more to the story, I also believe it&#8217;s unfair to fail to also recognize publicly that there are those for whom it&#8217;s not just a choice, but indeed, an identity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mainstreaming Polyamory by Newt Sherwin</title>
		<link>http://www.sambal.org/2009/10/mainstreaming-polyamory/comment-page-1/#comment-413</link>
		<dc:creator>Newt Sherwin</dc:creator>
		<pubDate>Mon, 12 Oct 2009 20:24:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.sambal.org/?p=792#comment-413</guid>
		<description>Oh, probably.  In fact, a college friend once used exactly that argument when talking to Chris and I about why he doubted monogamy would work for him.  OTOH, my grandfather had good biological reasons for his tendency towards beating up my grandmother, and we still believe that he was responsible for making himself not do so.  (We would have recommended a different course of preventative action in light of those biological differences -- appropriate meds for bipolar disorder would have gone a long way -- but the moral responsibility to persue treatment, or live separately, or &lt;i&gt;something&lt;/i&gt;, was there regardless.  And given that he managed to never do it publicly, I don't think you can argue that he had &lt;i&gt;no&lt;/i&gt; control.)  Biological differences can affect appropriate courses of action, can affect the understanding and forgiveness and grace we extend to our fellow human beings when they fall short of the ideal, but they don't have to affect our definition of the ideal or how ardently we persue it.

Which is not to say that there aren't vast numbers of people who would completely buy into this argument.  There likely are.  I'd say it's working pretty well for the homosexuals.

Newt</description>
		<content:encoded><![CDATA[<p>Oh, probably.  In fact, a college friend once used exactly that argument when talking to Chris and I about why he doubted monogamy would work for him.  OTOH, my grandfather had good biological reasons for his tendency towards beating up my grandmother, and we still believe that he was responsible for making himself not do so.  (We would have recommended a different course of preventative action in light of those biological differences &#8212; appropriate meds for bipolar disorder would have gone a long way &#8212; but the moral responsibility to persue treatment, or live separately, or <i>something</i>, was there regardless.  And given that he managed to never do it publicly, I don&#8217;t think you can argue that he had <i>no</i> control.)  Biological differences can affect appropriate courses of action, can affect the understanding and forgiveness and grace we extend to our fellow human beings when they fall short of the ideal, but they don&#8217;t have to affect our definition of the ideal or how ardently we persue it.</p>
<p>Which is not to say that there aren&#8217;t vast numbers of people who would completely buy into this argument.  There likely are.  I&#8217;d say it&#8217;s working pretty well for the homosexuals.</p>
<p>Newt</p>
]]></content:encoded>
	</item>
</channel>
</rss>
