<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Twisted</title>
	<!--<link rel="self" type="text/atom" href=""/>-->
	<link rel="alternate" type="text/html" href="http://planet.twistedmatrix.com/"/>
	<id></id>
	<updated>2010-09-02T17:11:37+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title>Itamar Shtull-Trauring: Really?</title>
		<link rel="alternate" type="text/html" href="http://sikritinfo.blogspot.com/2010/09/really.html"/>
		<id>tag:blogger.com,1999:blog-5374469488279884588.post-8446141131222492226</id>
		<updated>2010-09-02T14:05:13+00:00</updated>
		<content type="html">Top 3 &lt;a href=&quot;http://www.amazon.com/gp/bestsellers/books/ref=pd_dp_ts_b_1&quot;&gt;most popular books on Amazon&lt;/a&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Mockingjay, some sort of popular young adult book&lt;/li&gt;&lt;li&gt;Freedom, by  Jonathan Franzen, great American novelist du jour&lt;/li&gt;&lt;li&gt;Publication Manual of the American Psychological Association, Sixth Edition&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5374469488279884588-8446141131222492226?l=sikritinfo.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Itamar Turner-Trauring (noreply@blogger.com)</name>
			<uri>http://sikritinfo.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Itamar Shtull-Trauring: One last thought</title>
		<link rel="alternate" type="text/html" href="http://sikritinfo.blogspot.com/2010/09/one-last-thought.html"/>
		<id>tag:blogger.com,1999:blog-5374469488279884588.post-2058330955573659984</id>
		<updated>2010-09-02T12:17:41+00:00</updated>
		<content type="html">To steal a line from Churchill, freedom of religion is the worst system possible, except for all the others that have been tried. But freedom of religion is a legal concept, and there's still the question of public attitudes. I think we'd all be better off if we swapped the roles of religion and sex in our society. Religion would be something you did in private, and politicians would spend their time explaining how awesome they are in bed instead of how much they love Jesus.&lt;br /&gt;&lt;br /&gt;Wouldn't you rather the President said &quot;Hope you get laid tonight, America&quot; instead of &quot;God bless America&quot; after promising to spend billion of dollars killing random civilians in Afghanistan? At least with the former you don't have to think about how what kind of God would approve of mass murder...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5374469488279884588-2058330955573659984?l=sikritinfo.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Itamar Turner-Trauring (noreply@blogger.com)</name>
			<uri>http://sikritinfo.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Duncan McGreggor: HCI at Canonical</title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ElectricDuncan/~3/caTzbrSNUos/hci-at-canonical-one-crazy-ass-ride.html"/>
		<id>tag:blogger.com,1999:blog-8825992.post-6746957139050217659</id>
		<updated>2010-09-02T10:56:08+00:00</updated>
		<content type="html">&lt;div&gt;&lt;br /&gt;&lt;b&gt;uTouch&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Back in March, I blogged about &lt;a href=&quot;http://oubiwann.blogspot.com/2010/03/some-thoughts-on-mobile-device.html&quot;&gt;future possibilities&lt;/a&gt; (in a blue-sky sense) of multi-touch, mentioning the project management I was doing for MT hardware kernel driver support in Lucid (and then proceeding to dive into the deep end of speculation). It's now an Ubuntu cycle later, and holy crap... I'm having a hard time finding the words. I think the blog title says it all. But I'll try to elaborate :-)&lt;br /&gt;&lt;br /&gt;Unless you've been living under a rock, you've probably noticed the big announcements we made a few weeks ago: &lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://lists.launchpad.net/multi-touch-dev/msg00218.html&quot;&gt;uTouch mail list announcement&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.markshuttleworth.com/archives/455&quot;&gt;Mark Shuttleworth's blog post&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blog.canonical.com/?p=414&quot;&gt;The Canonical uTouch announcement&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blog.canonical.com/?p=414&quot;&gt;&lt;/a&gt;Chase's blogging extravaganza (&lt;a href=&quot;http://voices.canonical.com/chase.douglas/2010/08/16/multitouch-gestures-project/&quot;&gt;uTouch&lt;/a&gt;, &lt;a href=&quot;http://voices.canonical.com/chase.douglas/2010/08/16/thoughts-on-the-architecture-of-multitouch-in-ubuntu/&quot;&gt;MT architecture&lt;/a&gt;, &lt;a href=&quot;http://voices.canonical.com/chase.douglas/2010/08/16/decoding-apples-magic-trackpad/&quot;&gt;Magic Trackpad&lt;/a&gt;, &lt;a href=&quot;http://voices.canonical.com/chase.douglas/2010/08/25/news-on-the-magic-trackpad-driver/&quot;&gt;Trackpad update&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;For the next few days, we were all over Google news. This was quite a shock, given that we'd been heads-down into the project for so long and hadn't really come up for air nor fully anticipated the impact (to others &lt;i&gt;or&lt;/i&gt; ourselves). Needless to say, after the intense amount of work that the team had engaged in over the previous couple months, this was quite gratifying, if somewhat unexpected.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;There has been a lot of discussion in blog posts, mail lists, IRC (#ubuntu-touch on freenode.net), Launchpad bugs and merge proposals, etc., so much so that touchscreens now pursue me feverishly when I sleep at night. I'm really not interested in writing more of the same :-)&lt;br /&gt;&lt;br /&gt;As such, I want to mix things up a bit...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HCI Remixed&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I've been reading an amazing anthology of essays on human-computer interaction. I still  haven't finished the book (yeah, I've got about 10 in-progress titles on my nightstand), but am relishing every word in this particular collection. The book is &lt;a href=&quot;http://www.amazon.com/dp/0262050889&quot;&gt;HCI Remixed: Reflections on Works That Have Influenced the HCI Community&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While doing some research at the beginning of the Maverick development cycle, I came across &lt;i&gt;HCI Remixed&lt;/i&gt; at the local library -- the title intrigued me and I couldn't resist. Weeks later, after having maxed out the number of times I could renew the book, I just purchased it -- I simply couldn't get enough of the book. Every essay I'd read up to that point was fantastic; each one provided volumes of information, experiences, insights, ideas for follow-up, etc. Whenever I finished one essay, I spent &lt;i&gt;days&lt;/i&gt; and sometimes &lt;i&gt;weeks&lt;/i&gt; reading up on references, pondering the past and future of human-computer interaction.&lt;br /&gt;&lt;br /&gt;Due to the unusual nature of the book, describing it is surprisingly difficult. That being said, &lt;a href=&quot;http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=11330&quot;&gt;the MIT Press page&lt;/a&gt; gives you a great taste:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Over almost three decades, the field of human-computer interaction (HCI) has produced a rich and varied literature. Although the focus of attention today is naturally on new work, older contributions that played a role in shaping the trajectory and character of the field have much to tell us. The contributors to HCI Remixed were asked to reflect on a single work at least ten years old that influenced their approach to HCI. The result is this collection of fifty-one short, engaging, and idiosyncratic essays, reflections on a range of works in a variety of forms that chart the emergence of a new field.&lt;/i&gt;&lt;/blockquote&gt;If you're into HCI, learning from others, and discovering new sources of inspiration for your own work, this is simply a must-have book :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A Small Piece of History&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;By the time I checked the book out of the Golden public library, it was May and we had begun building the MT team. By July -- once it became clear how astounding the team's work was -- I realized that in 10 or 20 years I could very well be writing an article about Henrik, Chase, Stephen, Ikbel, and Rafi. Much like those in the book, I could be sharing the conversations I'd had with Stéphane Chatty, Mark Shuttleworth, Neil Patel, David Siegel, and John Lea. And that's only the crew which which I was collaborating or discussing directly. There are a lot of folks who've been working very hard on multi-touch infrastructure solutions and exploring ways of integrating these for several years (e.g., Peter Hutterer and Carlos Garnacho). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Though many foundations have been laid, as of yet (to the best of my knowledge), no Linux distribution has released a multi-touch stack that integrated gestures in a unified manner across everything from applications to window managers and beyond.  This was something that Mark wanted us to provide to the open source world. In this spirit, the multitouch team hasn't just hacked things together to get a product out in time. A &lt;i&gt;lot&lt;/i&gt; of generative, creative thought and care has gone into &lt;a href=&quot;https://edge.launchpad.net/canonical-multitouch/&quot;&gt;uTouch&lt;/a&gt;. A lot of original problem solving has taken place. Physics PhDs, kernel hackers, X.org hackers, driver creators, application integrators, toolkit gurus -- all of this knowledge was concentrated, applied, and used to distill a first approximation of what a gesture stack in Linux could look like, using the latest available technology and methodologies.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To be honest, we weren't really sure we could pull it off. There was a very good chance we could have failed at our task, quietly chalking up the loss as a lesson learned. Now that we've managed to shape these ideas into actual software, taken the threads of dreams and woven something real, we are thrilled to be engaging with others to see where all of us can take multi-touch and gestures from here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks to expert input from the wider open source community, we're already looking at ways in which we can improve upon the first version, ways of bringing new ideas and experiences to developers and users of multi-touch hardware running Linux. Things are only just warming up, and the greatest contributions have yet to be made. Every single person in the community has before them a world of possibilities for getting involved and creating the future human-computer interfaces for the free and open source world in the coming weeks and months. These are indeed exciting times.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/8825992-6746957139050217659?l=oubiwann.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?a=caTzbrSNUos:_AyHhQCU4pU:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?a=caTzbrSNUos:_AyHhQCU4pU:4cEx4HpKnUU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?i=caTzbrSNUos:_AyHhQCU4pU:4cEx4HpKnUU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?a=caTzbrSNUos:_AyHhQCU4pU:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?i=caTzbrSNUos:_AyHhQCU4pU:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?a=caTzbrSNUos:_AyHhQCU4pU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?i=caTzbrSNUos:_AyHhQCU4pU:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?a=caTzbrSNUos:_AyHhQCU4pU:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ElectricDuncan?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ElectricDuncan/~4/caTzbrSNUos&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Duncan McGreggor (oubiwann@gmail.com)</name>
			<uri>http://oubiwann.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Android: reviewing after a week</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/09/02/android-reviewing-after-a-week/"/>
		<id>https://moshez.wordpress.com/2010/09/02/android-reviewing-after-a-week/</id>
		<updated>2010-09-02T00:26:25+00:00</updated>
		<content type="html">&lt;p&gt;I got my android on Thursday evening, and it’s now Wednesday, so I feel I now have some perspective on it.&lt;/p&gt;
&lt;p&gt;Technical things first: I got the Motorola Droid 2 from Verizon. It has a pull-out keyboard, which sold me on it. It is a little bulky.&lt;/p&gt;
&lt;p&gt;First, the bad: no universal cut’n'paste. You almost forget how much it is taken for granted on today’s computers. I view this as the next gaping flaw the os should address. The browser deals with resizing suboptimally – I would like a mode where I force the text to be bigger and reflow. In a related note, you would expect mainstream websites to have a more mobile friendly version,  no?&lt;/p&gt;
&lt;p&gt;The good:&lt;br /&gt;
Turn-by-turn navigation&lt;br /&gt;
No crappy pre-loads&lt;br /&gt;
Pretty good app selection&lt;br /&gt;
Several decent games&lt;br /&gt;
A solid 5/10 on voice recognition&lt;br /&gt;
Nice ui&lt;br /&gt;
Amazing multitasking&lt;/p&gt;
&lt;p&gt;If this continues, apple has their work cut out for them to stay ahead of the game.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/439/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/439/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=439&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Thomas Vander Stichele: long life external batteries for laptops ?</title>
		<link rel="alternate" type="text/html" href="http://thomas.apestaart.org/log/?p=1199"/>
		<id>http://thomas.apestaart.org/log/?p=1199</id>
		<updated>2010-08-26T18:19:27+00:00</updated>
		<content type="html">&lt;p&gt;I’m probably going to be doing some long flights pretty soon and I’d like to maximize my laptop time hacking on the plane.&lt;/p&gt;
&lt;p&gt;Who of you have experience with big external batteries, what’s a good one to get, how long can I expect them to last and how long do they take to charge ?&lt;/p&gt;</content>
		<author>
			<name>Thomas</name>
			<uri>http://thomas.apestaart.org/log</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Pictures, Copyright and Licenses</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/08/25/pictures-copyright-and-licenses/"/>
		<id>http://moshez.wordpress.com/?p=436</id>
		<updated>2010-08-25T20:08:57+00:00</updated>
		<content type="html">&lt;p&gt;Recently, I find myself in the position of creating a lot of Facebook events, for reasons unrelated to the post.&lt;/p&gt;
&lt;p&gt;When creating events on Facebook, you are given the option of attaching a picture. This picture, or thumbnails thereof, are used by the website wherever the event appears. The default was changed to be slightly less horrible than it used to be, but it is still a little embarrassing to use the default. Therefore, I find myself often needing pictures with a certain theme.&lt;/p&gt;
&lt;p&gt;However, I am very careful about mistreating copyright works. I feel copyright is an outdated way of protecting creativity, but I am not willing to expose myself to C&amp;amp;Ds in the name of that belief just yet.&lt;/p&gt;
&lt;p&gt;There are two good sources of pictures which can be used for those purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flickr — just make sure to go into “Advanced search” and click “yes” on the “Creative Commons” check-box.&lt;/li&gt;
&lt;li&gt;Wikimedia Commons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that most pictures you find with a Google image search are &lt;em&gt;not&lt;/em&gt; CC, free or in any way OK to use. However, the two sources above are a wonderful resource for finding great pictures without violating copyright.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/436/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/436/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=436&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Itamar Shtull-Trauring: An expert on money</title>
		<link rel="alternate" type="text/html" href="http://sikritinfo.blogspot.com/2010/08/expert-on-money.html"/>
		<id>tag:blogger.com,1999:blog-5374469488279884588.post-8887564231243896484</id>
		<updated>2010-08-24T03:28:52+00:00</updated>
		<content type="html">I'm proud to be a graduate of the Harvard Extension School. I got a wonderful liberal arts education, and it wasn't even that expensive. Unfortunately, when it comes to economics the Extension School is just as bad as the rest of Harvard: worse than useless.&lt;br /&gt;&lt;br /&gt;For example, this fall you can take ECON E-1452: &quot;Money, Banking and Financial Institutions.&quot; According to the syllabus, &quot;this course is an analysis of money and its role in financial markets and the economy. It considers the impact banks and other financial institutions have made in the United States and internationally, as well as the events leading up to the financial crisis of 2008.&quot; The course textbook was written by Frederic S. Mishkin.&lt;br /&gt;&lt;br /&gt;This is the same Frederic Mishkin who was apparently paid $124,000 to write a paper which stated that &quot;it [is] unlikely that there are serious problems with safety and soundness in the [Icelandic] banking system,&quot; and though a financial meltdown might be possible, such &quot;self-fulfilling prophecies are unlikely to occur when fundamentals are strong, as they are in Iceland.&quot;&lt;br /&gt;&lt;br /&gt;The Icelandic banking system subsequently collapsed. Mishkin never disclosed in the report that he was paid to write it by the Icelandic Chamber of Commerce.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.wcvarones.com/2010/08/incompetent-paid-shill-frederic-mishkin.html&quot;&gt;Apparently&lt;/a&gt; one Charles Ferguson is making a movie about the financial crisis, and he interviewed Mishkin on the subject:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;(The CV has since been changed to include the correct title of the paper mentioned in the video.)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5374469488279884588-8887564231243896484?l=sikritinfo.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Itamar Turner-Trauring (noreply@blogger.com)</name>
			<uri>http://sikritinfo.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Itamar Shtull-Trauring: The Wider Point of View</title>
		<link rel="alternate" type="text/html" href="http://sikritinfo.blogspot.com/2010/08/wider-point-of-view.html"/>
		<id>tag:blogger.com,1999:blog-5374469488279884588.post-5037567428751291939</id>
		<updated>2010-08-19T23:46:54+00:00</updated>
		<content type="html">All fiction is a reflection of its time; only rarely does it poke its head through the mirror and take an active look around. Good science fiction is more likely to do this because its writers, like anthropologists, have internalized that the present is contingent, temporary, always provincial. Travel a bit in time or space, and the world is a different place, seen through alien eyes. But since fiction is a reflection of its time, often the same critical theme crops up again and again, the product of a particular soil and climate.&lt;br /&gt;&lt;br /&gt;The last time I noticed this, the theme was the corruption of power. In book after book published in the same couple of years, thrillers and mysteries (all in the SF or fantasy genres) came to the same revelatory climax: the government or those in power were the villains. I'll omit the names of the authors for fear of spoilers.&lt;br /&gt;&lt;br /&gt;This time the pattern I'm seeing is antagonistic reflections on religion, although the list of books is shorter so far. Stross' &quot;The Fuller Memorandum&quot; isn't quite as good as his previous two Laundry novels, although it'll still appeal to Lovecraft fans, and Ken Macleod's &quot;The Night Sessions&quot; (still!) hasn't made it to the US yet so I've yet to read it. Ian McDonalds &quot;Ares Express&quot; is quite good, as is China Mieville's &quot;The Kraken&quot;, which I just finished reading. Strangely, the novel feels like Mieville is channeling Terry Pratchett, in his guise as humanist rather than humorist. There is some of the latter though, and Mieville can wield a sharp pun, e.g. in the climax of &lt;a href=&quot;http://www.socialistreview.org.uk/article.php?articlenumber=9150&quot;&gt;this short story&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All of these authors are British, though I couldn't say why. Perhaps now that religious discrimination is becoming fashionable in the US maybe we'll see some American authors chiming in. I do sympathize with the claim that religions whose members have been involved in religiously-motivated bloodshed should be looked upon with suspicion. The Spanish Inquisition, all the Jews slaughtered during the Crusades, the Protestants killed by  &lt;span style=&quot;font-style: italic;&quot;&gt;other&lt;/span&gt; Protestants during the Reformation for believing in the wrong method of salvation (theological disputes are easy to win if the municipal executioner works for you), the Thirty Years War... violent bunch, these Christians. As one of many contemporary examples, there are all those avid readers of &quot;The Left Behind&quot; series (millions of copies sold!), excited about the impending death of my siblings in the coming apocalyptic wars in Israel.&lt;br /&gt;&lt;br /&gt;Lets ban some churches first, and then maybe we'll talk about mosques.&lt;br /&gt;&lt;br /&gt;Here's what &lt;a href=&quot;http://schafferthedarklord.com/&quot;&gt;Schaffer the Dark Lord&lt;/a&gt; has to say (or rather, sing) on the subject:&lt;br /&gt;&lt;br /&gt; &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5374469488279884588-5037567428751291939?l=sikritinfo.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Itamar Turner-Trauring (noreply@blogger.com)</name>
			<uri>http://sikritinfo.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Stargate Science</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/08/16/stargate-science/"/>
		<id>http://moshez.wordpress.com/?p=434</id>
		<updated>2010-08-16T03:52:53+00:00</updated>
		<content type="html">&lt;p&gt;There was one thing that always bothered me about “the science of stargate”. No, it’s not about the stargate’s FTL movement means that causality is violated — that’s a problem common to any FTL travel, and can be dealt with in a number of ways.&lt;/p&gt;
&lt;p&gt;The bigger problem is something that was obviously invented for plot device purposes: “when you open a wormhole, matter can only move in the direction it was opened, but energy can move both ways”. How can it make sense? After all, matter and energy are interchangeable. Here is a possible solution: it pertains to the difference between fermions and bosons. In quantum mechanics, fermions are particles with spin of the form “n 1/2″. Bosons are particles with spin of the form “n”. There are many deep differences between them: for example, the Pauli exclusion principle, responsible for the structure of atoms, applies only to fermions.&lt;/p&gt;
&lt;p&gt;Normal matter is made of atoms. Atoms are made of electrons, protons and neutrons. Electrons are fermions. Protons and neutrons are made of quarks, which are also fermions. In other words, atoms are made of fermions. Radio waves, the most common communication in the Stargate series across stargates, are made of photons. Photons are bosons.&lt;/p&gt;
&lt;p&gt;It makes sense, of course, that Capt. Carter would simplify (“dumb down”) the science. Instead of saying “fermions” and “bosons”, the O’Neill would respond better to matter and energy. So there we have it: bosons can travel both ways, fermions can only travel one way, across a stable wormhole constructed from one stargate to another.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/434/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=434&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: unittest, part 3</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/08/unittest-part-3.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-1242385780460889239</id>
		<updated>2010-08-14T14:34:41+00:00</updated>
		<content type="html">So far, we've talked about &lt;code&gt;TestSuite&lt;/code&gt;s, &lt;code&gt;TestCase&lt;/code&gt;s and &lt;code&gt;TestResult&lt;/code&gt;s. We've seen how these objects interact with each other  and how they can generally be thought about as having more than one interface. &lt;code&gt;TestResult&lt;/code&gt; has an interface for the &lt;code&gt;TestCase&lt;/code&gt; and an interface used for querying the results, &lt;code&gt;TestCase&lt;/code&gt; has an interface for test runners and an interface for test authors, and so forth.&lt;br /&gt;&lt;br /&gt;Now we need to give some time to the bits that glue everything together: the test runner and the test loader.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;code&gt;TestRunner&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You will not find a class in unittest.py called &lt;code&gt;TestRunner&lt;/code&gt;. A test runner is simply something that takes user input about a test run – what tests to run, what manner to run them in, how to display the results – and does it.&lt;br /&gt;&lt;br /&gt;Essentially, it does something like this:&lt;pre&gt;  test = TestLoader().loadTests(user_specified_test_string)&lt;br /&gt;  result = makeTestResult(options_specified_by_user)&lt;br /&gt;  result.startTestRun()&lt;br /&gt;  try:&lt;br /&gt;    test.run(result)&lt;br /&gt;  finally:&lt;br /&gt;    result.stopTestRun()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And that's it.&lt;br /&gt;&lt;br /&gt;You see that the test runner is responsible for instantiating the test loader and the test result. It's perhaps excusable for a test runner to be tightly bound to particular implementations of test loader and test result. Certainly, before &lt;code&gt;TestResult&lt;/code&gt; grew &lt;code&gt;startTestRun&lt;/code&gt; and &lt;code&gt;stopTestRun&lt;/code&gt; it was inevitable: since the test runner was responsible for summarizing the results of a test run, overall responsibility for displaying the results was split between the runner and the result.&lt;br /&gt;&lt;br /&gt;Nowadays, the tight coupling can be limited. If your test runner has an option to display stack traces as it gets them, then that's pretty much going to force you to use a particular result. However, you can still write your code internally such that someone could pass in a different result that still works, even though it doesn't do exactly what the user asked for.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;code&gt;TestLoader&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;From the point of view of interfaces and compatibility, this is a pretty boring class, and that's a good thing. The test loader's job is to find tests based on some user input and construct a single &lt;code&gt;ITest&lt;/code&gt; object for them.&lt;br /&gt;&lt;br /&gt;When it does more than this, one runs the risk of having the behaviour of a test suite depend too much on the runner itself. The ideal is to have the test suite run in any runner: trial, nose, unittest2, py.test, whatever.&lt;br /&gt;&lt;br /&gt;Some &lt;code&gt;TestLoader&lt;/code&gt;s provide hooks so that users with complicated test suites can customize the way their tests are loaded. Whenever the Trial &lt;code&gt;TestLoader&lt;/code&gt; sees a &lt;code&gt;test_suite()&lt;/code&gt; function in a module, it lets that function take charge of the loading.&lt;br /&gt;&lt;br /&gt;The standard library in 2.7 has a new hook, inspired by an innovation in bzrlib, but slightly different. &lt;code&gt;load_tests(loader, standard_tests, pattern)&lt;/code&gt; is given the loader used by the test runner, the tests that the loader would have loaded, and if appropriate, a glob used for matching test module files. The advantage of this hook is that it reduces the danger of customizations made to the loader, since the test suite has access to the same loader. It also makes custom loading easier by giving the standard tests as a starting point. bzrlib uses this to run the same set of tests against many implementations.&lt;br /&gt;&lt;br /&gt;I &lt;i&gt;think &lt;/i&gt;that's all I have to say about these two, which means that's pretty much all I have to say about unittest's API for test frameworks. Still one more post to go though: interfaces for test authors.&lt;br /&gt;&lt;br /&gt;Let me know if I've missed anything, if anything here surprises you or contradicts something I said in the past or if things are unclear. The comments on the previous two posts have really helped!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-1242385780460889239?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Christopher Armstrong: Holy sh*t! QUAKE LIVE is launched!</title>
		<link rel="alternate" type="text/html" href="http://radix.twistedmatrix.com/2010/08/holy-sht-quake-live-is-launched.html"/>
		<id>tag:blogger.com,1999:blog-18669215.post-7402303211317803507</id>
		<updated>2010-08-08T06:29:06+00:00</updated>
		<content type="html">Alright, so what's the explanation for my long absence from the blog &lt;em&gt;this&lt;/em&gt; time? &lt;a href=&quot;http://quakelive.com/&quot;&gt;QUAKE LIVE&lt;/a&gt; just went out of beta yesterday. We've released subscription services which give you access to new maps, a new game type (freeze tag), and the ability to start your own matches with your friends. It's at &lt;a href=&quot;http://quakelive.com/&quot;&gt;quakelive.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since I joined the project I've been working on scalability improvements, but also new features like the invitation system and subscription management. I've even dipped into our PHP code recently. It's been really fun to work on and learn about a system that needs a lot of scalability in managing a combination of extremely dynamic and static, long-term statistical data. Python and Twisted are continuing to be a great fit for our work in the infrastructure.&lt;br /&gt;&lt;br /&gt;Having scalability problems is a great thing, of course, so go try out the game and make me work more :-)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=uKtrmmIUv1k&quot;&gt;http://www.youtube.com/watch?v=uKtrmmIUv1k&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/18669215-7402303211317803507?l=radix.twistedmatrix.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Christopher Armstrong (noreply@blogger.com)</name>
			<uri>http://radix.twistedmatrix.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Twisted Matrix Laboratories: Fluidinfo sponsors Twisted!</title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TwistedMatrixLaboratories/~3/tRbMmuRiVJg/fluidinfo-sponsors-twisted.html"/>
		<id>tag:blogger.com,1999:blog-1267458971896358542.post-7273316726520823174</id>
		<updated>2010-08-08T03:11:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://fluidinfo.com/&quot;&gt;Fluidinfo&lt;/a&gt; is Twisted's latest sponsor!  We asked if they could share some of the joys of sponsorship with us, and they had this to say about it:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
At Fluidinfo, we're heavy users of Twisted. All of our infrastructure depends on it. &lt;a href=&quot;http://fluidinfo.com/fluiddb/&quot;&gt;FluidDB&lt;/a&gt;, our social database, is entirely built on Twisted, and we've released several core parts of it as open source:  &lt;a href=&quot;https://launchpad.net/txamqp&quot;&gt;txAMQP&lt;/a&gt;,  &lt;a href=&quot;https://launchpad.net/txrdq&quot;&gt;txRDQ&lt;/a&gt; and  &lt;a href=&quot;http://twistedmatrix.com/pipermail/twisted-python/2008-September/018442.html&quot;&gt;txThrift&lt;/a&gt;. Not only that, but we have contributed to Twisted both with code and (albeit small) personal donations.&lt;/blockquote&gt;
&lt;blockquote&gt;
It's not just that sponsoring was the fair the thing to do, it has also produced tremendous results in a framework crucial to our business. When you donate to the TSF it's simple math that more bugs get fixed, but also the quality of the entire Twisted project is enhanced. And when that happens, all of our products are enhanced automatically without us writing one line of code. So sponsoring is not just an act of generosity, it's an investment in Fluidinfo. Using and sponsoring Twisted has been an indispensable &quot;force multiplier&quot; for a growing start-up like us.&lt;/blockquote&gt;
&lt;blockquote&gt;
    – Esteve Fernandez&lt;/blockquote&gt;
&lt;blockquote&gt;
       CTO, Fluidinfo Inc. &lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/1267458971896358542-7273316726520823174?l=labs.twistedmatrix.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TwistedMatrixLaboratories/~4/tRbMmuRiVJg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jason J. W. Williams (noreply@blogger.com)</name>
			<uri>http://labs.twistedmatrix.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Funny Moments from the Kitzmiller vs. Dover Trial</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/08/06/funny-moments-from-the-kitzmiller-vs-dover-trial/"/>
		<id>http://moshez.wordpress.com/?p=425</id>
		<updated>2010-08-08T02:04:19+00:00</updated>
		<content type="html">&lt;p&gt;The Kitzmiller vs. Dover trial has some doozies in the cross-examination of Michael Behe, one of the proponents of intelligent design (from the &lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html&quot;&gt;transcripts&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm208&quot; name=&quot;day11pm208&quot; id=&quot;day11pm208&quot;&gt;Q&lt;/a&gt; Telling the readers of Pandas that you were a critical reviewer of that book is misleading, isn’t it?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm209&quot; name=&quot;day11pm209&quot; id=&quot;day11pm209&quot;&gt;A&lt;/a&gt; I disagree. As I said, that’s not the typical way that the term “critical reviewer” is used, but nonetheless, in my opinion I don’t think it is misleading.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;And a little bit later&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm225&quot; name=&quot;day11pm225&quot; id=&quot;day11pm225&quot;&gt;Q&lt;/a&gt; And Mr. Dembski, who is the author of Design of Life, described you as a co-author of the book, correct?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm226&quot; name=&quot;day11pm226&quot; id=&quot;day11pm226&quot;&gt;A&lt;/a&gt; That’s what he does, yes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm227&quot; name=&quot;day11pm227&quot; id=&quot;day11pm227&quot;&gt;Q&lt;/a&gt; That’s false, isn’t it?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm228&quot; name=&quot;day11pm228&quot; id=&quot;day11pm228&quot;&gt;A&lt;/a&gt; Again, I am not an author of the book, but William Dembski, several years ago, asked if I would contribute. And I explained to him that I did not have the time to do so. And he says well, perhaps, you know, in the future he could solicit material from me and then I would be one of the authors of the book. So, that’s correct.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm229&quot; name=&quot;day11pm229&quot; id=&quot;day11pm229&quot;&gt;Q&lt;/a&gt; So that makes you a co-author right now, Professor Behe?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm230&quot; name=&quot;day11pm230&quot; id=&quot;day11pm230&quot;&gt;A&lt;/a&gt; I certainly would not have listed myself now as a co-author, however, I think that he was anticipating my future participation in the project.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm231&quot; name=&quot;day11pm231&quot; id=&quot;day11pm231&quot;&gt;Q&lt;/a&gt; So that’s a true statement, Professor Behe, that you’re a co-author?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm232&quot; name=&quot;day11pm232&quot; id=&quot;day11pm232&quot;&gt;A&lt;/a&gt; It is not now a true statement but it might be in the future.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Later:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm262&quot; name=&quot;day11pm262&quot; id=&quot;day11pm262&quot;&gt;Q&lt;/a&gt; The statement that you’re an author, and Mr. Dembski’s statement is false too, isn’t it?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm263&quot; name=&quot;day11pm263&quot; id=&quot;day11pm263&quot;&gt;A&lt;/a&gt; That’s not what it says on the screen, sir. It says, “Who are the authors of Design of Life as you understand it?” And the way I read that is that he’s seeing into the future and seeing when this actually will be published and anticipating that I will participate in the publication of the book at that point.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm264&quot; name=&quot;day11pm264&quot; id=&quot;day11pm264&quot;&gt;Q&lt;/a&gt; Seeing into the future is one of the powers of the intelligent design movement?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;And another one:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm331&quot; name=&quot;day11pm331&quot; id=&quot;day11pm331&quot;&gt;Q&lt;/a&gt; But you are clear, under your definition, the definition that sweeps in intelligent design, astrology is also a scientific theory, correct?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm.html#day11pm332&quot; name=&quot;day11pm332&quot; id=&quot;day11pm332&quot;&gt;A&lt;/a&gt; Yes, that’s correct.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;From the next page:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm2.html#day11pm681&quot; name=&quot;day11pm681&quot; id=&quot;day11pm681&quot;&gt;Q&lt;/a&gt; Starts “Among Organisms,” and going to the second sentence it says, “Design proponents have a realistic and more cautious approach to the use of homologies. They regard organisms which show great structural differences, such as starfish and chimpanzees, as having no common ancestry.” Correct.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day11pm2.html#day11pm682&quot; name=&quot;day11pm682&quot; id=&quot;day11pm682&quot;&gt;A&lt;/a&gt; Yes, that’s what it says, but again, I read that as the fact that while other theories such as Darwinisms might make a commitment to common ancestry, a theory of intelligent design can live with what the data shows on that respect, because a theory of intelligent design does not speak to that; it just speaks to the effects of intelligence. So I see this as an accommodating sentence rather than as something that is required.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Also, this gem:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12am.html#day12am231&quot; name=&quot;day12am231&quot; id=&quot;day12am231&quot;&gt;Q&lt;/a&gt;. Now you selected some of your peer reviewers?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12am.html#day12am232&quot; name=&quot;day12am232&quot; id=&quot;day12am232&quot;&gt;A&lt;/a&gt;. No, I did not. I gave my editor at the Free Press suggested names, and he contacted them. Some of them agreed to review. Some did not.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Then, later:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12am2.html#day12am837&quot; name=&quot;day12am837&quot; id=&quot;day12am837&quot;&gt;Q&lt;/a&gt;. Okay. And then you go on to say that you still think — well, I’ll leave that. Your argument is that, even if the type III secretory system is a pre-cursor to the bacterial flagellum, is a subset, the bacterial flagellum is still irreducibly complex because that subset does not function as a flagellum?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12am2.html#day12am838&quot; name=&quot;day12am838&quot; id=&quot;day12am838&quot;&gt;A&lt;/a&gt;. That’s correct, yes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12am2.html#day12am839&quot; name=&quot;day12am839&quot; id=&quot;day12am839&quot;&gt;Q&lt;/a&gt;. And, therefore, the bacterial flagellum must have been intelligently designed?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12am2.html#day12am840&quot; name=&quot;day12am840&quot; id=&quot;day12am840&quot;&gt;A&lt;/a&gt;. Well, again, the argument is that, there is — that when you see a purposeful arrangement of parts, that bespeaks design, so, yes.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;He calls himself a scientist?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12pm2.html#day12pm352&quot; name=&quot;day12pm352&quot; id=&quot;day12pm352&quot;&gt;Q&lt;/a&gt;. Okay. And you said again that the strength of the inference is quantitative, but again you haven’t quantified it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.talkorigins.org/faqs/dover/day12pm2.html#day12pm353&quot; name=&quot;day12pm353&quot; id=&quot;day12pm353&quot;&gt;A&lt;/a&gt;. I have not put numbers on it, but one can kind of do intuitive judgments about these things.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;(This is mostly a note-to-self in case I ever need to refer to these things. But I hope my readership enjoys it!)&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/425/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/425/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=425&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Thomas Vander Stichele: middle mouse frustration</title>
		<link rel="alternate" type="text/html" href="http://thomas.apestaart.org/log/?p=1197"/>
		<id>http://thomas.apestaart.org/log/?p=1197</id>
		<updated>2010-08-05T15:34:01+00:00</updated>
		<content type="html">&lt;p&gt;Sometimes I get annoyed about a simple problem and want to fix it the right way and have it fixed forever.  Right now is such a time.&lt;/p&gt;
&lt;p&gt;Middle click stopped working.  Not sure when – maybe on my last update or reboot ?&lt;/p&gt;
&lt;p&gt;I know what’s wrong – xev tells me that clicking that middle mouse button tells me it thinks it’s button 6 when it should probably think it’s button 3.&lt;/p&gt;
&lt;p&gt;Now, in the Old Days you’d tweak xorg.conf and add a funky option.&lt;/p&gt;
&lt;p&gt;In the New Days Xorg is trying to be all about not needing xorg.conf and I support that vision.  But, what is now the proper way to fix these issues ?&lt;/p&gt;
&lt;p&gt;a) is this a bug, and should some hal file provide enough info for this mouse type to do the remapping ?&lt;/p&gt;
&lt;p&gt;b) can evdev be configured on the fly and/or permanently to fix this mapping ?&lt;/p&gt;
&lt;p&gt;c) which part of the stack is getting it wrong ?&lt;/p&gt;
&lt;p&gt;If it helps, this particular machine is on Fedora 12, and the mouse is a simple Dell mouse with two buttons, a scroll wheel (the ‘third button’) and two up/down buttons.&lt;/p&gt;</content>
		<author>
			<name>Thomas</name>
			<uri>http://thomas.apestaart.org/log</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Discovering Miller’s God</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/08/03/discovering-millers-god/"/>
		<id>http://moshez.wordpress.com/?p=421</id>
		<updated>2010-08-03T23:10:23+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Kenneth_R._Miller&quot;&gt;Kenneth Miller&lt;/a&gt;, also known as the guy who kicked &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Behe&quot;&gt;Behe&lt;/a&gt;‘s ass in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Kitzmiller_v._Dover_Area_School_District&quot;&gt;Dover trial&lt;/a&gt;, wrote a book called “&lt;a href=&quot;http://en.wikipedia.org/wiki/Finding_Darwin%27s_God&quot;&gt;Finding Darwin’s God&lt;/a&gt;“. Kenneth is a talented writer, and I loved his book “&lt;a href=&quot;http://en.wikipedia.org/wiki/Only_a_Theory&quot;&gt;Only a Theory&lt;/a&gt;“. But somehow, my reactions to FDG were more mixed.&lt;/p&gt;
&lt;p&gt;First the compliments: it is &lt;em&gt;exactly&lt;/em&gt; what it says on the tin: it is finding &lt;a href=&quot;http://en.wikipedia.org/wiki/Charles_Darwin&quot;&gt;&lt;em&gt;Darwin&lt;/em&gt;&lt;/a&gt;‘s God. Darwin lost his faith towards the end of his life — but the reason was his daughter’s death, and had nothing to do with the theory of evolution. The Darwin who wrote “&lt;a href=&quot;http://en.wikipedia.org/wiki/On_the_Origin_of_Species&quot;&gt;Origins&lt;/a&gt;” was a believer. Kenneth Miller’s text reads almost like a whodunnit detective novel, searching for that God.&lt;/p&gt;
&lt;p&gt;This is the part that weirded me out, in the beginning. The search is not for &lt;em&gt;a&lt;/em&gt; God, some notion of divinity that is compatible with evolution. The search is for Darwin’s God, the same Darwin who studied Anglican theology. The search is for the Christian God, and the book itself is a fine book of &lt;a href=&quot;http://en.wikipedia.org/wiki/Christian_apologetics&quot;&gt;Christian apologetics&lt;/a&gt;. Thus, Miller takes care to present evolution carefully and accurately, but takes no such similar care with presenting the views of other religions. He casually dismisses &lt;a href=&quot;http://en.wikipedia.org/wiki/Albert_Einstein%27s_religious_views&quot;&gt;Einstein’s religious feelings&lt;/a&gt; as “not real religion”. It makes sense in context — he is on the hunt to prove that the Christian God (and related beliefs, like the divinity of Jesus and the immaculate conceptions) are perfectly consistent with what science knows.&lt;/p&gt;
&lt;p&gt;This book is not really intended for people who accept evolution as hard science and wish to understand its compatibility with religious beliefs. This book’s real audience is Christians for whom evolution causes a crisis of faith. Miller’s goal, noble in its own way, it to reconcile the fact that the evidence for evolution are overwhelming with the need of Christians to keep their faith. The search is truly for Darwin’s God, the Christian God that Darwin believed in even as he wrote “Origins”.&lt;/p&gt;
&lt;p&gt;If, like me, you have never read a book of Christian apologetics, this book is a wonderful example of its genre. If, however, you are interested in how evolution and religion, in general, can be reconciled — well, that’s not what the book attempts to do, and it does not do it.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/421/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/421/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=421&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Jp Calderone: June - July Reading List</title>
		<link rel="alternate" type="text/html" href="http://jcalderone.livejournal.com/56545.html"/>
		<id>http://jcalderone.livejournal.com/56545.html</id>
		<updated>2010-08-02T22:50:58+00:00</updated>
		<content type="html">&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000FC1PZC?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B000FC1PZC&quot;&gt;Forty Signs of Rain&lt;/a&gt;.  Kim Stanley Robinson&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000FCKGRA?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B000FCKGRA&quot;&gt;Fifty Degrees Below&lt;/a&gt;.  Kim Stanley Robinson&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000OI0G6Q?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B000OI0G6Q&quot;&gt;Sixty Days and Counting&lt;/a&gt;.  Kim Stanley Robinson.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000OT8GD0?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B000OT8GD0&quot;&gt;The Tipping Point: How Little Things Can Make a Big Difference&lt;/a&gt;.  Malcolm Gladwell.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B0036ZAHB8?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B0036ZAHB8&quot;&gt;Brainbox&lt;/a&gt;.  Christian Cantrell.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000FBFMZ2?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B000FBFMZ2&quot;&gt;Altered Carbon&lt;/a&gt;.  Richard K. Morgan.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B00196L8DW?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B00196L8DW&quot;&gt;The Second Ship (The Rho Agenda)&lt;/a&gt;.  Richard Phillips.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B001UE6J6O?ie=UTF8&amp;amp;tag=jpcalderone-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=B001UE6J6O&quot;&gt;Immune (The Rho Agenda)&lt;/a&gt;.  Richard Phillips.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</content>
		<author>
			<name>Jp Calderone</name>
			<uri>http://jcalderone.livejournal.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Being a Jew in the Bay Area</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/08/02/being-a-jew-in-the-bay-area/"/>
		<id>http://moshez.wordpress.com/?p=418</id>
		<updated>2010-08-02T21:23:00+00:00</updated>
		<content type="html">&lt;p&gt;In Israel, you don’t have to think about being a Jew. It’s the default state. Others have to think about distinguishing themselves as not being Jews. For the first time in my life, I have to think about being a minority, and keeping my traditions while living in an apathetic nation.&lt;/p&gt;
&lt;p&gt;OK, seriously, that’s hardly true. I mean, Palo Alto schools &lt;em&gt;shut down &lt;/em&gt;for the high holidays. Still, it is a useful first approximation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diet&lt;/strong&gt;: I never kept kosher in Israel. At 23yo, I became a vegetarian. This means that most kosher rules are irrelevant to me (still relevant: wine kashrut rules and dairy rules. Wine kashrut rules are (a) exotic (b) weird and (c) unless you demand a certificate, the fact that most wine is handled in an automated fashion should really be enough. Dairy: nobody sells camel or pork milk around here, as far as I know. I eat at non-kosher restaurants, which probably handle my food with non-kosher dishes, which makes my food technically non-kosher. The alternative would be all-home-cooking all the time, which is obviously unfeasible for a single guy. So I keep kosher as much as reasonable by default…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shabbat&lt;/strong&gt;: This post really started because I read the &lt;a href=&quot;http://www.sabbathmanifesto.org/&quot;&gt;Shabbat Manifesto&lt;/a&gt;. Even the logo is an admission of failure: it shows Saturday as the 6th day of the week, using a Monday calendar. I usually set my preferences for a Sunday calendar whenever I can. The post is also infected by severe ludditeness: “avoid technology”. What’s technology? Why is a book not technological, but a car is? What about when books will all be e-books?  I prefer to interpret it as “be a day from which you do not gain material benefits.” So no working (as much as possible), no going to the gym but yes to easy hikes, drives to the library or enjoying a leisurely breakfast at IHOP. I also try (managed to do it once) to go to a synagogue on Saturday morning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Holidays&lt;/strong&gt;: I try to observe most holidays, but I’m not amazingly good at it. I managed to learn about the Talmud on Shavuot (not a very good lesson, but oh well), I observed Yom Kippur, I observed Passover and so on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community&lt;/strong&gt;: This is where I managed to hit pay-dirt. I managed to join a number of Jewish young-adult organizations, among them &lt;a href=&quot;http://cbdyag.wordpress.com&quot;&gt;JND&lt;/a&gt; (where I am now serving as communications officer).&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=418&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: unittest API, part 2</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/unittest-api-part-2.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-1905966562519966887</id>
		<updated>2010-08-02T11:15:15+00:00</updated>
		<content type="html">In &lt;a href=&quot;http://code.mumak.net/2010/07/unittest-api-part-1.html&quot;&gt;part 1&lt;/a&gt; of this humble attempt to document the interfaces and contracts that unittest actually cares about, we talked about &lt;code&gt;TestSuite&lt;/code&gt; and &lt;code&gt;TestCase&lt;/code&gt;, how they both implement a common interface that's used for running tests, &lt;b&gt;&lt;code&gt;ITest&lt;/code&gt;&lt;/b&gt; and how they each implement their own interfaces, &lt;b&gt;&lt;code&gt;ITestSuite&lt;/code&gt;&lt;/b&gt; and &lt;b&gt;&lt;code&gt;ITestCase&lt;/code&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Now we're moving on to a much more complicated object, &lt;code&gt;TestResult&lt;/code&gt;, to see how we can pick apart the ways it interacts with the rest of the system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;code&gt;TestResult&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A &lt;code&gt;TestResult&lt;/code&gt; object is all about dealing with the results of tests, as you might expect. However, it doesn't generally represent a &lt;i&gt;single&lt;/i&gt; test result. You could say it represents the results of a number of tests, but I don't think that's terribly helpful.&lt;br /&gt;&lt;br /&gt;Better to think of a &lt;code&gt;TestResult&lt;/code&gt; object as an event handler. A &lt;code&gt;TestResult&lt;/code&gt; object receives events from a test run and then does something with them.&lt;br /&gt;&lt;br /&gt;Just as &lt;code&gt;TestCase&lt;/code&gt; has a two-faced nature, presenting one interface to the testing framework and another to test authors, so to &lt;code&gt;TestResult&lt;/code&gt; can be thought of has having many interfaces:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Its interface to a &lt;code&gt;TestCase&lt;/code&gt;. This can be thought of as the &lt;i&gt;test event handling &lt;/i&gt;interface&lt;/li&gt;&lt;li&gt;A &lt;i&gt;result querying&lt;/i&gt; interface, normally used by a test runner&lt;/li&gt;&lt;li&gt;An interface for events that come from the test runner, the &lt;i&gt;runner event handling&lt;/i&gt; interface.&lt;/li&gt;&lt;li&gt;An &lt;i&gt;execution control&lt;/i&gt; interface.&lt;/li&gt;&lt;/ol&gt;Note that the &lt;i&gt;result querying&lt;/i&gt; interface and the &lt;i&gt;runner event handling&lt;/i&gt; interface together make up the interface between the &lt;code&gt;TestResult&lt;/code&gt; and test runner.&lt;br /&gt;&lt;br /&gt;Let's start with the &lt;i&gt;test event handling&lt;/i&gt; interface. The methods below are the interface between &lt;code&gt;TestCase.run()&lt;/code&gt; and &lt;code&gt;TestResult&lt;/code&gt;. (I guess &lt;code&gt;TestCase.debug&lt;/code&gt; too, but no one cares about it).&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;startTest(test)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; commences running. Although not enforced, it's impolite to provide any results for &lt;code&gt;test&lt;/code&gt; before calling this.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;stopTest(test)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; is completely finished. Although not enforced, it's impolite to provide any more results for &lt;code&gt;test&lt;/code&gt; after calling this, unless you call &lt;code&gt;startTest(test)&lt;/code&gt; again first.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;addSuccess(test)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; has been shown to be successful. The default implementation does nothing.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;addError(test, err)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; raises an unexpected error. &lt;code&gt;err&lt;/code&gt; is a tuple such as you might get from &lt;code&gt;sys.exc_info()&lt;/code&gt;. Calling this method for the first time must change the result of &lt;code&gt;wasSuccessful()&lt;/code&gt;.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;addFailure(test, err)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; has failed one of its assertions. &lt;code&gt;err&lt;/code&gt; is a tuple such as you might get from &lt;code&gt;sys.exc_info()&lt;/code&gt;.&lt;/dd&gt;&lt;/dl&gt;The above interface is tightly coupled to the implementation of &lt;code&gt;TestCase.run()&lt;/code&gt;. In particular, if you wish to add more kinds of results to your testing framework (&quot;skip&quot; results are a fairly common addition), then you must change both &lt;code&gt;TestCase.run()&lt;/code&gt; and the &lt;code&gt;TestResult&lt;/code&gt; interface.&lt;br /&gt;&lt;br /&gt;If you do something like that, I recommend making sure that your modified &lt;code&gt;TestCase&lt;/code&gt; can handle &lt;code&gt;TestResult&lt;/code&gt; objects that do not provide the extensions to the interface that you need. One common way of doing this is to have the &lt;code&gt;TestCase&lt;/code&gt; fall back to the primitive result types, e.g. &quot;skip&quot; might become &quot;success&quot; for a &lt;code&gt;TestResult&lt;/code&gt; that doesn't know what skipping means.&lt;br /&gt;&lt;br /&gt;Importantly, the interface between &lt;code&gt;TestCase&lt;/code&gt; and &lt;code&gt;TestResult&lt;/code&gt; has been fattened in Python 2.7.&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;addSkip(test, reason)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; is skipped. &lt;code&gt;reason&lt;/code&gt; is a string explaining why the test was skipped.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;addExpectedFailure(test, err)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; failed in a way that was expected. &lt;code&gt;err&lt;/code&gt; is a tuple such as the one returned by &lt;code&gt;sys.exc_info()&lt;/code&gt;.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;addUnexpectedSuccess(test)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Called when &lt;code&gt;test&lt;/code&gt; was expected to fail, but didn't.&lt;/dd&gt;&lt;/dl&gt;The following interface is a way of learning about test results after they have happened, the &lt;i&gt;result querying&lt;/i&gt; interface, and is part of the contract between the test runner and the TestResult.&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;wasSuccessful()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;If there have been no errors and no failures, return &lt;code&gt;True&lt;/code&gt;. Return &lt;code&gt;False&lt;/code&gt; otherwise.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;testsRun&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;An integer that is the number of tests that have been run.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;errors&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;A list of tuples of &lt;code&gt;(test, error_message)&lt;/code&gt; for all of the tests with unexpected errors, where &lt;code&gt;test&lt;/code&gt; is an &lt;code&gt;ITestCase&lt;/code&gt; and &lt;code&gt;error_message&lt;/code&gt; is a string suitable for display to humans, generally containing a traceback.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;failures&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;A list of tuples of &lt;code&gt;(test, error_message)&lt;/code&gt; for all of the failing tests, where &lt;code&gt;test&lt;/code&gt; is an &lt;code&gt;ITestCase&lt;/code&gt; and &lt;code&gt;error_message&lt;/code&gt; is a string suitable for display to humans, generally containing a traceback.&lt;/dd&gt; &lt;/dl&gt;And of course, Python 2.7 fattens this interface again to have the following:&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;skipped&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;A list of tuples of &lt;code&gt;(test, reason)&lt;/code&gt; for all of the skipped tests, where &lt;code&gt;test&lt;/code&gt; is an &lt;code&gt;ITestCase&lt;/code&gt; and &lt;code&gt;reason&lt;/code&gt; is a string suitable for display to humans, generally containing a traceback.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;expectedFailures&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;A list of tuples of &lt;code&gt;(test, error_message)&lt;/code&gt; for all of the tests that were expected to fail and failed in the manner they were expected to, where &lt;code&gt;test&lt;/code&gt; is an &lt;code&gt;ITestCase&lt;/code&gt; and &lt;code&gt;error_message&lt;/code&gt; is a string suitable for display to humans, generally containing a traceback.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;unexpectedSuccesses&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;A list of all of the tests that unexpectedly succeeded. Members of the list are &lt;code&gt;ITestCase&lt;/code&gt;s.&lt;/dd&gt;&lt;/dl&gt;In Python 2.7, &lt;code&gt;TestResult&lt;/code&gt; also extended its interface to the test runner beyond simple result querying and into allowing the test runner itself to send two very important events to the &lt;code&gt;TestResult&lt;/code&gt;, behold the &lt;i&gt;runner event handling&lt;/i&gt; interface:&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;startTestRun()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Called before any tests have been run. It is impolite to provide any test results before calling this.&lt;/div&gt;&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;stopTestRun()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Called after all the tests have finished running. It is impolite to provide any test results after calling this. A &lt;code&gt;TestResult&lt;/code&gt; object is generally not expected to handle any events at all after this method has been called.&lt;/div&gt;&lt;/dd&gt;&lt;/dl&gt;Some test runners rely on &lt;code&gt;TestResult&lt;/code&gt;s to use those events to display the results to the user. These runners frequently do not use the result querying part of the interface.&lt;br /&gt;&lt;br /&gt;There is one more interface that &lt;code&gt;TestResult&lt;/code&gt; implements: the &lt;i&gt;execution control&lt;/i&gt; interface:&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;stop()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Signal that the execution of further tests should stop now. Sets &lt;code&gt;shouldStop&lt;/code&gt; to &lt;code&gt;True&lt;/code&gt;.&lt;/dd&gt;&lt;dt&gt;&lt;code&gt;shouldStop&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;If &lt;code&gt;True&lt;/code&gt;, then test execution should stop. &lt;code&gt;TestSuite.run()&lt;/code&gt; should monitor this value and stop execution if ever it is &lt;code&gt;True&lt;/code&gt;.&lt;/dd&gt;&lt;dt&gt;&lt;/dt&gt;&lt;/dl&gt;This interface is mostly used as a way of handling &lt;code&gt;KeyboardInterrupt&lt;/code&gt;s cleanly.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you want your &lt;code&gt;TestResult&lt;/code&gt; object to work with standard Python &lt;code&gt;TestCase&lt;/code&gt; objects, or any &lt;code&gt;TestCase&lt;/code&gt; objects that try to stick close to the standard, then you must provide the &lt;i&gt;test event handling&lt;/i&gt; interface described above. If you are writing your own test framework or test runner, you care about this, because you want to run everyone's unit tests.&lt;br /&gt;&lt;br /&gt;If you want your &lt;code&gt;TestResult&lt;/code&gt; object to work with the standard Python test runner before Python 2.7, then you must provide the &lt;i&gt;result querying&lt;/i&gt; interface. If you are using the standard Python test runner, you care about this. For Trial or testtools, you must provide the &lt;i&gt;runner event handling&lt;/i&gt; interface. For anything else, I'm afraid you are on your own.&lt;br /&gt;&lt;br /&gt;Always provide the &lt;i&gt;execution control&lt;/i&gt; interface.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Comments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this documentation, I've been trying to describe the various interfaces without inserting too much of my own opinion about their design. However, I think some commentary might actually help to make things easier to understand.&lt;br /&gt;&lt;br /&gt;By providing a querying interface for &lt;code&gt;TestResult&lt;/code&gt; to be used by a test runner, the original designers of unittest practically insisted that responsibility for displaying the results of a test run be split between two different classes. The &lt;code&gt;TestResult&lt;/code&gt; takes care of displaying incremental feedback from the running tests and the test runner takes care of displaying the summary. You can see evidence of this design in Python 2.6's unittest.py, where there's a hidden &lt;code&gt;_TextTestResult&lt;/code&gt; subclass which has extra methods that are called only by a special &lt;code&gt;TextTestRunner&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;The addition of &lt;code&gt;startTestRun()&lt;/code&gt; and &lt;code&gt;stopTestRun()&lt;/code&gt; mean that now a &lt;code&gt;TestResult&lt;/code&gt; object can be fully in charge of displaying its results. As such, providing a query interface and exposing details like the list of test failures somewhat vestigial. &lt;br /&gt;&lt;br /&gt;I'm less happy with this post than the previous one. As such your critique is even more welcome.&lt;br /&gt;&lt;br /&gt;Still to come: the interface for test authors and just what is a test runner anyway?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Remove ambiguity in &lt;code&gt;expectedFailures&lt;/code&gt; description (see comments). Thanks Aaron.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-1905966562519966887?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: unittest API, part 1</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/unittest-api-part-1.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-7311314017139476052</id>
		<updated>2010-07-29T16:56:11+00:00</updated>
		<content type="html">It's a little known fact, but unittest actually has an API.&lt;br /&gt;&lt;br /&gt;This isn't the API that you deal with when you write tests, but rather an API that unittest itself uses when running tests. You could think of it as two interfaces: one for test frameworks and one for test authors. Both APIs are real, but both are poorly documented and often misunderstood or abused.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;code&gt;TestCase&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;An instance of &lt;code&gt;TestCase&lt;/code&gt; represents a single test. What you think of as a single test is up to you, but most of the time it's a unit test.&lt;br /&gt;&lt;br /&gt;A &lt;code&gt;TestCase&lt;/code&gt; object &lt;i&gt;must&lt;/i&gt; provide the following methods.&lt;br /&gt;&lt;br /&gt;This first list of methods can be thought of as a single interface, which these blog posts will call &lt;b&gt;&lt;code&gt;ITest&lt;/code&gt;&lt;/b&gt; given the lack of any better name.&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;countTestCases()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;A method that returns the number of test cases this represents. It should always return 1.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;run(result=None)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Calling this method actually runs the test. &lt;code&gt;result&lt;/code&gt; is a &lt;code&gt;TestResult&lt;/code&gt; object. &lt;code&gt;run&lt;/code&gt; must call &lt;code&gt;result.startTest(self)&lt;/code&gt; when it commences running the test and &lt;code&gt;result.stopTest(self)&lt;/code&gt; when it is finished. Between these calls it must call a method on &lt;code&gt;result&lt;/code&gt; to signal the result of the test. &lt;code&gt;run&lt;/code&gt; must never raise an exception, and its return value is ignored. If &lt;code&gt;result&lt;/code&gt; is not provided, the &lt;code&gt;TestCase&lt;/code&gt; is obliged to make one.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;__call__(result)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Identical to &lt;code&gt;run(result)&lt;/code&gt;, provided for backwards compatibility.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;debug()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Calling this method runs the test without collecting its results. It may raise exceptions. This method is rarely called by test frameworks.&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;The following methods are specific to individual test case objects. We call this interface &lt;b&gt;&lt;code&gt;ITestCase&lt;/code&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;id()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Should return a string that uniquely identifies the test. For Python tests, the fully-qualified Python name works well. The uniqueness of the id is not enforced.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;shortDescription()&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Should return a string that describes the test. Many test frameworks use this value to display test results.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;__str__&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Should return a string that describes the test. Frequently the same as either &lt;code&gt;shortDescription()&lt;/code&gt; or &lt;code&gt;id()&lt;/code&gt;. Many test frameworks use this value to display test results.&lt;/dd&gt;&lt;/dl&gt;There is also a second interface, one that matters to code that subclasses &lt;code&gt;TestCase&lt;/code&gt;. We'll deal with that in a later post.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;code&gt;TestSuite&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A &lt;code&gt;TestSuite&lt;/code&gt; represents nothing more or less than a bunch of tests.&lt;br /&gt;&lt;br /&gt;A &lt;code&gt;TestSuite&lt;/code&gt; must provide the &lt;code&gt;ITest&lt;/code&gt; interface described above, with the differences that you would expect from something that represents many tests: &lt;code&gt;countTestCases&lt;/code&gt; returns the number of tests in the suite; &lt;code&gt;run&lt;/code&gt; runs many tests and thus calls &lt;code&gt;result.startTest&lt;/code&gt; and kin many times over; &lt;code&gt;debug&lt;/code&gt; is the same and can explode anywhere.&lt;br /&gt;&lt;br /&gt;One difference is that &lt;code&gt;TestSuite.run&lt;/code&gt; must stop running tests as soon as it detects that &lt;code&gt;result.shouldStop&lt;/code&gt; is true.&lt;br /&gt;&lt;br /&gt;In addition, &lt;code&gt;TestSuite&lt;/code&gt; implements the following interface, which I'm giving the completely arbitrary non-existent name of &lt;code&gt;&lt;b&gt;ITestSuite&lt;/b&gt;&lt;/code&gt;.&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;addTest(test)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Takes an &lt;code&gt;ITest&lt;/code&gt; and adds it to the suite.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;addTests(tests)&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;Takes an iterable of &lt;code&gt;ITest&lt;/code&gt;s and adds them to the suite. Normally equivalent to &lt;code&gt;[suite.addTest(test) for test in tests]&lt;/code&gt;.  &lt;/dd&gt;&lt;dt&gt;&lt;code&gt;__iter__&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;All test suites must be iterable. Iterating over a test suite yields &lt;code&gt;ITest&lt;/code&gt;s. These may differ from the &lt;code&gt;ITest&lt;/code&gt;s provided to &lt;code&gt;addTest&lt;/code&gt; and &lt;code&gt;addTests&lt;/code&gt;.&lt;/dd&gt; &lt;/dl&gt;In later posts, I hope to document &lt;code&gt;TestResult&lt;/code&gt;, the subclassing interface of &lt;code&gt;TestCase&lt;/code&gt; and tell you exactly what I think about test loaders, test runners and the like.&lt;br /&gt;&lt;br /&gt;I'm blogging this partly because I don't know where else to write this up, but mostly because I need your help to make sure that I'm being clear and correct. Please comment with questions and corrections, and let me know if you find this at all helpful.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-7311314017139476052?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Irony</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/07/28/irony/"/>
		<id>http://moshez.wordpress.com/?p=415</id>
		<updated>2010-07-28T21:21:16+00:00</updated>
		<content type="html">&lt;p&gt;(Friends have shown me a &lt;a href=&quot;http://www.youtube.com/watch?v=nT1TVSTkAXg&quot;&gt;stand-up routine about “Ironic”&lt;/a&gt; which prompted this.)&lt;/p&gt;
&lt;p&gt;Picture this: you’re in your literature class. The teacher gives the definition of “irony”, and proceeds to rattle off a few examples of irony. I’m dating myself this, but back when I was in this situation (highschool lit) the song “Ironic” did not achieve cult-status yet, at least around my part. So my teacher did this, we copied this down to our notebooks, and eventually got tested on this.&lt;/p&gt;
&lt;p&gt;The scene as detailed above has two interesting things about it: (a) there is absolutely nothing ironic about it and (b) it could never happen, as described, today.&lt;/p&gt;
&lt;p&gt;I am imagining this scene happening today: the teacher says “today, we will discuss irony.” Without fail, one of the brighter lights in the class says, “oh, it’s like rain on your wedding day.” The teacher visibly sighs, rolls her eyes, and explains how there is absolutely nothing ironic about rain on your wedding day. I am pretty sure this is more or less how it goes in every classroom around the world: everyone thinks they know what irony is, because of the song, and they’re all horribly, dreadfully mistaken.&lt;/p&gt;
&lt;p&gt;This is ironic. The ur-example, the immediate connection in our shared knowledge, of irony is a list of examples of things which are not ironic. I think that even if I tried, hard, I could not manage to associate something more ironic with the word ironic.&lt;/p&gt;
&lt;p&gt;Thank you, Alannis, for creating the most delicious irony of all, and ensuring that irony can never be mentioned without causing irony. The world is perfect once again.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/415/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/415/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=415&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Thomas Vander Stichele: Live WebM stream from GUADEC</title>
		<link rel="alternate" type="text/html" href="http://thomas.apestaart.org/log/?p=1195"/>
		<id>http://thomas.apestaart.org/log/?p=1195</id>
		<updated>2010-07-28T14:46:56+00:00</updated>
		<content type="html">&lt;p&gt;Six years ago, we did the first &lt;a href=&quot;http://developers.slashdot.org/story/04/06/29/2153229/Worlds-First-Large-Scale-Ogg-Theora-Stream&quot;&gt;large scale Ogg Theora stream&lt;/a&gt; from the 2004 GUADEC conference.&lt;/p&gt;
&lt;p&gt;It was a dime on its side to get things ready for this year.  I purposely removed myself from the organization, because for various reasons I’m not going to GUADEC this year, but I was hoping the rest of the company would do their part to get this working, and I just provided the necessary prodding along the way.  I’ve been told one of the organisers in charge of this got ill at some point and communication went a bit south during that period, so I had some complaints from our support guys that they had to do last-minute rushing.&lt;/p&gt;
&lt;p&gt;But the streams are live today, and a few developers here are giddily running around looking at the stream, the image, working on some typical bugs you get when you’re doing stuff like this for the first time (the artifacts on keyframes the encoder seems to have remind me a lot of the Theora bugs we had to squash back in the day, and obviously they are worse on still images, like, say, an empty conference room…)&lt;/p&gt;
&lt;p&gt;Go &lt;a href=&quot;http://www.flumotion.com/webm&quot;&gt;check out the stream&lt;/a&gt; and make sure you have a WebM-enabled browser, like the Firefox 4.0 beta or latest Opera.&lt;/p&gt;
&lt;p&gt;Congratulations to our intrepid hackers like Zaheer and Andoni for their hard work a few weeks ago on WebM, and I’ve been told Marc-André actually went to Holland just to deliver the encoders :)&lt;/p&gt;</content>
		<author>
			<name>Thomas</name>
			<uri>http://thomas.apestaart.org/log</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: Python 3</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/python-3.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-1104916405873983161</id>
		<updated>2010-07-26T23:40:28+00:00</updated>
		<content type="html">I would be much more sympathetic to the whole Python 3 endeavour if they had made a serious effort to keep the major 2.x releases mutually compatible.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-1104916405873983161?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: On Tautologies and Evolution</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/07/26/on-tautologies-and-evolution/"/>
		<id>http://moshez.wordpress.com/?p=412</id>
		<updated>2010-07-26T21:02:02+00:00</updated>
		<content type="html">&lt;p&gt;Many people dismiss evolution as “survival of the fittest is a tautology — the fittest are the ones who survive.”&lt;/p&gt;
&lt;p&gt;This is wrong for many reasons, but one of the problems with that is something I have yet to see among the writings of evolution. As is standard in defenses of evolution, I will begin my thesis with analogy to gravity. But before that, I would like to analyze what we mean by “tautology”. A “tautology” is something that is true by definition, or cannot be logically anything other than true. An example is “x=x”. X must always be equal to itself.&lt;/p&gt;
&lt;p&gt;Now, open a math journal. Any math journal. Choose a paper. Any paper. I will do it, now, by choosing a paper from arxiv.org (it’s not strictly a math journal, but close enough for what I have in mind):  I tried to be “random” about it by going to “new” and choosing the first one that I could half-way understand: &lt;a href=&quot;http://arxiv.org/abs/1007.4034&quot;&gt;All automorphisms of all Calkin algebras&lt;/a&gt;. As an aside, much like most readers of this, I’m not really qualified to judge it. But just reading the abstract, the author claims: “The Proper Forcing Axiom implies all automorphisms of every Calkin  algebra associated with an infinite-dimensional complex Hilbert space and the  ideal of compact operators are inner.” Assuming his proof is correct, this means that this thing that is fairly non-trivial to understand is a &lt;em&gt;tautology. &lt;/em&gt;I am willing to bet that even if you specialize in the field, the above was not obvious to you. In fact, this is true of any math paper: it is completely filled with tautologies, and is completely and utterly non-obvious.&lt;/p&gt;
&lt;p&gt;Let me give you another example of a tautology: given that the gravitational force is GMm/r**2, a “solar system” (one very heavy body and a bunch of significantly lighter bodies) will move in close approximations to ellipses (that is not an exact phrasing, but a proper estimate of the approximation is outside the real of this post). That is a tautology, and is also fairly non-trivial.&lt;/p&gt;
&lt;p&gt;Now, here is another: assuming that genes are passed in a mostly-faithful (small number of mutations) to the next generation, and that genes correlate to reproductive success, we expect to see “evolution”. This is a &lt;em&gt;mathematical &lt;/em&gt;theorem, in that the axiom can be modeled mathematically and “evolution” (meaning many of the phenomena under “evolutionary biology” such as exaptation, adaptation, complexity and variety) be proven. Note that the initial axiom is not a tautology: there is no a-priory logical reason to assume changes in an individual’s life-style won’t change their genetic code. However, the initial axiom, despite not being a tautology, meaning &lt;em&gt;logically true&lt;/em&gt;, is factually true: many experiments have been done on this. By the way, it’s as true as GMm/r**2: it’s a useful approximation, not the complete truth: there are epigenetic pressures on heredity. Just like in gravitation theory, we use a simple model to derive predictions, and the correlation of the predictions with the model gives us evidence that the model is true.&lt;/p&gt;
&lt;p&gt;Summary: a significant part of evolutionary biology &lt;em&gt;is &lt;/em&gt;a tautology. But tautology is not a bad word — it means that a significant part of biology is mathematics. This is good. Mathematical modeling is the best modeling.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/412/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/412/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=412&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: pyflakes-doctest</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/pyflakes-doctest.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-2949402571919150537</id>
		<updated>2010-07-20T13:08:10+00:00</updated>
		<content type="html">Someone at Canonical (I don't know who) wrote something cool once to get &lt;a href=&quot;http://divmod.org/trac/wiki/DivmodPyflakes&quot;&gt;Pyflakes&lt;/a&gt; (the best Python linter) to run on doctests.&lt;br /&gt;&lt;br /&gt;It has recently been deleted from the &lt;a href=&quot;https://code.launchpad.net/~launchpad-pqm/launchpad/stable&quot;&gt;Launchpad tree&lt;/a&gt;, but since it's so useful I thought I'd make it available.&lt;br /&gt;&lt;br /&gt;Download &lt;a href=&quot;http://people.canonical.com/~jml/pyflakes-doctest&quot;&gt;pyflakes-doctest&lt;/a&gt; whenever you'd like. If you can get it into Pyflakes trunk, then you'll become even more wonderfully, deliciously fabulous and creamy than you undoubtedly are already. Get rid of the Launchpad-specific stuff though.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-2949402571919150537?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Making the Web a More Secure Place</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/07/15/making-the-web-a-more-secure-place/"/>
		<id>http://moshez.wordpress.com/?p=409</id>
		<updated>2010-07-15T22:09:31+00:00</updated>
		<content type="html">&lt;p&gt;The current phishing attempts are ludicrously easy to mount, and they are this ludicrous because the current web’s security model is fundamentally broken.&lt;/p&gt;
&lt;p&gt;If Joe Q. Random discovers a new site (maybe a forum site dedicated to discussing cats — Mr. Random is a big cat afficionado), he needs to create an account. He creates a username, and a password, and will be asked to supply an e-mail address to confirm the registration. Random does so.&lt;/p&gt;
&lt;p&gt;Now, all someone needs to do to get Random’s credentials is to fake a Realistic Mail from SillyCatForum.com saying “someone has responded to your message. Click &amp;lt;here&amp;gt; to read the reply.” Random clicks, and is presented with the login screen. Random enters his credentials. What R. didn’t notice was that the link actually went to hackersrus.com. But two seconds later, he’s on the real SillyCatForum.com, mildly bemused by there not being a response to any of the messages. “Maybe someone deleted it, or something”, thinks Random, without a thought. Random’s cat-forum credentials are now in the hands of Hackers’R'Us. Security — failed. Faking the realistic e-mail is a child’s play — all someone from Hackers’R'Us needs to do is to create two accounts, reply from one to the other, and presto!, copy’n'paste the e-mail.&lt;/p&gt;
&lt;p&gt;“Why is Random clicking on things sent to him in the e-mail?” cry all those holier-than-thou security experts. Because, they seemed to have forgot, the web has trained him to do it. E-mailed links is the normal notification mechanism on the web.&lt;/p&gt;
&lt;p&gt;How can we solve this? Simple, do away with passwords.&lt;/p&gt;
&lt;p&gt;All sent links should contain “credential information” which will auto-log the user. If the user needs to log in, he can click for “send me credentials”, which will send him a credentialed link. E-mail providers can ask for a cellphone number, to which they will send a one-use (ONE USE) code, which will log the user in. They can also, on creation, ask for an address they can snail-mail a one-use code, in case the user loses his cellphone. (Naturally, you might have to pay for that — but on the off-chance that this happen, to your primary e-mail address, paying 10$ to restore it should be within the means of most people.)&lt;/p&gt;
&lt;p&gt;Of course, most sites should not even need that much. Just offer the chances of a Facebook Connect/Open ID log-in, and don’t even try asking for a “credentials”. Let someone else handle credentials for you.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/409/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/409/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=409&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Christopher Armstrong: How to send good unicode email with Python</title>
		<link rel="alternate" type="text/html" href="http://radix.twistedmatrix.com/2010/07/how-to-send-good-unicode-email-with.html"/>
		<id>tag:blogger.com,1999:blog-18669215.post-1308047756953312257</id>
		<updated>2010-07-15T16:16:51+00:00</updated>
		<content type="html">&lt;pre&gt;&lt;br /&gt;# coding: utf-8&lt;br /&gt;&lt;br /&gt;# Python's email API is simple and easy to use!!!!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;# Requirements:&lt;br /&gt;# * UTF-8 headers&lt;br /&gt;# * UTF-8 body&lt;br /&gt;# * prefer quoted-printable to base64 transfer-encoding.&lt;br /&gt;# * Don't escape &quot;From&quot; at the beginning of a line in the message - it's not&lt;br /&gt;#   the 1800s any more&lt;br /&gt;&lt;br /&gt;from cStringIO import StringIO&lt;br /&gt;from email.mime.multipart import MIMEMultipart&lt;br /&gt;from email.mime.text import MIMEText&lt;br /&gt;from email.header import Header&lt;br /&gt;from email import Charset&lt;br /&gt;from email.generator import Generator&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;subject = u'Hello あ'&lt;br /&gt;recipient = u'Bあb '&lt;br /&gt;from_address = u'Bかb '&lt;br /&gt;&lt;br /&gt;html = u'&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;Hey böb!\nFrom Jack, I got enhanced pills!&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;'&lt;br /&gt;text = u'Hey böb!\nFrom Jack, I got enhanced pills!'&lt;br /&gt;&lt;br /&gt;# Override python's weird assumption that utf-8 text should be encoded with&lt;br /&gt;# base64, and instead use quoted-printable (for both subject and body).  I&lt;br /&gt;# can't figure out a way to specify QP (quoted-printable) instead of base64 in&lt;br /&gt;# a way that doesn't modify global state. :-(&lt;br /&gt;Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# This example is of an email with text and html alternatives.&lt;br /&gt;multipart = MIMEMultipart('alternative')&lt;br /&gt;&lt;br /&gt;# We need to use Header objects here instead of just assigning the strings in&lt;br /&gt;# order to get our headers properly encoded (with QP).&lt;br /&gt;# You may want to avoid this if your headers are already ASCII, just so people&lt;br /&gt;# can read the raw message without getting a headache.&lt;br /&gt;multipart['Subject'] = Header(subject.encode('utf-8'), 'UTF-8').encode()&lt;br /&gt;multipart['To'] = Header(recipient.encode('utf-8'), 'UTF-8').encode()&lt;br /&gt;multipart['From'] = Header(from_address.encode('utf-8'), 'UTF-8').encode()&lt;br /&gt;&lt;br /&gt;# Attach the parts with the given encodings.&lt;br /&gt;htmlpart = MIMEText(html.encode('utf-8'), 'html', 'UTF-8')&lt;br /&gt;multipart.attach(htmlpart)&lt;br /&gt;textpart = MIMEText(text.encode('utf-8'), 'plain', 'UTF-8')&lt;br /&gt;multipart.attach(textpart)&lt;br /&gt;&lt;br /&gt;# And here we have to instantiate a Generator object to convert the multipart&lt;br /&gt;# object to a string (can't use multipart.as_string, because that escapes&lt;br /&gt;# &quot;From&quot; lines).&lt;br /&gt;&lt;br /&gt;io = StringIO()&lt;br /&gt;g = Generator(io, False) # second argument means &quot;should I mangle From?&quot;&lt;br /&gt;g.flatten(multipart)&lt;br /&gt;&lt;br /&gt;# Pass the result of this to your SMTP library of choice.&lt;br /&gt;print io.getvalue()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;edited: The last part in a multipart message is the preferred one, so I moved the HTML part to the bottom.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;edited AGAIN: I found out that in order to avoid ridiculous &quot;From&quot; quoting, I needed to use a Generator object instead of multipart.as_string().&lt;/em&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/18669215-1308047756953312257?l=radix.twistedmatrix.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Christopher Armstrong (noreply@blogger.com)</name>
			<uri>http://radix.twistedmatrix.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Twisted Matrix Laboratories: Sponsored Development, July 2010</title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TwistedMatrixLaboratories/~3/RE6zqy6UVCY/sponsored-development-july-2010_12.html"/>
		<id>tag:blogger.com,1999:blog-1267458971896358542.post-5408848478313864761</id>
		<updated>2010-07-12T19:47:25+00:00</updated>
		<content type="html">Hello readers,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's that time once again.  I've just spent a very productive two weeks dedicated to Twisted developments, thanks to the support of the Twisted sponsors and the Software Freedom Conservancy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There were quite a few tickets to review when I got started this time.  Here's the list (italicised tickets are now resolved):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;#411 - Returning a Deferred from the callback of another Deferred too many times results a RecursionError&lt;/div&gt;&lt;div&gt;&lt;i&gt;#1384 - Document the meaning of trial's terminal output stanza&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#1702 - Kill Defer.setTimeout&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#2485 - 2to3 cross-compilation tools&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#2661 - Deprecate IFinishableConsumer so it can be deleted&lt;/div&gt;&lt;div&gt;&lt;i&gt;#2680 - abdapi ConnectionPool doesn't allow for synchronous close&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#3546 - Add custom time zone support to twisted.log.FileLogObserver&lt;/div&gt;&lt;div&gt;#3586 - I want to install twisted without a c compiler&lt;/div&gt;&lt;div&gt;#3802 - win32 SerialPort requires a reactor that provides &quot;addEvent&quot; method, but doesn't have a good error message if it gets a different one&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4038 - DeprecationWarning: the MimeWriter module is deprecated; use the email package instead&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4045 - Twisted's Failure fake '_Frame' object lacks f_locals&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4138 - A fresh Twisted checkout should support &quot;setup.py sdist&quot;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4299 - Remove deprecated twisted.web.trp&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4328 - Deprecate twisted.python.text.docstringLStrip&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4378 - Error handling in NetstringReceiver broken&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4419 - IRCClient.noticed() default is prone to causing loops&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4477 - UNIX ports fail to log their path when stopped&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4511 - trial(1) man page says &quot;I don't know why this is in trial.&quot; for --disablegc&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4519 - Delay parsing of request body until Request.args is accessed&lt;/div&gt;&lt;div&gt;#4520 - pb.CopiedFailure.throwExceptionIntoGenerator breaks in Python 2.6.&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4522 - Speed up `reactor.spawnProcess()` by only closing open file descriptors&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4527 - Change either documentation or code of t.i.test.reactormixins.ReactorBuilder.requiredInterface&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4531 - Static analysis of module attributes in twisted.python.modules&lt;/div&gt;&lt;div&gt;#4536 - Credentials materials are compared unsafely throughout Twisted&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4540 - t.n.hosts.searchFileFor does not close the file&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4555 - Replace loop-like uses of map() with a loop&lt;/div&gt;&lt;div&gt;#4566 - Improve lore2sphinx buildbot results for `projects/conch`&lt;/div&gt;&lt;div&gt;#4567 - Improve lore2sphinx buildbot results for `projects/core/development`&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Additionally, I had lots of time to spend worked on other tickets:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt;#526 - [PATCH] make t.w.microdom respect case sensitivity&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#989 - Default log observer chokes on unicode messages&lt;/div&gt;&lt;div&gt;#1784 - disttrial --hosts=kunai,takkun,muon twisted&lt;/div&gt;&lt;div&gt;#2179 - Parameterize the root directory of the FTP server for non-anonymous logins&lt;/div&gt;&lt;div&gt;#3169 - Add FilePath.descendant(segmentsToChild) to replace fp.child(a).child(b).child(c)&lt;/div&gt;&lt;div&gt;#3242 - use python 2.5 'spwd' module instead of z3p secret 'shadow' module when available&lt;/div&gt;&lt;div&gt;&lt;i&gt;#3595 - the interaction of the fireOnOneErrback and consumeErrors parameters to DeferredList is not well documented&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#3690 - SerialPort never calls connectionLost(reason)&lt;/div&gt;&lt;div&gt;#4300 - Write some unit tests for Deferreds&lt;/div&gt;&lt;div&gt;#4473 - strports.endpoint&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4487 - report multiple tests with the same results at the same time&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4492 - deprecatedModuleAttribute emits warning twice when deprecated module is imported&lt;/div&gt;&lt;div&gt;#4494 - FTPRealm home directory code hardcodes '/home'&lt;/div&gt;&lt;div&gt;#4500 - Use Sphinx for Twisted Documentation&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4501 - trial's error reporting (especially --tbformat=emacs) does not like unicode exceptions&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4503 - domish gets confused by spaces in xmlns names&lt;/div&gt;&lt;div&gt;#4504 - Document reactor.listenMulticast's listenMultiple keyword argument&lt;/div&gt;&lt;div&gt;#4513 - twisted.names server sends incorrect authority section&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4517 - documentation for blockingCallFromThread doesn't exactly say the given callable can return a Deferred&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#4528 - t.news.database should use t.m.smtp.sendmail and the email package&lt;/div&gt;&lt;div&gt;#4534 - Update twisted.application.service.IProcess to use Attributes&lt;/div&gt;&lt;div&gt;#4535 - zippath.child('..') does not raise InsecurePath&lt;/div&gt;&lt;div&gt;#4536 - Credentials materials are compared unsafely throughout Twisted&lt;/div&gt;&lt;div&gt;#4539 - fileno() gets called on a ReadDescriptor after removing it from the reactor&lt;/div&gt;&lt;div&gt;#4542 - `LineReceiver` API documentation should indicate when delimiter is stripped etc&lt;/div&gt;&lt;div&gt;&lt;i&gt;#4556 - KQueue reactor misspelled in reactorbuilder&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;You can find more details about these tickets in the Twisted issue tracker. To look up a ticket, visit http://twistedmatrix.com/trac/ticket/ticketnumber. For example, &lt;a href=&quot;http://twistedmatrix.com/trac/ticket/4487&quot;&gt;http://twistedmatrix.com/trac/ticket/4487&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many of these which are still open are now up for review and should be closed over the next few weeks as other developers have a chance to take a look and provide feedback.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A careful reading of this list reveals a few tickets related to our attempts to convert Twisted's documentation from Lore to Sphinx, an undertaking you already know about if you follow the Twisted mailing list.  Kevin Horn has spearheaded this project and made great progress towards the goal.  Even though the conversion isn't complete yet, there's already &lt;a href=&quot;http://buildbot.twistedmatrix.com/builds/sphinx-html-15620/&quot;&gt;some really great looking results&lt;/a&gt;.  &lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/1267458971896358542-5408848478313864761?l=labs.twistedmatrix.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TwistedMatrixLaboratories/~4/RE6zqy6UVCY&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jean-Paul Calderone (noreply@blogger.com)</name>
			<uri>http://labs.twistedmatrix.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: Documentation again</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/documentation-again.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-6578216469253588694</id>
		<updated>2010-07-06T13:14:32+00:00</updated>
		<content type="html">Documenting your code is &lt;i&gt;not&lt;/i&gt; important. Well-documented code is not a thing to be desired nor a goal to be sought. A lack of documentation is not a problem to be solved. Everyone who tells you otherwise is lying.&lt;br /&gt;&lt;br /&gt;What &lt;i&gt;is&lt;/i&gt; important is that other programmers can easily understand your code and the intent behind it, and that &lt;i&gt;you&lt;/i&gt; can understand the code and the intent six months later.&lt;br /&gt;&lt;br /&gt;Documenting your code is merely a way of achieving that. It might even be necessary for it. But do not confuse interface with implementation and do not confuse what you want with how to get it.&lt;br /&gt;&lt;br /&gt;Solve the problem of confusing, opaque code. Aim for code that can be easily understood. Document if necessary.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot; class=&quot;Apple-style-span&quot;&gt;(it's pretty much always necessary)&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-6578216469253588694?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: When do you start testing?</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/when-do-you-start-testing.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-2724073164817561716</id>
		<updated>2010-07-05T14:17:37+00:00</updated>
		<content type="html">Although I love TDD, I don't always use it for everything. I wrote a Python script the other day to clean up my music collection, and I didn't write any tests for it.&lt;br /&gt;&lt;br /&gt;Someone asked me, what's the trade-off? At what point do you start writing tests?&lt;br /&gt;&lt;br /&gt;For me, it's at one of a few points:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Somewhere between 100-200 lines of code I start feeling the need for tests&lt;/li&gt;&lt;li&gt;When I start feeling unclear in my head, I reach to tests to make them clear&lt;/li&gt;&lt;li&gt;If someone wants to work with me, tests instantly become mandatory&lt;/li&gt;&lt;li&gt;When I come back to some code after a while&lt;/li&gt;&lt;li&gt;When I notice my first bug&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;What about you? Do you always do TDD? Do you have any rules-of-thumb for when you do?&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-2724073164817561716?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Twisted Matrix Laboratories: Twisted 10.1.0 released</title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TwistedMatrixLaboratories/~3/OpeyO26bm40/twisted-1010-released.html"/>
		<id>tag:blogger.com,1999:blog-1267458971896358542.post-8163627821172391535</id>
		<updated>2010-07-05T13:19:24+00:00</updated>
		<content type="html">Twisted 10.1.0 is finally out. It's a month late, but it's finally out there and free from the shackles of British rule.&lt;br /&gt;
&lt;br /&gt;
Highlights include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Deferreds now support cancellation&lt;/li&gt;
&lt;li&gt;A new &quot;endpoint&quot; interface which can abstractly describe stream transport endpoints such as TCP and SSL&lt;/li&gt;
&lt;li&gt;inotify support for Linux, which allows monitoring of file system events.&lt;/li&gt;
&lt;li&gt;AMP supports transferring timestamps&lt;/li&gt;
&lt;/ul&gt;Note also that this is the &lt;i&gt;last&lt;/i&gt; release in which we will support Windows for Python 2.4.&lt;br /&gt;
&lt;br /&gt;
For more information, see the &lt;a href=&quot;http://twistedmatrix.com/trac/export/29337/branches/releases/release-10.1.0-4509/NEWS&quot;&gt;NEWS&lt;/a&gt; file.&lt;br /&gt;
&lt;br /&gt;
It's stable, backwards compatible, well tested and in every way an improvement. Download it the &lt;a href=&quot;http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.tar.bz2&quot;&gt;tarball&lt;/a&gt;, the &lt;a href=&quot;http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.winxp32-py2.5.msi&quot;&gt;Windows installer for Python 2.5&lt;/a&gt; or the &lt;a href=&quot;http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.winxp32-py2.6.msi&quot;&gt;Windows installer for Python 2.6&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt; We now have executable Windows installers for &lt;a href=&quot;http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.winxp32-py2.5.exe&quot;&gt;Python 2.5&lt;/a&gt; and &lt;a href=&quot;http://tmrc.mit.edu/mirror/twisted/Twisted/10.1/Twisted-10.1.0.winxp32-py2.6.exe&quot;&gt;Python 2.6&lt;/a&gt; to complement the MSIs.&lt;br /&gt;
&lt;br /&gt;
Many thanks to Glyph Lefkowitz, who helped prepare the release, and the PyCon 2010 sprinters, who did so much of the work for this release.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/1267458971896358542-8163627821172391535?l=labs.twistedmatrix.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TwistedMatrixLaboratories/~4/OpeyO26bm40&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://labs.twistedmatrix.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: Releasing Twisted, and procedure in general</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/07/releasing-twisted-and-procedure-in.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-7160754320312190972</id>
		<updated>2010-07-04T13:45:43+00:00</updated>
		<content type="html">I'm in the middle of releasing &lt;a href=&quot;http://twistedmatrix.com/&quot;&gt;Twisted&lt;/a&gt; 10.1, following the &lt;a href=&quot;http://twistedmatrix.com/trac/wiki/ReleaseProcess&quot;&gt;procedure document&lt;/a&gt; that I wrote when I released &lt;a href=&quot;http://labs.twistedmatrix.com/2010/03/twisted-1000-released.html&quot;&gt;Twisted 10.0&lt;/a&gt;. Having everything written down has been a wonderful aide so far, but doing the release twice has made me think about what it takes to breathe life into old procedure.&lt;br /&gt;&lt;br /&gt;The very first step has already been taken, &lt;i&gt;figure out what the process is and write it down.&lt;/i&gt; There are still some bits that are unknown and hazy, but I expect they'll be clear by the time we're done. Anyway, writing things down is only the beginning, after that, there are two things that I think we ought to do roughly concurrently.&lt;br /&gt;&lt;br /&gt;The first is &lt;i&gt;automate the existing procedure &lt;/i&gt;for which here are already &lt;a href=&quot;http://twistedmatrix.com/trac/query?status=assigned&amp;amp;status=new&amp;amp;status=reopened&amp;amp;group=status&amp;amp;milestone=regular-releases&quot;&gt;many tickets filed&lt;/a&gt;, and the second is &lt;i&gt;simplify the process itself&lt;/i&gt;. Are all of the steps in the process really needed? Why do we have so many tarballs? Why upload the tarballs to a server that is only periodically mirrored by the actual official download location? Why generate a PDF?&lt;br /&gt;&lt;br /&gt;I don't want to start a discussion on the details here, but rather raise the need for Twisted to begin considering this simplification, and for myself to begin articulating some of my own thoughts about process in general.&lt;br /&gt;&lt;br /&gt;The final, on-going step in revitalizing procedure is to &lt;i&gt;delegate the task&lt;/i&gt;, either to another human being or better yet a machine. I wonder if it would be possible to have the Twisted release done by a monthly cronjob?&lt;br /&gt;&lt;br /&gt;In summary, to revive an existing process:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Figure out what the process is and write it down&lt;/li&gt;&lt;li&gt;Simplify the process itself, reducing the number of steps&lt;/li&gt;&lt;li&gt;Automate as many of the steps as possible, thus combining them&lt;/li&gt;&lt;li&gt;Delegate the execution of the process&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-7160754320312190972?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Moshe Zadka: Apples vs. Oranges</title>
		<link rel="alternate" type="text/html" href="http://moshez.wordpress.com/2010/07/02/apples-vs-oranges/"/>
		<id>http://moshez.wordpress.com/?p=405</id>
		<updated>2010-07-02T18:38:55+00:00</updated>
		<content type="html">&lt;p&gt;Similarities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both are fruit&lt;/li&gt;
&lt;li&gt;Both have about the same caloric value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Orange advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Significantly more vitamin C&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apple advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not require peeling&lt;/li&gt;
&lt;li&gt;Bakes well&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Warning: if I ever see you saying “it’s like comparing apples and oranges”, I will link you to this post.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/facebook/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/twitter/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/moshez.wordpress.com/405/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/moshez.wordpress.com/405/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=moshez.wordpress.com&amp;amp;blog=2210753&amp;amp;post=405&amp;amp;subd=moshez&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>moshez</name>
			<uri>http://moshez.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Thomas Vander Stichele: Dell R815 power draw</title>
		<link rel="alternate" type="text/html" href="http://thomas.apestaart.org/log/?p=1193"/>
		<id>http://thomas.apestaart.org/log/?p=1193</id>
		<updated>2010-06-30T16:43:04+00:00</updated>
		<content type="html">&lt;p&gt;Dear intarweb,&lt;/p&gt;
&lt;p&gt;I’ve been searching all over for data on what these fancy Dell R815 servers (which can house 4 12-core Opteron CPU’s for a total of 48 cores in 2U) draw in terms of power.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://support.dell.com/support/topics/topic.aspx/la/shared/support/en/data_capacity?c=gd&amp;amp;l=en&amp;amp;s=gen&quot;&gt;This handy capacity planner&lt;/a&gt; from Dell doesn’t have this machine listed yet.&lt;/p&gt;
&lt;p&gt;Anyone out there know where I can find this info, or have one of these babies actually running ?&lt;/p&gt;</content>
		<author>
			<name>Thomas</name>
			<uri>http://thomas.apestaart.org/log</uri>
		</author>
	</entry>

	<entry>
		<title>Stephen Thorne: The Days of Horror Story</title>
		<link rel="alternate" type="text/html" href="http://shiny.thorne.id.au/2010/06/days-of-horry-story.html"/>
		<id>tag:blogger.com,1999:blog-21652080.post-7595284745438169645</id>
		<updated>2010-06-29T22:36:42+00:00</updated>
		<content type="html">Quite a while ago, I wrote out some of my experiences at a previous employer, as a cathartic release on the tension they caused me. It helped a lot,&lt;br /&gt;&lt;br /&gt;Todays &lt;a href=&quot;http://thedailywtf.com/Articles/Got_Time_0x3f_.aspx&quot;&gt;The Daily WTF&lt;/a&gt; titled &quot;Got Time?&quot; reminded me of one of those horrible hacks I had to deal with when I was there.&lt;br /&gt;&lt;br /&gt;We used to have one of those business rules. &quot;X business days from now&quot;. Where weekends, and national public holidays, were not considered &quot;business days&quot;. Because this business rule was observed in the Oracle Forms interface that was used by our operations staff, a way to take now() + N business days was needed.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;# select * from days_of_week order by num;&lt;br /&gt; day_of_week num&lt;br /&gt; ----------- ---&lt;br /&gt;...&lt;br /&gt; 31/07/2005  401  &lt;br /&gt; 01/08/2005  &lt;br /&gt; 02/08/2005  &lt;br /&gt; 03/08/2005  402&lt;br /&gt; 04/08/2005  403&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this entirely ficticious example from my memory of this table, that's what the data looked like. All saturdays and sundays and public holidays were listed in the table with a blank 'num'. To find a date 10 business days from now, you would do: &lt;code&gt;select day_of_week from days_of_week where num = (select num from days_of_week where day_of_week = today()) + 10&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Every so often we would &quot;run out of days&quot; and an email would be sent. Then a script would be written to add another batch of days to the table, then we'd be good until we run out again...&lt;br /&gt;&lt;br /&gt;I've been at my current employer for over 5 years now, and am extremely happy I left tripe like what I've just dredged out of my memory behind.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/21652080-7595284745438169645?l=shiny.thorne.id.au&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Stephen Thorne (noreply@blogger.com)</name>
			<uri>http://shiny.thorne.id.au/</uri>
		</author>
	</entry>

	<entry>
		<title>Jonathan Lange: Better than a pie chart</title>
		<link rel="alternate" type="text/html" href="http://code.mumak.net/2010/06/better-than-pie-chart.html"/>
		<id>tag:blogger.com,1999:blog-5733547231775030285.post-8600022338599499263</id>
		<updated>2010-06-25T11:26:11+00:00</updated>
		<content type="html">The bugs page for projects on Launchpad used to have a really ugly pie chart on them. It was a strange little graph,  useful because it helped you feel like you were making progress as you pushed bugs from New to Triaged to In-progress to Fix Committed and then off the chart completely with Fix Released.&lt;br /&gt;&lt;br /&gt;Pie charts suck though. They use two dimensions to represent one dimension of data, and they are always 100% full. In the case of bugs, there was no way to tell from the pie chart whether there were more or fewer bugs than last week.&lt;br /&gt;&lt;br /&gt;Inspired by some sketches from mpt, I decided to implement what I think would be a nice graph to have on Launchpad, but to do so using the &lt;a href=&quot;https://help.launchpad.net/API&quot;&gt;webservice API&lt;/a&gt;. I've put some code up on &lt;a href=&quot;https://edge.launchpad.net/everyday&quot;&gt;lp:everyday&lt;/a&gt;, and there's &lt;a href=&quot;http://people.canonical.com/~jml/convergence/&quot;&gt;an example of the graph for the whole Launchpad project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The code works by sucking down all of the bug tasks associated with a project over the API, then storing them in a desktopcouch database, then using that to generate some timeline data. The graph is made using &lt;a href=&quot;http://code.google.com/p/flot/&quot;&gt;flot&lt;/a&gt;, which is excellent.&lt;br /&gt;&lt;br /&gt;For those of you who care about Launchpad API details, I've recently added a parameter to &lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;https://edge.launchpad.net/+apidoc/devel.html#bug_target&quot;&gt;searchTasks&lt;/a&gt;&lt;/span&gt; called &lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;modified_since&lt;/span&gt; that lets you &lt;a href=&quot;https://bugs.edge.launchpad.net/malone/+bug/590535&quot;&gt;fetch only bug tasks for bugs that have changed since a particular date&lt;/a&gt;. It makes syncing so much faster.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5733547231775030285-8600022338599499263?l=code.mumak.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://code.mumak.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Jp Calderone: filepath 0.1</title>
		<link rel="alternate" type="text/html" href="http://jcalderone.livejournal.com/56137.html"/>
		<id>http://jcalderone.livejournal.com/56137.html</id>
		<updated>2010-06-24T01:57:08+00:00</updated>
		<content type="html">Hello all,&lt;br /&gt;&lt;br /&gt;I'm happy to announce the initial release of filepath.&lt;br /&gt;&lt;br /&gt;filepath is an abstract interface to the filesystem.  It provides APIs for path name manipulation and for inspecting and modifying the filesystem (for example, renaming files, reading from them, etc).  filepath's APIs are intended to be easier than those of the standard library os.path module to use correctly and safely.&lt;br /&gt;&lt;br /&gt;filepath is a re-packaging of the twisted.python.filepath module independent from Twisted (except for the test suite which still depends on Twisted Trial).&lt;br /&gt;&lt;br /&gt;The low number of this release reflects the newness of this packaging.  The implementation is almost entirely mature and well tested in real-world situations from its time as part of Twisted.&lt;br /&gt;&lt;br /&gt;You can find the package on PyPI or Launchpad:&lt;br /&gt;&lt;br /&gt;    &lt;a href=&quot;http://pypi.python.org/pypi/filepath/0.1&quot;&gt;http://pypi.python.org/pypi/filepath/0.1&lt;/a&gt;&lt;br /&gt;    &lt;a href=&quot;https://launchpad.net/filepath&quot;&gt;https://launchpad.net/filepath&lt;/a&gt;</content>
		<author>
			<name>Jp Calderone</name>
			<uri>http://jcalderone.livejournal.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Jp Calderone: python-signalfd 0.1</title>
		<link rel="alternate" type="text/html" href="http://jcalderone.livejournal.com/56009.html"/>
		<id>http://jcalderone.livejournal.com/56009.html</id>
		<updated>2010-06-21T22:37:30+00:00</updated>
		<content type="html">Hello all,&lt;br /&gt;&lt;br /&gt;I'm happy to announce the initial release of python-signalfd.  This simple package wraps the sigprocmask(2) and signalfd(2) calls, useful for interacting with POSIX signals in slightly more advanced ways than can be done with the built-in signal module.&lt;br /&gt;&lt;br /&gt;You can find the package on PyPI or Launchpad:&lt;br /&gt;&lt;br /&gt;   &lt;a href=&quot;http://pypi.python.org/pypi/python-signalfd/0.1&quot;&gt;http://pypi.python.org/pypi/python-signalfd/0.1&lt;/a&gt;&lt;br /&gt;   &lt;a href=&quot;https://launchpad.net/python-signalfd&quot;&gt;https://launchpad.net/python-signalfd&lt;/a&gt;</content>
		<author>
			<name>Jp Calderone</name>
			<uri>http://jcalderone.livejournal.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Thomas Vander Stichele: Low cost per core</title>
		<link rel="alternate" type="text/html" href="http://thomas.apestaart.org/log/?p=1191"/>
		<id>http://thomas.apestaart.org/log/?p=1191</id>
		<updated>2010-06-21T11:16:19+00:00</updated>
		<content type="html">&lt;p&gt;For work, I’m re-reviewing servers and systems with the simple-but-not-easy goal of lowering the basic monthly cost per core.  The world of racks, servers, CPU’s and cores is a more complicated place than it was a few years ago, since in a few U’s you can put anything from a bunch of small cheap servers up to monster boards with four CPU sockets and 12 core CPU’s for a total of 48 CPU’s in a 2U space.  And a look at a Blade system still makes me drool, although I’m still not sure in what case a Blade really makes sense.&lt;/p&gt;
&lt;p&gt;In any case, I tried to do a little comparison (which is hard, because you end up comparing apples and oranges) using Dell’s online configurator.&lt;/p&gt;
&lt;p&gt;On the one hand, filling racks with Poweredge R810, 4 x 8 core 1.86 GHz, Intel XeonL7555 machines, gets the price down 26 euro per core per month.  Doing the same with Opterons, which surely aren’t as powerful as the Intel ones, I can get a Poweredge R815, 48 cores quad Opteron 2.2 GHz, 6174, for 48 cores total, at 9.53 euro per core per month.&lt;/p&gt;
&lt;p&gt;And then I thought a Blade would be an even better deal, but it turns out that it isn’t really.  The cost per core, with similar CPU’s, really did come out pretty much the same as the R810 based solution.  Probably not that surprising in the end since if you fill a machine with cores, the CPU cost will start dominating.  But somehow I thought that Blades would end up being cheaper for maximum core power.&lt;/p&gt;
&lt;p&gt;Maybe I’m approaching this the wrong way ? If the main concern is cost per core in a datacenter, how would you go about selecting systems ?&lt;/p&gt;</content>
		<author>
			<name>Thomas</name>
			<uri>http://thomas.apestaart.org/log</uri>
		</author>
	</entry>

	<entry>
		<title>Itamar Shtull-Trauring: A hero for our time</title>
		<link rel="alternate" type="text/html" href="http://sikritinfo.blogspot.com/2010/06/hero-for-our-time.html"/>
		<id>tag:blogger.com,1999:blog-5374469488279884588.post-3079077200925805047</id>
		<updated>2010-06-21T01:51:47+00:00</updated>
		<content type="html">I grew up in Kochav-Yair, an Israeli town named after Avraham &quot;Yair&quot; Stern. When an Israeli minister gives a speech &lt;a href=&quot;http://www.haaretz.com/news/national/vice-premier-israeli-left-has-a-distorted-view-of-zionism-1.297287&quot;&gt;extolling Stern's memory&lt;/a&gt;, I can't help read and wonder:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&quot;Stern's words of eternal dedication and national Jewish pride have been contaminated in public discourse. They have been turned from words of national consensus to negative remarks seen as 'extreme' and 'uneducated.'&quot;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In 1940 Stern founded a militant organization -- terrorist, even, to his enemies -- dedicated to fighting the British rulers of Palestine and founding a Jewish State. When Ayalon, Israel's Minister of Strategic Affairs, thinks of this eternal dedication and national Jewish pride, was he thinking of Stern's attempted negotiations with the Nazis (before the Final Solution, to be true) who were after all fighting the hated British? Or Stern's organization's participation in the massacre of Palestinian civilians in the town of Deir Yassin?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5374469488279884588-3079077200925805047?l=sikritinfo.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Itamar Turner-Trauring (noreply@blogger.com)</name>
			<uri>http://sikritinfo.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Twisted Matrix Laboratories: Twisted 10.1.0pre1 released – please test</title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TwistedMatrixLaboratories/~3/eoTZsPOsaVU/twisted-1010pre1-released-please-test.html"/>
		<id>tag:blogger.com,1999:blog-1267458971896358542.post-2363738719788926634</id>
		<updated>2010-06-19T12:47:35+00:00</updated>
		<content type="html">From the dank and grey depths of a London summer, a thin, reedy voice wanders across the waves of the Internet, saying that it's jolly well pleased to announce the first 10.1.0 pre-release.&lt;br /&gt;
&lt;br /&gt;
We would very much appreciate it if you could &lt;a href=&quot;http://people.canonical.com/~jml/Twisted/10.1.0pre1/&quot;&gt;download the tarballs&lt;/a&gt;, test them on your systems, and &lt;a href=&quot;http://twistedmatrix.com/trac/newticket&quot;&gt;file tickets&lt;/a&gt; as appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlights include:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Deferreds now support cancellation&lt;/li&gt;
&lt;li&gt;A new &quot;endpoint&quot; interface which can abstractly describe stream transport endpoints such as TCP and SSL&lt;/li&gt;
&lt;li&gt;inotify support for Linux, which allows monitoring of file system events.&lt;/li&gt;
&lt;li&gt;AMP supports transferring timestamps&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
For more information, see the &lt;a href=&quot;http://twistedmatrix.com/trac/export/29337/branches/releases/release-10.1.0-4509/NEWS&quot;&gt;NEWS&lt;/a&gt; file.&lt;br /&gt;
&lt;br /&gt;
If there is only positive feedback from the pre-release, we aim to do the final release some time later this month.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/1267458971896358542-2363738719788926634?l=labs.twistedmatrix.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TwistedMatrixLaboratories/~4/eoTZsPOsaVU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jml (noreply@blogger.com)</name>
			<uri>http://labs.twistedmatrix.com/</uri>
		</author>
	</entry>

</feed>
