<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkcAQn09eCp7ImA9WhBbFks.&quot;"><id>tag:blogger.com,1999:blog-496482</id><updated>2013-05-15T19:20:43.360-04:00</updated><category term="barcamp" /><category term="teamwork" /><category term="flash" /><category term="solution" /><category term="habit" /><category term="ironpython" /><category term="alerts" /><category term="news" /><category term="bug" /><category term="free" /><category term="sender" /><category term="strategy" /><category term="obvious(ish)" /><category term="community" /><category term="customer" /><category term="privacy" /><category term="proposal" /><category term="poll" /><category term="time management" /><category term="AdWords" /><category term="pycon" /><category term="lodgenet" /><category term="sprint" /><category term="eff" /><category term="daschle" /><category term="Bruce Eckel" /><category term="personality" /><category term="bicycle shed" /><category term="action" /><category term="commercialization" /><category term="classes" /><category term="turbogears" /><category term="youth" /><category term="oreilly" /><category term="michael foord" /><category term="email" /><category term="defects" /><category term="parking" /><category term="myspace" /><category term="registration" /><category term="carrier iq" /><category term="evil" /><category term="xhtml" /><category term="greed" /><category term="fraud" /><category term="chairman" /><category term="selfishness" /><category term="kitten" /><category term="olpc" /><category term="java" /><category term="brain tumor" /><category term="talk" /><category term="ssh-agent" /><category term="maker" /><category term="graphics" /><category term="memorial day" /><category term="government" /><category term="legal" /><category term="email service" /><category term="mailing list" /><category term="shyster" /><category term="accident" /><category term="django" /><category term="ideas" /><category term="apple macbook air" /><category term="networking" /><category term="australia" /><category term="patents" /><category term="Open Bastion" /><category term="sacrifice" /><category term="delicious" /><category term="grauniad" /><category term="dirty work at the crossroads" /><category term="bicking" /><category term="design" /><category term="meetings" /><category term="ubuntu" /><category term="california" /><category term="chandler" /><category term="blogging" /><category term="jeff rush" /><category term="immunity" /><category term="conferences" /><category term="evangelism" /><category term=".NET" /><category term="february" /><category term="whimsy" /><category term="technology" /><category term="slides" /><category term="irritation" /><category term="hostility" /><category term="smtp" /><category term="microsofct sharepoint liveid fail" /><category term="podcast" /><category term="democracy" /><category term="tribulations" /><category term="sensitivity" /><category term="annoyance" /><category term="decorator" /><category term="wayback machine" /><category term="template" /><category term="arrogance" /><category term="market failure" /><category term="censorship" /><category term="larry ellison" /><category term="incompetence" /><category term="sound" /><category term="lazyweb" /><category term="survey" /><category term="charity" /><category term="wsgi" /><category term="animation" /><category term="water supply" /><category term="computer" /><category term="polymorphism" /><category term="programming language" /><category term="image" /><category term="code" /><category term="windows filenames etc googlewiki" /><category term="new york" /><category term="virtualenv" /><category term="space war" /><category term="iPython" /><category term="driver" /><category term="coverage" /><category term="goscon" /><category term="charts" /><category term="threat" /><category term="diversity" /><category term="yorkshire" /><category term="finally" /><category term="processor" /><category term="howto" /><category term="apology" /><category term="startup" /><category term="thanks" /><category term="program" /><category term="implementation" /><category term="files" /><category term="music" /><category term="ellison" /><category term="open space" /><category term="fans" /><category term="idiocy" /><category term="trickery" /><category term="readership" /><category term="google groups" /><category term="lending" /><category term="turing" /><category term="print" /><category term="geospatial" /><category term="interaction" /><category term="childbirth" /><category term="source alliance" /><category term="telecommunications" /><category term="twitter" /><category term="portland" /><category term="anarchy" /><category term="samba" /><category term="index" /><category term="mathematics" /><category term="standards" /><category term="humanity" /><category term="associate" /><category term="clickspam" /><category term="fear" /><category term="photo meme" /><category term="health" /><category term="writing" /><category term="gmail" /><category term="management" /><category term="pictures" /><category term="plans" /><category term="deadline" /><category term="seth. godin" /><category term="python." /><category term="magazine" /><category term="finance" /><category term="documentation" /><category term="web" /><category term="commercial" /><category term="takeover" /><category term="art" /><category term="disk" /><category term="distortion" /><category term="agility" /><category term="philanthtropy" /><category term="norton" /><category term="freedom" /><category term="presentation" /><category term="altruism" /><category term="exceptions" /><category term="blubream" /><category term="noller" /><category term="applications" /><category term="iniquity" /><category term="Holden Web" /><category term="sloppiness" /><category term="third world" /><category term="python secret underg..." /><category term="stumble" /><category term="djangocon" /><category term="journal" /><category term="LinkedIn" /><category term="reader survey" /><category term="function" /><category term="installer" /><category term="self-esteem" /><category term="sorry" /><category term="performance" /><category term="frustration" /><category term="tv" /><category term="SourceForge" /><category term="associated press" /><category term="review" /><category term="acquisition" /><category term="market research" /><category term="mysql" /><category term="lightning" /><category term="psf" /><category term="seminar" /><category term="keynote" /><category term="coin" /><category term="sim city" /><category term="postmaster" /><category term="toolbar" /><category term="language" /><category term="fairness" /><category term="midwest" /><category term="sample" /><category term="gaming" /><category term="technology trends" /><category term="airline" /><category term="pragmatism" /><category term="bankruptcy" /><category term="flying" /><category term="compliments" /><category term="android" /><category term="nomination" /><category term="integration" /><category term="dynamic languages" /><category term="try" /><category term="transparency" /><category term="intel" /><category term="software" /><category term="common sense" /><category term="market" /><category term="editing" /><category term="requirements" /><category term="redundancy" /><category term="release" /><category term="exploit" /><category term="journalism" /><category term="dishonesty" /><category term="bugzilla" /><category term="parsimony" /><category term="annoyances" /><category term="glitch" /><category term="users" /><category term="test-driven" /><category term="vigilante" /><category term="public" /><category term="javascript" /><category term="documents" /><category term="congress" /><category term="blender" /><category term="change" /><category term="web development" /><category term="social" /><category term="rapture for the geeks" /><category term="nntp" /><category term="pacific" /><category term="logistics" /><category term="help" /><category term="senate" /><category term="switch" /><category term="kiva" /><category term="Richard Gruet" /><category term="archive" /><category term="news corporation" /><category term="jacob" /><category term="amazon" /><category term="browser" /><category term="consulting" /><category term="enthusiasm" /><category term="versions" /><category term="open" /><category term="windows" /><category term="O'Reilly" /><category term="stani" /><category term="rewriting" /><category term="cellular" /><category term="file" /><category term="guardian" /><category term="wave" /><category term="observation" /><category term="sharing" /><category term="feed" /><category term="monty python" /><category term="tool" /><category term="python3" /><category term="mixin" /><category term="sqlalchemy" /><category term="resolver" /><category term="broadband" /><category term="2010" /><category term="python.org" /><category term="careers" /><category term="award" /><category term="petition" /><category term="bacon" /><category term="pylons" /><category term="life" /><category term="publicity" /><category term="ost" /><category term="economics" /><category term="antivirus" /><category term="principle" /><category term="feature" /><category term="fixed" /><category term="programming language humor" /><category term="call" /><category term="natural language" /><category term="foolishness" /><category term="history" /><category term="search" /><category term="article" /><category term="mozilla" /><category term="mono" /><category term="failure" /><category term="david" /><category term="impeachment" /><category term="ethics" /><category term="quotation" /><category term="2009" /><category term="futures" /><category term="richard dooling" /><category term="federal open source alliance" /><category term="package" /><category term="twisted" /><category term="development" /><category term="malware" /><category term="asus" /><category term="competition" /><category term="reserve" /><category term="service" /><category term="mobility" /><category term="bioinformatics" /><category term="iPython Notebook" /><category term="auction" /><category term="spelling" /><category term="corporate" /><category term="war" /><category term="eulogy" /><category term="payal" /><category term="bytecode" /><category term="dmca" /><category term="assistance" /><category term="xkcd" /><category term="configuration" /><category term="data analysis" /><category term="player" /><category term="rss" /><category term="spam" /><category term="motherboard" /><category term="video" /><category term="server 2008" /><category term="attendance" /><category term="builbots" /><category term="developer" /><category term="mathjax" /><category term="serendipity" /><category term="kudos" /><category term="iceland" /><category term="dotnet" /><category term="work" /><category term="trying" /><category term="sexism" /><category term="training" /><category term="web testing" /><category term="voting" /><category term="reading" /><category term="diary. kirby urner" /><category term="workshop" /><category term="fields" /><category term="authentication" /><category term="feminism" /><category term="success" /><category term="example" /><category term="information" /><category term="humour" /><category term="hilarity" /><category term="oldest" /><category term="antitrust" /><category term="mighty" /><category term="international" /><category term="memory" /><category term="laziness" /><category term="monk" /><category term="pdf" /><category term="employment" /><category term="galcon" /><category term="amazing" /><category term="report" /><category term="text" /><category term="monopoly" /><category term="opinion" /><category term="anniversary" /><category term="divmod" /><category term="stocks" /><category term="optimization" /><category term="adria richards" /><category term="third party" /><category term="summer of code" /><category term="guido van rossum" /><category term="worm" /><category term="race for hope" /><category term="marketing" /><category term="egotism" /><category term="profit" /><category term="network" /><category term="error" /><category term="content" /><category term="cpython" /><category term="soldiers" /><category term="poverty" /><category term="garbage" /><category term="moving" /><category term="education" /><category term="packaging" /><category term="support" /><category term="profanity" /><category term="ebay" /><category term="christmas" /><category term="input" /><category term="event" /><category term="advertising" /><category term="ian bicking" /><category term="submission" /><category term="inspiration" /><category term="honesty" /><category term="linux journal" /><category term="advocacy" /><category term="condolence" /><category term="2013" /><category term="prototyping" /><category term="djangocon python" /><category term="shell" /><category term="easy_install" /><category term="g1" /><category term="licensing" /><category term="user interface" /><category term="zope" /><category term="membership" /><category term="learning" /><category term="usability" /><category term="lanyrd" /><category term="hardware" /><category term="willison" /><category term="embedded" /><category term="math" /><category term="speed" /><category term="spying" /><category term="determination" /><category term="drawing" /><category term="partnership" /><category term="channel" /><category term="election" /><category term="probem" /><category term="appeal" /><category term="justice" /><category term="unapologetic" /><category term="migration" /><category term="discrimination" /><category term="version" /><category term="cyclic" /><category term="donation" /><category term="speaker" /><category term="issue" /><category term="widenius" /><category term="delegates" /><category term="Google" /><category term="raspberry pi" /><category term="botnet" /><category term="ReST" /><category term="publishing" /><category term="electronics" /><category term="opt-out" /><category term="propaganda" /><category term="United" /><category term="reportlab" /><category term="copyright" /><category term="friendship" /><category term="diagram" /><category term="wireless" /><category term="task" /><category term="netbook" /><category term="server" /><category term="browsing" /><category term="lamp" /><category term="gender" /><category term="popularity" /><category term="web site" /><category term="run" /><category term="markets" /><category term="donations" /><category term="pypy" /><category term="problem" /><category term="baggage" /><category term="suggestions" /><category term="honor" /><category term="install" /><category term="europython" /><category term="amusement" /><category term="beer" /><category term="macos" /><category term="hotel" /><category term="loss" /><category term="pythonistas" /><category term="functions" /><category term="open source" /><category term="stupidity" /><category term="quality assurance" /><category term="firefox" /><category term="location" /><category term="tragedy" /><category term="iphone" /><category term="travel" /><category term="financial assistance" /><category term="burning man" /><category term="society" /><category term="storm" /><category term="web service" /><category term="science fiction" /><category term="arthur c clarke" /><category term="openness" /><category term="futility" /><category term="bias" /><category term="scatter" /><category term="humor" /><category term="socialism" /><category term="corporate stupidity" /><category term="exercise" /><category term="business" /><category term="advice" /><category term="setuptools" /><category term="technical" /><category term="refactoring" /><category term="san francisco" /><category term="protectionism" /><category term="security" /><category term="fine print" /><category term="tiobe index" /><category term="self-aggrandisement" /><category term="object" /><category term="hyatt" /><category term="models" /><category term="digital rights management" /><category term="trademarks" /><category term="sco" /><category term="pythonista" /><category term="Blogger" /><category term="game" /><category term="links" /><category term="oracle" /><category term="batch" /><category term="implementations" /><category term="2.6" /><category term="tutorials" /><category term="atlanta" /><category term="dunking" /><category term="TheOpenBastion" /><category term="received ideas" /><category term="reference" /><category term="metaclass" /><category term="certificate" /><category term="quality" /><category term="mattering" /><category term="fun" /><category term="integrity" /><category term="result" /><category term="testing" /><category term="corruption" /><category term="OOXML" /><category term="jython" /><category term="vista" /><category term="web design" /><category term="capitalism" /><category term="asia" /><category term="snakebite.org" /><category term="influence" /><category term="media" /><category term="positive" /><category term="ignorance" /><category term="washington DC" /><category term="armed forces" /><category term="sponsorship" /><category term="apple" /><category term="board" /><category term="smart phone" /><category term="ipad" /><category term="piracy" /><category term="telecom" /><category term="simon" /><category term="conference" /><category term="old fart" /><category term="python software foundation" /><category term="gnome" /><category term="shame" /><category term="members" /><category term="coverity" /><category term="spreadsheet" /><category term="ibm" /><category term="feedback" /><category term="activism" /><category term="python" /><category term="pony" /><category term="ecommerce" /><category term="chicago" /><category term="internet" /><category term="sun microsystems" /><category term="python empire" /><category term="python 3" /><category term="needforspeed" /><category term="confidentiality" /><category term="recruitment" /><category term="science" /><category term="database" /><category term="linux" /><category term="powerpoint" /><category term="meme" /><category term="washington DC. holden web" /><category term="zipfile" /><category term="rip-off" /><category term="platform" /><category term="law" /><category term="cygwin" /><category term="vacation" /><category term="oscon" /><category term="students" /><category term="politics" /><category term="programming" /><category term="tutorial" /><category term="technolgy trends" /><category term="entrepreneurship" /><category term="planet python" /><category term="blog" /><category term="book" /><category term="canonical" /><category term="brazil" /><category term="teach me" /><category term="eventscripts" /><category term="conflict" /><category term="outlook" /><category term="plone" /><category term="jobs" /><category term="imap" /><category term="3.0" /><category term="house" /><category term="religion" /><category term="tox" /><category term="joke" /><category term="microsoft" /><category term="public relations" /><category term="tagging" /><category term="fail" /><category term="progress" /><category term="accounting" /><category term="typesetting" /><title>For Some Value of "Magic"</title><subtitle type="html">"Any sufficiently advanced technology is indistinguishable from magic" -- Arthur C Clarke
&lt;br&gt;
Musings from the technological frontier</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://holdenweb.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>503</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ForSomeValueOfMagic" /><feedburner:info uri="forsomevalueofmagic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkENQXw7eCp7ImA9WhBUGUg.&quot;"><id>tag:blogger.com,1999:blog-496482.post-779872142500764125</id><published>2013-05-07T14:18:00.000-04:00</published><updated>2013-05-07T14:18:10.200-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-07T14:18:10.200-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sexism" /><category scheme="http://www.blogger.com/atom/ns#" term="openness" /><category scheme="http://www.blogger.com/atom/ns#" term="gender" /><category scheme="http://www.blogger.com/atom/ns#" term="diversity" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pycon" /><category scheme="http://www.blogger.com/atom/ns#" term="adria richards" /><category scheme="http://www.blogger.com/atom/ns#" term="2013" /><title>A Statement from Adria Richards</title><content type="html">Having remained silent since PyCon, Adria Richards has now &lt;a href="http://allthingsd.com/20130327/fired-sendgrid-developer-evangelist-adria-richards-speaks-out/" target="_blank"&gt;published a statement&lt;/a&gt;&amp;nbsp;reflecting on those events, though sensibly without going into specifics. I think it's important that her retrospective view gets some air, so I am reproducing it here with my own comments.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Those who know me well in the the developer and tech community recognize that I have always tried to conduct myself in a way that builds bridges for everyone. My central aim is to do everything I can to help create new, inclusive inroads for all, no matter who they are, where they come from or what they believe. Development is about innovation, creativity, and in a grand sense, the betterment of human society through technology. So, it stands to reason that everyone should have a seat at the table, and everyone involved in this vital community should feel welcome, safe and respected. In essence, the worldwide community of developers can and should function as a reflection of what our wider society strives to be.&lt;/blockquote&gt;
I don't know Adria, so I take her opening statement at face value. Those who disagree may do so elsewhere. Garann Means recently &lt;a href="https://speakerdeck.com/garann/bacon-is-bad-for-you" target="_blank"&gt;made a fairly good case&lt;/a&gt; that the denizens of the technology world don't act in a way that inspires respect from other communities. I think it's fair to say (and some of the comments in forums like Hacker News amply demonstrate) that there is plenty of room for improvement in what's considered acceptable conduct in the technology world.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
I cannot comment at this time on the specifics of what occurred at PyCon on March 17, and the subsequent events of the following days, but I can offer some general thoughts. I don’t think anyone who was part of what happened at PyCon that day could possibly have imagined how this issue would have exploded into the public consciousness the way it has. I certainly did not, and now that the severest of consequences have manifested, all I wish to do is find the good in what has been one of the most challenging weeks of my life.&lt;/blockquote&gt;
This positive attitude is to be admired. I have been through similarly shitty situations in my own life (as most of us have at one time or another) and while it's good to move on I like to extract lessons that will help me try to avoid making the same mistakes. If I can find those I can feel more positive about the experience.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
And I do believe there is good to be found in this situation. Debate and recrimination can and must give way to dialog that explores the root causes of these issues in the tech industry. As developers and members of the startup community, we can welcome newcomers, women and people of color who, as of now, are under-represented in our ranks. And, all of us can learn a great deal from those who are well-established in the field. We can solidify the values of our workplaces (yes, conference spaces are workplaces!), and set new, positive and inclusive examples for other professional disciplines.&lt;/blockquote&gt;
This is a good idea. PyCon was started to try and provide an inclusive space where everyone with interests in Python can come together for the betterment of all. I would be suspicious of those who don't support the above as an ideal. We surely have to accept that there's still along way to go to get there. So dialog is a good idea.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
What happened at PyCon has cast a spotlight on a range of deep issues and problems in the developer world. As ugly as this situation has become, all of these issues have reasonable, and, I think, easily reached solutions that will help us cast conflict aside and construct a more cohesive and welcoming professional environment based on respect, trust and open communication. I do not, at this time, wish to concentrate on the fallout of the last several days. Instead, I want to be an integral part of a diverse, core group of individuals that comes together in a spirit of healing and openness to devise answers to the many questions that have arisen in the last week. Together, we can work to make the tech world a better place to work for everyone, and in doing so, we make the wider world a better place for all.&lt;/blockquote&gt;
It's interesting that this episode happened at PyCon. When we started to talk seriously about Codes of Conduct in the Python world there was a lot of kick-back, and people said things like "but this is the Python community" (implying that &lt;i&gt;we&lt;/i&gt;&amp;nbsp;are such nice people that we won't have the same issues) and "but that's just normal behavior" (not even implying, but specifically stating, that anyone who needed a Code of Conduct to condition their behavior shouldn't be going to conferences anyway).&lt;br /&gt;
&lt;br /&gt;
We pressed ahead none the less, refining the code to improve its expression of our ideals of openness and inclusivity. When issues had to be addressed (and you can read the reports in the PyCon blog if you need to refresh your memory) the code of conduct was applied, and to my mind it worked. The fact that two people lost their jobs as a result of the fall-out was nothing to do with the code of conduct, and yet there were many who felt that the blame should be laid at PyCon's door. I shudder to think what the result would have been at an event with no explicit code.&lt;br /&gt;
&lt;br /&gt;
I hope that Adria can come back to PyCon without being subjected to any hostility. She expresses a great ideal, one that we should all be striving for. Now we just have to work out how to achieve it. But that's an implementation detail, right? I wish!&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=2SvdL7Tgy2k:HFQXFQeefZc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=2SvdL7Tgy2k:HFQXFQeefZc:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=2SvdL7Tgy2k:HFQXFQeefZc:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/2SvdL7Tgy2k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/779872142500764125/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=779872142500764125&amp;isPopup=true" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/779872142500764125?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/779872142500764125?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/2SvdL7Tgy2k/a-statement-from-adria-richards.html" title="A Statement from Adria Richards" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>5</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2013/05/a-statement-from-adria-richards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEDRH4-fyp7ImA9WhBUEkw.&quot;"><id>tag:blogger.com,1999:blog-496482.post-7113295657257455662</id><published>2013-04-29T01:34:00.001-04:00</published><updated>2013-04-29T01:34:35.057-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-29T01:34:35.057-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="psf" /><title>So Long, and Thanks for All the Fish</title><content type="html">A notable transition point in my life, by any measure. Interesting things are happening in all directions, many of them (I am delighted to day) heavily involving Python. So this is definitely &lt;i&gt;not&lt;/i&gt;&amp;nbsp;goodbye. My time on the Foundation's board has been a wonderful and interesting ride. I hope I have lived up to Tim O'Reilly's ethic of creating more value than I extract.&lt;br /&gt;&lt;div style="text-align: left;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Xkq-9wjjbMA/UX4C3BZv5pI/AAAAAAAABo0/oqG_87y9sUc/s1600/2013-04-28_15-36-04.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="63" src="http://1.bp.blogspot.com/-Xkq-9wjjbMA/UX4C3BZv5pI/AAAAAAAABo0/oqG_87y9sUc/s400/2013-04-28_15-36-04.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=-xGkCjGmzSo:A9ZCS4HaxdM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=-xGkCjGmzSo:A9ZCS4HaxdM:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=-xGkCjGmzSo:A9ZCS4HaxdM:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/-xGkCjGmzSo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/7113295657257455662/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=7113295657257455662&amp;isPopup=true" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7113295657257455662?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7113295657257455662?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/-xGkCjGmzSo/so-long-and-thanks-for-all-fish.html" title="So Long, and Thanks for All the Fish" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Xkq-9wjjbMA/UX4C3BZv5pI/AAAAAAAABo0/oqG_87y9sUc/s72-c/2013-04-28_15-36-04.png" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2013/04/so-long-and-thanks-for-all-fish.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4MSXo8eCp7ImA9WhBUEUk.&quot;"><id>tag:blogger.com,1999:blog-496482.post-8629313830167737814</id><published>2013-04-28T00:06:00.001-04:00</published><updated>2013-04-28T05:23:08.470-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-28T05:23:08.470-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Why Tuples?</title><content type="html">A frequent question from new and even not-so-new Python programmers is "why does the language have both tuples (which, if you know Python, you will recall are immutable) and lists?" You might almost say there are two kinds of Python programmers, those who know what tuples are for and those whose mathematical education has been limited. I know this sounds like an awfully snobbish thing to say, but it isn't meant that way. The fact is that I learned most of my programming in eight years of working experience before I started my degree studies, and I am therefore of the very definite opinion that people with little mathematical background can be excellent programmers.&lt;br /&gt;
&lt;br /&gt;
It's just that I myself only came across the word &lt;i&gt;tuple&lt;/i&gt;&amp;nbsp;when I started studying college-level mathematics and had to come to terms with things like&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;div style="background-color: white; font-family: sans-serif; font-size: 12.800000190734863px; line-height: 19.200000762939453px; margin-bottom: 0.5em; margin-top: 0.4em;"&gt;
An&amp;nbsp;&lt;i&gt;NFA&lt;/i&gt;&amp;nbsp;is represented formally by a&amp;nbsp;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/N-tuple" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="N-tuple"&gt;5-tuple&lt;/a&gt;, (&lt;i&gt;Q&lt;/i&gt;, Σ, Δ,&amp;nbsp;&lt;i&gt;q&lt;sub style="line-height: 1em;"&gt;0&lt;/sub&gt;&lt;/i&gt;,&amp;nbsp;&lt;i&gt;F&lt;/i&gt;), consisting of&lt;/div&gt;
&lt;ul style="background-color: white; font-family: sans-serif; font-size: 12.800000190734863px; line-height: 19.200000762939453px; list-style-image: url(data:image/png; margin: 0.3em 0px 0px 1.6em; padding: 0px;"&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;a finite&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Set_(mathematics)" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Set (mathematics)"&gt;set&lt;/a&gt;&amp;nbsp;of states&amp;nbsp;&lt;i&gt;Q&lt;/i&gt;&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;a finite set of&amp;nbsp;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Input_symbol" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Input symbol"&gt;input symbols&lt;/a&gt;&amp;nbsp;Σ&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;a transition&amp;nbsp;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Relation_(logic)" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Relation (logic)"&gt;relation&lt;/a&gt;&amp;nbsp;Δ&amp;nbsp;:&amp;nbsp;&lt;i&gt;Q&lt;/i&gt;&amp;nbsp;× Σ →&amp;nbsp;&lt;i&gt;P&lt;/i&gt;(&lt;i&gt;Q&lt;/i&gt;).&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;an&amp;nbsp;&lt;i&gt;initial&lt;/i&gt;&amp;nbsp;(or&amp;nbsp;&lt;i&gt;start&lt;/i&gt;) state&amp;nbsp;&lt;i&gt;q&lt;/i&gt;&lt;sub style="line-height: 1em;"&gt;0&lt;/sub&gt;&amp;nbsp;∈&amp;nbsp;&lt;i&gt;Q&lt;/i&gt;&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;a set of states&amp;nbsp;&lt;i&gt;F&lt;/i&gt;&amp;nbsp;distinguished as&amp;nbsp;&lt;i&gt;accepting&lt;/i&gt;&amp;nbsp;(or&amp;nbsp;&lt;i&gt;final&lt;/i&gt;)&amp;nbsp;&lt;i&gt;states&lt;/i&gt;&amp;nbsp;&lt;i&gt;F&lt;/i&gt;&amp;nbsp;⊆&amp;nbsp;&lt;i&gt;Q&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
Now this has a very definite meaning. It tells us that an (ordered - &lt;i&gt;i.e.&lt;/i&gt;&amp;nbsp;positionally-identified) set of five things is sufficient to define the behavior of a specific type of object (in this case a non-deterministic finite state automaton (NFA), though for all you need to know about those I might just as well be describing a flux capacitor).&lt;br /&gt;
&lt;br /&gt;
If we wanted to encapsulate an NFA as a Python data structure, then we might at some point in our code write in our Python code something like&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; nfa = (states, symbols, transition, initial, accepting_states)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
though in actual fact you would be more likely to want to incorporate behavior in a class and so write instead&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; nfa = NFA(states, symbols, transition, initial, accepting_states)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now even though you may not know what an NFA is, you will surely perceive that the set of its possible states is a very different thing from the function that determines how a current state and a set of inputs are mapped into new states. So there is simply no way that it would be meaningful to write&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; for thing in (states, symbols, transition, initial, accepting_states):&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; do_something_with(thing)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
unless you were, for example, trying to save its state during a pickling operation or some more obscure book-keeping metacode.&lt;br /&gt;
&lt;br /&gt;
And that, best beloved, is what tuples are for: they are ordered collections of objects, and each of the objects has, according to its position, a specific meaning (sometimes referred to as its&amp;nbsp;&lt;i&gt;semantics&lt;/i&gt;). If no behaviors are required then a tuple is "about the simplest thing that could work."&lt;br /&gt;
&lt;br /&gt;
This is why you often hear people informally say tuples are for "collections of things you don't need to iterate over" or "tuples are for sequences of dissimilar objects". My advice would be to stay away from such discussions. One might reasonably argue that including them in the language discouraged people from using objects with named attributes, which are always easier to deal with.&lt;br /&gt;
&lt;br /&gt;
The problem with the tuple is that once we have constructed our NFA the only way to refer to the states in code is with the rather unedifying expression&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; nfa[0]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
which doesn't actually tell the reader much about&amp;nbsp;the&amp;nbsp;programmer's intention. The sequence nature of the tuple means that our accesses to the elements are difficult to imbue with meaning in our code. This latterly became such an obvious shortcoming that it prompted Raymond Hettinger to create the &lt;b&gt;&lt;a href="http://docs.python.org/3/library/collections.html#collections.namedtuple" target="_blank"&gt;namedtuple&lt;/a&gt;&lt;/b&gt; object that allows you to easily specify a tuple whose elements can also be referred to by name.&lt;br /&gt;
&lt;br /&gt;
It would be interesting to see whether users of namedtuple objects actually use them as tuples at all. I would guess that the sequence behaviors are rarely used, in which case perhaps it's time to either remove namedtuple's&amp;nbsp;&lt;i&gt;__getitem__()&lt;/i&gt;&amp;nbsp;and similar methods or implement a similar object without the sequence behaviors.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=IERINDcToYQ:hEk54ybLI9w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=IERINDcToYQ:hEk54ybLI9w:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=IERINDcToYQ:hEk54ybLI9w:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/IERINDcToYQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/8629313830167737814/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=8629313830167737814&amp;isPopup=true" title="25 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/8629313830167737814?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/8629313830167737814?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/IERINDcToYQ/why-tuples.html" title="Why Tuples?" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>25</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2013/04/why-tuples.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cARXs_fyp7ImA9WhNWF04.&quot;"><id>tag:blogger.com,1999:blog-496482.post-2222177690675766546</id><published>2012-12-17T02:44:00.003-05:00</published><updated>2012-12-17T02:57:24.547-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-17T02:57:24.547-05:00</app:edited><title>Gun Nuts 1</title><content type="html">In the wake of the most recent school slaying I thought it might be relevant to revisit the writings of Eric S Raymond. Within my world he is a well-known and self-described "gun nut." His two principal writings on he right to bear arms appear to be&amp;nbsp;&lt;i&gt;&lt;a href="http://www.catb.org/esr/guns/sheep.html" rel="nofollow" target="_blank"&gt;The Parable of the Sheep&lt;/a&gt;&lt;/i&gt; and &lt;i&gt;&lt;a href="http://www.catb.org/esr/guns/gun-ethics.html" rel="nofollow" target="_blank"&gt;Ethics Through the Barrel of a Gun&lt;/a&gt;&lt;/i&gt;. I will look at the latter in a separate post. There is nothing I can do for the misery of the bereaved families. I can only hope to help in the longer run.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;The Parable of the Sheep&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
This is a tale of a flock of sheep. The dog cannot keep the wolves away. Some sheep take the claws and fangs from dead wolves. They fight back, reducing the carnage. Eventually the wolves mostly leave sheep alone. They do not know which sheep are armed. Many sheep are terrified of the weapons. They ban the armed sheep from to the pasture. They post signs at the edges forbidding hidden weapons. The wolves, seeing this, return. Once again they inflict carnage on the flock. They are only beaten off by the armed sheep. The flock remain afraid of the weapons. They barely tolerate their protectors, the armed sheep. The armed sheep altruistically continue to protect the flock. Raymond describes the situation thus:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="background-color: white; font-family: helvetica, sans-serif; text-indent: 32px;"&gt;&lt;span style="color: #38761d;"&gt;The bold sheep knew that the fangs and claws they possessed had not changed them. They still grazed like other sheep, and raised their lambs in the spring, and greeted their friend the dog as he walked among them. But they could not quell the terror of the flock, which rose in them like some ancient dark smoky spirit and could not be damped by reason, nor dispelled by the light of day.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
The parable omits many refinements of the true situation. That is forgivable for&amp;nbsp;expository&amp;nbsp;purposes. A school shooting represents something outside the parable. There is a genuine reason for the terror of the unarmed sheep. Occasionally the armed sheep start acting like wolves. Of course the unarmed sheep are then the inevitable target.&lt;br /&gt;
&lt;br /&gt;
The statistics for murder and armed robbery are quite alarming. Those for child murder are truly chilling. &lt;a href="http://nationalpostnews.files.wordpress.com/2012/12/fo1217_childmurder940.jpg" target="_blank"&gt;Almost 63% involved a firearm in 2011&lt;/a&gt;. Well over a thousand kids blown away each year. To suggest that we &lt;i&gt;all&lt;/i&gt;&amp;nbsp;arm to protect ourselves seems unbalanced. It's like the 1950's "defense" policy of Mutually Assured Destruction. Never was an acronym more appropriate.&amp;nbsp;The terrorists aren't&amp;nbsp;&lt;i&gt;over there&lt;/i&gt;, they are among us. A school massacre is an act of terror.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Here the Japanese strategy of many approaches might be fruitful. It is unlikely there is a single switch we can turn to stop this happening. Surely it is better to try to understand these acts of atrocity. Consider them a societal ill and seek its cure. Perhaps we could try to build a world where people are better in touch with their fellows. Extremes of behavior can (most of the time) be recognized. If someone is heading in a dangerous direction, perhaps it can be deflected by sympathetic attention.&lt;br /&gt;
&lt;br /&gt;
I imagine* that most mass murderers are completely in control most of the time. They are indistinguishable &amp;nbsp;from "normal" people. The classic quote after an apparently psychotic shooting episode? "He seemed like a normal guy." Let's leave the fact it's usually a man to another time. It's not like they are landmines, liable to go off at any touch. I am a pretty placid person most of the time. Occasionally some perfect storm of circumstances hits. Shortage of sleep is often involved. Physical exhaustion never helps. Emotional distress is very rarely positive. I "go off on one" in an uncharacteristic way. We all have extremes of behavior, often in response to extreme circumstances. Some people are more extreme than others.&lt;br /&gt;
&lt;br /&gt;
Some people, sadly, are so extreme that they must be incarcerated to protect the rest of us. I would, in the USA, prefer it if the government invested its funding in long-term plans to make the country a better place to live than lock up predominantly black predominantly drug-offending adults.** Now private companies are running prisons, vested interests are powerful.&lt;br /&gt;
&lt;br /&gt;
So while Raymond's simplified argument seems reasonable enough, that's only because it is simplified. There are inevitable outliers in a flock of over three hundred million.&amp;nbsp;Mental stability and degree of moral control are two important dimensions.&amp;nbsp;At that scale the sheep would appear to have a good reason for caution. Anyone proposing to use fangs and claws should surely be assessed as a responsible individual. Mistakes will still be made, but (presumably) it is not beyond the wit of sheep to concoct a scheme that reduces the number of massacre incidents.&lt;br /&gt;
&lt;br /&gt;
In network parlance, the parable &lt;i&gt;doesn't scale to larger flocks&lt;/i&gt;. Neither does it scale to bigger and better teeth and claws. The &lt;i&gt;reductio ad absurdum&lt;/i&gt;&amp;nbsp;of many gun nut arguments is that we should all carry personal tactical nuclear weapons. What's reasonable, and what's not? Why are such deadly automatic weapons allowed outside gun clubs and the armed forces? I don't mind people enjoying handling and using firearms. Hunting, preferably for food, for example, is a perfectly legitimate use. So is fun at a gun club shooting range. Mowing down kids, not so much. We have to strike a balance.&lt;br /&gt;
&lt;br /&gt;
One final note: please let's not imagine there is an instant cure. All we can do is lay, and maintain to, long term plans. These should aim to reduce the availability and access to weapons, particularly those capable of facilitating mass murder.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;* Admittedly if this were a Wikipedia article someone would have at least added a "citation needed" flag&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;** Who are then unable to vote&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=YKj7rBN_cdg:dDRZfytCR5I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=YKj7rBN_cdg:dDRZfytCR5I:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=YKj7rBN_cdg:dDRZfytCR5I:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/YKj7rBN_cdg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/2222177690675766546/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=2222177690675766546&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2222177690675766546?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2222177690675766546?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/YKj7rBN_cdg/gun-nuts-1.html" title="Gun Nuts 1" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/12/gun-nuts-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMAQHo_fSp7ImA9WhNWF08.&quot;"><id>tag:blogger.com,1999:blog-496482.post-7918576359961685100</id><published>2012-12-17T00:34:00.000-05:00</published><updated>2012-12-17T00:34:01.445-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-17T00:34:01.445-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="djangocon" /><category scheme="http://www.blogger.com/atom/ns#" term="socialism" /><category scheme="http://www.blogger.com/atom/ns#" term="humanity" /><category scheme="http://www.blogger.com/atom/ns#" term="altruism" /><category scheme="http://www.blogger.com/atom/ns#" term="pragmatism" /><category scheme="http://www.blogger.com/atom/ns#" term="transparency" /><category scheme="http://www.blogger.com/atom/ns#" term="politics" /><category scheme="http://www.blogger.com/atom/ns#" term="integrity" /><category scheme="http://www.blogger.com/atom/ns#" term="freedom" /><title>A Thank You to Eric Sterling</title><content type="html">Offered for the attention of those who attended Eric's recent keynote at DjangoCon and, most especially for Eric himself. I still remember the talk and the panel session he took the time to contribute to fondly, and I particularly enjoyed the unique flavor he added to the lunch he attended.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-0yPc7iBL_wQ/UM6obZsyuxI/AAAAAAAABaM/8dWKGPT8RkU/s1600/2012-12-16_21-04-47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-0yPc7iBL_wQ/UM6obZsyuxI/AAAAAAAABaM/8dWKGPT8RkU/s1600/2012-12-16_21-04-47.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=AWWHBhBAJls:3hdtcQiI0rY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=AWWHBhBAJls:3hdtcQiI0rY:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=AWWHBhBAJls:3hdtcQiI0rY:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/AWWHBhBAJls" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/7918576359961685100/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=7918576359961685100&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7918576359961685100?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7918576359961685100?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/AWWHBhBAJls/a-thank-you-to-eric-sterling.html" title="A Thank You to Eric Sterling" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-0yPc7iBL_wQ/UM6obZsyuxI/AAAAAAAABaM/8dWKGPT8RkU/s72-c/2012-12-16_21-04-47.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/12/a-thank-you-to-eric-sterling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEDQHw5fSp7ImA9WhNWFUU.&quot;"><id>tag:blogger.com,1999:blog-496482.post-3033163751951070918</id><published>2012-12-15T09:28:00.001-05:00</published><updated>2012-12-15T09:44:31.225-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-15T09:44:31.225-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="integration" /><category scheme="http://www.blogger.com/atom/ns#" term="apology" /><category scheme="http://www.blogger.com/atom/ns#" term="gender" /><category scheme="http://www.blogger.com/atom/ns#" term="diversity" /><category scheme="http://www.blogger.com/atom/ns#" term="pycon" /><category scheme="http://www.blogger.com/atom/ns#" term="sensitivity" /><category scheme="http://www.blogger.com/atom/ns#" term="psf" /><category scheme="http://www.blogger.com/atom/ns#" term="integrity" /><category scheme="http://www.blogger.com/atom/ns#" term="feminism" /><title>I'm Sorry</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ma_dDypuHLc/UMwyq2emRiI/AAAAAAAABZ0/ZCjIYKSLltg/s1600/P1000255.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-ma_dDypuHLc/UMwyq2emRiI/AAAAAAAABZ0/ZCjIYKSLltg/s200/P1000255.JPG" width="150" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The one-eyed snake&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
It appears I've been that guy (again). I've seen those "sorry if you were offended" apologies, and they are bullshit. So let me begin by unreservedly apologizing for my inappropriate behavior. Then perhaps I can tell you what this is all about. I do so in the doleful expectation that this post will generate more heat than light, as is typical for this subject matter in geek circles, and will be the cause of a large amount of ill-informed, unhelpful and possibly personally damaging commentary. Since it gives me the opportunity to discuss a few issues of importance I accept that as the price.&lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;Last&lt;/strike&gt;&amp;nbsp;This year, at PyCon, I had a Square, a device to accept credit card payments through my cellphone, and &lt;i&gt;inter alia&lt;/i&gt;&amp;nbsp;was soliciting donations to the Python Software Foundation. As a part of my &lt;i&gt;schtick&lt;/i&gt;&amp;nbsp;I was offering to take photographs, and offered the option of a prop, a little Beanie Babies™ bean-stuffed Python which my dog, when a &amp;nbsp;puppy, had once got hold of and played with so enthusiastically that she tore off (and probably swallowed) the glued-on bead that represented its left eye. I've had this snake almost ever since I started using Python (almost twenty years now) and I'm very fond of it. It often travels with me as a talisman, since I usually travel alone.&lt;br /&gt;
&lt;br /&gt;
Because I am so familiar with it, in retrospect it seems a little odd that I had never particularly dwelt on the fact that it is, literally, my "one-eyed snake" though I had used the phrase at home with family and friends as a joke. [For readers not familiar with colloquial English and American, I am obliged to point out at this stage that "one-eyed snake" is one of many euphemisms for the penis]. I was amused enough, on that day, by this fatuous coincidence that I&amp;nbsp;offered to include "the chairman's one-eyed snake" in the photographs I was taking, of men as well as women.&lt;br /&gt;
&lt;br /&gt;
People&amp;nbsp;appeared&amp;nbsp;(in my opinion, not actually the opinion that matters as it happens) to tolerate my&amp;nbsp;&lt;i&gt;risqué&lt;/i&gt;&amp;nbsp;attempt at humor, feeble as it was, and took it in good part although certainly not everyone asked for the snake to be included. The conference ran its course, I went on my way, unaware that a storm was brewing.&lt;br /&gt;
&lt;br /&gt;
The storm's gestation in fact took another event to trigger it, a recent motion by the PSF board that we would require any conference we funded to implement a code of conduct. The board collectively felt that this would be a forward step, and would actually be helpful to conference organizers who had not yet addressed this issue. PyCon has has a code of conduct for several years, and since the conferences I run professionally also have codes of conduct, I had no hesitation in voting for the motion.&lt;br /&gt;
&lt;br /&gt;
It's difficult to describe this situation in anonymous terms, since verbatim quotes are required in order to allow me to properly discuss the way this situation has turned out. But those who wish to know the identities of the proponents must do so by using {{search_engine_of_choice}}. What happened when news of the motion came out is that someone posted a comment on Hacker News which included the following content&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;div class="p1"&gt;
From what I understand, the code was approved by the Board of Directors of the PSF, and not the PSF as a whole. Please, correct me if I am wrong. This is ironic since one of the Board members was walking around the conference last year with a damaged stuffed python toy asking, "Would you like to see my one eyed snake?"&lt;/div&gt;
&lt;div class="p1"&gt;
This was said to one of my female colleagues. I asked her if she would like me to say something and she replied, "No, it is just creepy, but I'm an adult."&lt;/div&gt;
&lt;/blockquote&gt;
I'd like you to particularly note two things: first, the quote is inaccurate, I believe (if I uttered those words I would have to accept I would have gone over the line with anyone but a close friend); second, the colleague herself chose not to complain. This is significant because of what happened next. Clearly the comment had received some attention, since shortly thereafter a second person, one I think it is fair to say is known not to be well-disposed towards the PSF, tweeted (in reply to a third party who may for all I know have been a fifth or twelfth party)&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Wait, I didn't read this comment closely enough. What fucktard was walking around asking women to pet his one-eyed snake?&lt;/blockquote&gt;
Note again: the already inaccurate quotation has been through the mangler once more. So now we (that is me and the PSF, though in this post I must put my director's hat aside and accept personal culpability) have a &lt;i&gt;situation&lt;/i&gt;. This is not something that would have worried me hugely in my personal capacity, but the fact is that it has brought a lot of pressure to bear on someone who, through his heroic efforts to improve on last year's incredible PyCon, is already under quite enough pressure. So it is necessary for me to write this explanation lest his efforts to bring in sponsorship and promote diversity of all kinds in the Python community are damaged by my bad behavior.&lt;br /&gt;
&lt;br /&gt;
Now to the several points I should like to make about the outcomes so far. I hesitate to think of the fallout to my professional life.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;I am lucky to be a man, since any woman posting about similar issues of female sensitivity is likely to be harangued and harassed until, unless she is of extraordinary character, she either allows herself to be silenced or leaves the Internet altogether (yes, well-known women have received threats that they felt obliged them to do this).&lt;/li&gt;
&lt;li&gt;Context is important. Although my behavior may not have been appropriate, it was taking place in broad daylight in a well-populated area so nobody felt especially threatened by it. The same offer (let alone either of the two misquoted ones above) made to a woman who is the only other occupant of an elevator at 1:30 in the morning would, I think, be reasonably interpreted as a possible if not an actual threat. Anyone who doesn't understand that isn't really fit to be out alone.&lt;/li&gt;
&lt;li&gt;It isn't up to me to decide whether my behavior is appropriate, but those with whom I interact. I teach professionally, have taken (and passed) sensitivity training classes, and am accustomed to behave in a professional manner that does not run the risk of attaching stigma to those I represent. &amp;nbsp;Because I feel that many members of the Python community are my friends, I perhaps overstepped the boundaries of professionalism, believing that nobody would mind.&lt;/li&gt;
&lt;li&gt;The fall-out of righteous indignation about events like this often lands on the wrong person. There is now heavy pressure on Jesse Noller as PyCon chair for not taking action about this. There have been definite suggestions that Jesse is being hypocritical in promoting a code of conduct for PyCon while condoning inappropriate behavior by a fellow director. There are two things worthy of note about this.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Firstly, since the issue only came to his and my attention eight months after the conference (and, indeed, after both he and I voted for the motion requiring codes of conduct) it is difficult to know what he could have been expected to do at the time. He has been heroically silent (for him).&lt;/li&gt;
&lt;li&gt;Secondly, the code of conduct exists precisely to reassure people that harassing actions can be reported, and will be dealt with, &lt;i&gt;no matter what the position of the offender in the community&lt;/i&gt;. So I think anyone who is gunning for Jesse about this should give him a pass. If he had come to me because he had received a complaint I cannot say what action I would have felt correct, but at the least I would have expected to make a public apology. I do not expect that Jesse would have felt able to let a transgression on my part go without action: he has far too much integrity for that. I like to think I have enough integrity to accept being told when I have transgressed (hence my dislike of the "if anyone was offended, sorry" stuff).&lt;/li&gt;
&lt;li&gt;Circumstances alter cases. The code of conduct is not expected to protect people in a vacuum. If you find someone's behavior offensive your first recourse should be to say so. Hopefully an apology should be forthcoming, or at least a civilized discussion about your differences in standards. If the issue cannot be resolved in person &lt;i&gt;then&lt;/i&gt;&amp;nbsp;is the time to invoke the code of conduct. This is what makes variations in behavioral standards acceptable: when you are with people you know you are unlikely to go wrong; when you are not you should take others' input as defining acceptable limits.&lt;/li&gt;
&lt;li&gt;It is unreasonable to expect perfection. We all slip from time to time, and a slip should not necessarily lead to a fall. I noted with a parenthetical "again" in the opening paragraph that this is not the first time I have behaved inappropriately, and sadly it may not be the last. I can say, though, that on the few occasions my behavior towards an individual was definitely capable of causing offense I have apologized sincerely and without reservation, usually before further contact from the other party (&lt;i&gt;i.e.&lt;/i&gt;&amp;nbsp;I am capable of recognizing bad behavior on my own part and voluntarily apologizing for it). I am happy to say that I count some of those to whom I have had to apologize as friends even now, and believe those feelings are reciprocated.&lt;/li&gt;
&lt;li&gt;I specifically do &lt;i&gt;not&lt;/i&gt;&amp;nbsp;want the support of men weighing in with some equivalent of "what the hell, man, you didn't do anything wrong, what are the women complaining about?" Perhaps when your knuckles stop dragging along the ground we can talk. I very much &lt;i&gt;would&lt;/i&gt;&amp;nbsp;like the support of men who are equally liable to do stupid things (and have done) and yet still remain open to the possibility that one can be equally civil and courteous to members of all sexes. It's easy for men to say "we've all been that guy," but I hope that women don't imagine that guy conversation is laced with tales about how we &lt;i&gt;were&lt;/i&gt; "that guy". We don't talk about our goofs even among ourselves (unless&amp;nbsp;there's some club I'm not a member of). Men who are sensitive to the need for gender diversity find these mistakes painful to remember, and only dwell on them in private (this has not been an easy post to write). Men who are not sensitive to that need, please re-read the opening sentence of this paragraph.&amp;nbsp;Support from others will also be more than welcome.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Diversity is not just gender diversity. Because I speak fluent English it is easy for Americans to imagine that I have absorbed their culture fully, though even after fifteen years I often have to stop to clarify cultural referents common to most natives. They forget that I am, in fact, an immigrant who was brought up with different standards. I am not trying to suggest that I should not be subject to the values of the USA, but would hope that when I overstep the bounds some leniency might be shown. I in my turn sometimes forget that standards &lt;i&gt;are&lt;/i&gt; different over here.&lt;/li&gt;
&lt;/ol&gt;
There is more that I could write*, but I feel that this post is already long enough. I will close by remarking that it turns out the female colleague of the original poster is personally known to me, and in our several meetings both personal and professional since then she has not mentioned this issue (unless my memory has failed me). Naturally I intend to apologize to her at the first available opportunity, and to ensure that in the future I do nothing to make her feel uncomfortable (the basis on which I believed I was conducting the relationship). If I was not confident that people would feel comfortable in my presence I would not feel able to attend PyCon, since that would exclude others.&lt;br /&gt;
&lt;br /&gt;
As PyCon's founder I genuinely want to see it address diversity issues properly. For eight years as a director and three years as chairman I have worked to ensure that the PSF is seen to take these issues seriously. I am mortified that I ran the risk of bringing either into disrepute. I hope that by making this apology I continue to lead by example.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;* I might, say, discuss the appropriateness of using the word "fucktard" in public discourse on such serious matters .&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=o8WqY0TSSu8:ycwpxgSq0Yc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=o8WqY0TSSu8:ycwpxgSq0Yc:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=o8WqY0TSSu8:ycwpxgSq0Yc:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/o8WqY0TSSu8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/3033163751951070918/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=3033163751951070918&amp;isPopup=true" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/3033163751951070918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/3033163751951070918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/o8WqY0TSSu8/im-sorry.html" title="I'm Sorry" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ma_dDypuHLc/UMwyq2emRiI/AAAAAAAABZ0/ZCjIYKSLltg/s72-c/P1000255.JPG" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/12/im-sorry.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UHQHg4fip7ImA9WhNQE00.&quot;"><id>tag:blogger.com,1999:blog-496482.post-2474722595477854785</id><published>2012-11-19T02:12:00.000-05:00</published><updated>2012-11-19T02:13:51.636-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-19T02:13:51.636-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="iPython" /><category scheme="http://www.blogger.com/atom/ns#" term="data analysis" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="review" /><category scheme="http://www.blogger.com/atom/ns#" term="iPython Notebook" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Python for Data Analysis</title><content type="html">&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;a href="http://shop.oreilly.com/product/0636920023784.do" target="_blank"&gt;Python for Data Analysis&lt;/a&gt;; Wes McKinney. O'Reilly Media, October 2012&lt;br /&gt;[Review copy kindly provided gratis by O'Reilly Media]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This book is a welcome addition to the Python canon, and anyone who is at all concerned with data analysis would do well to read it. From the opening chapter it is a clear and concise explanation of how to deploy Python for such tasks. Early on the author makes the point that Python should be thought of primarily as a “glue” language, so the book makes no attempt to show you how to program analytical methods in Python but rather demonstrates through practical examples how to use the existing extremely effective tool chain already available.&lt;br /&gt;
&lt;br /&gt;
After a few brief motivating examples you will read one of the clearest expositions of the benefits of iPython I have seen. Since reading this chapter I have become convinced of the benefits of iPython Notebook and have opened an account with &lt;a href="https://notebookcloud.appspot.com/" target="_blank"&gt;NotebookCloud&lt;/a&gt;*, which I feel will be a real boon in my teaching work.&lt;br /&gt;
&lt;br /&gt;
The next chapter covers Numpy basics, followed by an introduction to the pandas library. You are then taken in detail, and with copious practical examples, through data cleanup and various important transformations, plotting and visualization, data aggregation and grouping, time series and finally financial applications.&lt;br /&gt;
&lt;br /&gt;
The final chapter on advanced Numpy provides the kind of look under the hood that will help those interested to extract maximum efficiency from the package and understanding how best to take advantage of more advanced features. The closing Appendix, “Python Language Essentials,” is a concise introduction to the language that should provide even inexperienced Python users with sufficient information to understand the examples.&lt;br /&gt;
&lt;br /&gt;
The writing is clear throughout, with numerous examples that enliven and illuminate the discussions. For those whose mantra is "show me the code," the code is here in spades. Flipping through the book you find very few pages that do not contain Python code (and many of them are displaying the &lt;i&gt;output&lt;/i&gt;&amp;nbsp;from Python code).&lt;br /&gt;
&lt;br /&gt;
Wes McKinney took the sensible decision to focus on Python 2.7, which is what is currently deployed by the vast majority of the scientific and analytical communities. The quality of the writing and the recent welcome news that matplotlib** is now ported to Python 3 will, I am sure, make a Python 3 update a popular choice in coming years.&lt;br /&gt;
&lt;br /&gt;
If you want to understand how you can use Python as an analytical tool then I heartily recommend this book.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;* An Amazon Web Services account is required to use this service, and will be charged for your computations&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;** This means the standard "Scientific tool chain" is now available for Python 3&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=WlygopRZ-dc:NuJuYAl6Kpo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=WlygopRZ-dc:NuJuYAl6Kpo:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=WlygopRZ-dc:NuJuYAl6Kpo:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/WlygopRZ-dc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/2474722595477854785/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=2474722595477854785&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2474722595477854785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2474722595477854785?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/WlygopRZ-dc/python-for-data-analysis.html" title="Python for Data Analysis" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/11/python-for-data-analysis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYEQ3s6cCp7ImA9WhNQEUU.&quot;"><id>tag:blogger.com,1999:blog-496482.post-2035271169307114405</id><published>2012-11-01T11:21:00.000-04:00</published><updated>2012-11-17T16:18:22.518-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-17T16:18:22.518-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pycon" /><title>Building New Communities</title><content type="html">&lt;br /&gt;
&lt;div class="p1"&gt;
&lt;b&gt;&lt;span style="font-size: x-small;"&gt;[This post is based on a keynote talk to the PyCon DE conference on November 1, 2012]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;b&gt;&lt;span style="font-size: x-small;"&gt;[UPDATE: Nov 17, 2012: The video of this talk is at&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;http://pyvideo.org/video/1479/building-new-communities]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
Good afternoon, and thank you for inviting me. It’s always intimidating to talk to an audience which is so technically capable. Today, though, I am hoping that we can look at a non-technical topic that has implications for everyone who is interested in Python: how do we promote the Python language and improve the development process?&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;DO EXISTING COMMUNITIES WORK?&lt;/b&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Let me begin by saying that I have invested huge amounts of time in the Python community, and I believe that it has a well-deserved reputation as one of the more welcoming open source communities. So today I am talking more broadly than just Python. What I say applies, I believe, to many open source communities.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
This talk is being given at an unprecedented time in human history. Clearly these things are a matter of interpretation, but nowadays it’s hard to find someone that doesn’t agree that the modern world is failing to meet the needs of many of its inhabitants.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Historically, we are living in strange times, The world human population reached 7 billion, depending on which figures you choose to believe, between October 2011 and March 2012, only twelve years after it reached 6 billion. According to one UN estimate it’s possible that population will reach ten billion before reaching any kind of stability, and that population in Africa could triple in this century. However you interpret these figures it is obvious that most governments are going to be struggling with population growth in a world where they are already finding it difficult to manage things to everyone’s satisfaction.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
So I have a lot of questions, and not many answers. Being a geek, my approach attempts rationality—we have to take into account what we know about human behavior, differences between the various national and political cultures in which people live, and so on. In an increasingly crowded world it is easy to feel threatened by governmental and economic systems that are posited on continuous growth.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
When I was young an organization called the Club of Rome produced a report called “The Limits to Growth,” positing that the finite nature of many resources could, if growth were not checked, lead to cataclysmic failures in supply of the very things that keep us alive: clean air, clean water, and nutritious food. This is where climate change deniers got their start, and yet from recent work it appears that the report was, within its limitations, a very accurate projection of certain futures.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
My own vision of the future tends, I must admit, towards the catstrophic. I think it is entirely possible that the human race will wipe itself out simply by continuing to foul its own nest and ignoring the toxic environment it is creating. So I see it as important to try and bring this to people’s attention, and to do what I can to ensure that we (the human race) build a sustainable future for ourselves and the other species we have to share this huge ball of mud we call Earth with.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;HEY, ISN'T THIS PYCON?&lt;/b&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
All of this might seem a very long way from our little open source world. I can already hear people thinking that I am abusing my position as a keynote speaker to stand on a political soap box and peddle my socialistic ideas. I admit I am a socialist, and those who know me also know that I am happy to stand on a soap box at times. But this is not one of those times.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Context, however, is everything. So I want to place my remarks today in the context of a world that isn’t working, that isn’t equitable, and in which ever larger divisions are opening up: between the poor and the rich in almost any country you like to name, between poor countries and rich countries, and so on. Huge amounts of resource are being wasted on machinery to wipe each other out. This is particularly noticeable in my current home country, the USA, which has 11% of the world’s population and yet is responsible for over 40% of all military expenditures, more than the next 14 top-spending countries put together. One might wonder what they are afraid of, but these expenditures certainly give them clout in the geopolitical sphere.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Open source communities, the Python community included, have growth problems of their own. According to &lt;a href="http://dirkriehle.com/2008/03/14/the-total-growth-of-open-source/" target="_blank"&gt;Armit Deshpande and Dirk Riehle&lt;/a&gt; the number of lines of open source code is growing exponentially. This is a management problem of some magnitude, which is not being addressed at the moment. They suggest that open source applications generated revenues of $1.8 billion in 2006, and certainly growth has continued unimpeded since. Of course that $1.8bn represented only about three-quarters of one percent of total software revenues, so there is still a long way to go.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.slideshare.net/timoreilly/the-clothesline-paradox-and-the-sharing-economy-pdf-with-notes-13685423" target="_blank"&gt;Tim O'Reilly made a sensible case this year&lt;/a&gt; that open source is responsible for&amp;nbsp;increasing small business revenues of a single hosting company’s user base by $180 billion&amp;nbsp; And, of course, &amp;nbsp;many proprietary software products nowadays contain significant open source components.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;GET PAID TO BUILD STUFF?&lt;/b&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
I have said many times that the emergence of open source represents a new economic phenomenon. It’s as though, when railways were needed in the United States, a bunch of people had said “You know, that’s a great idea. Let’s go build a railway system,” taken up their picks and shovels and headed off to work. Of course you can’t build a railway without access to heavy engineering, which is arguably difficult to open source. Similarly, most individuals would not find it cost-effective to make their own computers from scratch, or to interconnect them in the way that the infrastructure of the Internet does.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Just the same, the emergence of Linux as a powerful force in the software world, and the somewhat anarchic, less-than formal management of the whole Internet (despite the belief of many US politicians that the Internet should be managed by the US as a divine right) should convince us that it’s possible for individual and group initiatives to take hold and prosper in today’s rather strained commercial environments.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
I understand that open source is not the exclusive domain of unpaid experts. Nowadays a lot of companies are paying programmers and other staff to assist with the creation of open source software projects. Many different models are used to try and recoup the investments made, but the fact remains: it is now commonly accepted that there is value to creating common infrastructure whose presence benefits a large proportion of the community rather than a single individual or organization. Of course such ideas often seem, particularly in the USA, socialistic and therefore suspect, but it is still true that large companies like HP, IBM and Microsoft are enthusiastically involved in myriad open source projects. They aren't generally thought of as having socialist tendencies.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;HOW IS SOFTWARE BUILT?&lt;/b&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.multunus.com/images/CopyofBalancedswdevelopment-e1334671302237.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="290" src="http://www.multunus.com/images/CopyofBalancedswdevelopment-e1334671302237.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://www.multunus.com/2011/02/software-development-as-a-balance&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Here’s a fairly typical example of the “software development lifecycle.” It lists a large number of activities and requirements, which deserve to be looked at in detail.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Whether all these activities are strictly necessary or not could be a pleasant discussion over drinks, but I get the definite impression that many open source projects aren’t engaged in any kind of formal process. This freedom, of course, is one of the things that attracts many people into the open source world, and I would be the last person to suggest that unnecessary work should be involved in software production. Nevertheless, open source projects are predominantly run vby programmers, and often all project members are programmers.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;WHO BUILDS SOFTWARE?&lt;/b&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.ambysoft.com/artwork/agileTeamLarge.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="310" src="http://www.ambysoft.com/artwork/agileTeamLarge.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://www.ambysoft.com/essays/agileRoles.html&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="p4"&gt;
This is a typical conception of the way software is developed in the agile development world. There are many different ways to think about the development process. Arguably, none of them is specifically right or wrong. But when you think about commercial projects the size of Python, there will be many more people involved than just programmers. So Python, like most other open source projects, has to press developers into service to fill the other roles, or leave them unfilled.&lt;br /&gt;
&lt;br /&gt;
WE need to think about whether this works to the&amp;nbsp;ultimate&amp;nbsp;advantage of our projects, or whether it is really a rather inefficient way to produce software.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;SOME DEVELOPER ROLES&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-z3IiTo1vuI0/UJJEtOEwISI/AAAAAAAABXo/kNhovmCuwE4/s1600/2012-11-01_10-45-09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://4.bp.blogspot.com/-z3IiTo1vuI0/UJJEtOEwISI/AAAAAAAABXo/kNhovmCuwE4/s400/2012-11-01_10-45-09.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
Above are just some of the roles that a large-ish software development requires. I would argue that lots of the time projects focus largely or even solely on the programming task, with some design work. Many of the other roles do not offer attractive work for developers, who therefore ignore the need to fill them, often to the project’s great detriment.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
A prime example here is the Python documentation. Good as it is in comparison with many other open source projects (and it &lt;i&gt;is&lt;/i&gt;&amp;nbsp;good, because&amp;nbsp;there has been a lot of hard work put in on it), it still sucks. Its organization is mostly based on a fifteen-year-old structure, back when Python was a smaller and somewhat different language. I still have no idea why, when I want documentation on the Python standard types (int, list, dict, and so on) I have to look in the Standard Library documentation. They are available without any need for an import statement, so why are they documented with the library?&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Of course anyone who has used Python seriously for more than a year knows these things, and can usually find out where to look for the information they need, but this is entirely the wrong emphasis. The first need for documentation is when you are learning a language, and then the&amp;nbsp;information&amp;nbsp;you need should be readily available. Who is the advocate for a rewrite or reorganization of the documentation? Nobody in the current development team relishes such a task, because we don’t have technical authors and editors as a part of our community. And yet this issue causes learners way more pain than it should, and even turns people away from the language.&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
This brings me to my central thesis: if we don’t broaden our community to include such people we are unlikely to achieve the world domination we all jokingly feel that Python could achieve. I know from my work over the last eighteen years, and from visiting Python gatherings like this one all over the world, that Python is poised for massive growth. It would be possible, if a concerted effort was made, to make Python the first programming language of choice for literate students. The world has woken up to the fact that computational thinking is an important skill in today’s complex societies, and some feel that Python is its ideal expression.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
So, do we want to slam the doors, say “No, we like things the way they are, we aren’t going to change”? I suspect that some developers will feel that way. But as a PSF director I have to be mindful of our duty to promote the development of the language and grow the international community, and so I have to force myself to look for deficiencies than can be rectified. This means looking outwards, and trying to include people who can fill the necessary roles.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
The alternative, of course, is either to ignore the need for a role to be filled or to have someone fill it whose time would be better spent writing code. Neither is an entirely satisfactory solution.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;BEING MORE INCLUSIVE&lt;/b&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
Sarah Novotny, one of the OSCON conference chairs, wrote of &lt;a href="http://radar.oreilly.com/2011/08/open-minds-and-open-source-community.html" target="_blank"&gt;her experience at the 2011 conference&lt;/a&gt;: "We must challenge the idea that if someone really wants to use a piece of software, he or she will be willing to slog through half-written documentation, the actual code base and an unkind user interface."&amp;nbsp;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
This is an approach that I have tried to promote to Python developers, with rather limited success. I can think of several reasons why this should be so. Here are some classic signs that the &lt;i&gt;status quo&lt;/i&gt; is being defended:&lt;/div&gt;
&lt;ul class="ul1"&gt;
&lt;li class="li3"&gt;Considering the cost of switching before you consider the benefits&lt;/li&gt;
&lt;li class="li3"&gt;Highlighting the pain to a few instead of the benefits for the many&lt;/li&gt;
&lt;li class="li3"&gt;Focusing on short-term costs instead of long-term benefits, because the short-term is more vivid for you&lt;/li&gt;
&lt;li class="li3"&gt;Embracing sunk costs&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p3"&gt;
We need to try and broaden our development community to include people with the necessary skills, even though we aren't necessarily very comfortable getting close to them. This makes sense to me as a historical perspective: back in "the old days", using an open source project was highly likely to involve you as a contributor as well. Nowadays there are many other roles for contributors to fill: bug reporters, technical writers, bloggers, testers, and I am sure all you core Python developers have your own ideas for roles that could reduce &lt;b&gt;your&lt;/b&gt; workload.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
David Eaves of Mozilla corporation has done a lot of work on how software communities can use metrics to improve their development process and monitor community involvement. &lt;a href="http://www.youtube.com/watch?v=qOB6J4E53Hc&amp;amp;feature=BFa&amp;amp;list=PL93FC98105B19725C&amp;amp;index=21" target="_blank"&gt;He asks relevant questions&lt;/a&gt; like “why are bugs in this section of the code taking twice as long to be reviewed?” and “who has contributed consistently over the last 18 months, but not in the last 30 days?”&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
If we are prepared to answer questions like that we can take the information, both qualitative and quantitative, and then use it to continue to improve our communities.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;INVOLVING THE COMMUNITY&lt;/b&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
We must accept that not every member of the community wants to be involved outside a fairly narrow specialism. This is fine with me: I would much rather have contented community members contributing their skills than seeing members pressed to leave their comfort zone.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
At the same time, there is considerable evidence that an &lt;b&gt;inability to contribute&lt;/b&gt; is a source of frustration to would-be active members. So if we want to grow our community we need to be welcoming and, dare I say, open. We need to make sure that the barriers to entry into our community are as low as possible, and that people whose ideas may not yet be well-informed do not find a hostile environment when they join.&lt;br /&gt;
&lt;br /&gt;
The forthcoming revision of the &lt;a href="http://python.org/" target="_blank"&gt;python.org web site&lt;/a&gt; is an attempt to democratize the content and lower the barriers to making a contribution. The intention is to allow contributors to directly affect the content in their area of competence, without requiring mediation from a "webmaster" team who are familiar with the gory internal technical details of the site. More such initiatives are required.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;b&gt;REACHING OUT&lt;/b&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
So, it's important to reach out to the people with the skills to make our community, and our software, better: more user-friendly, more robust, better documented, and so on. The existing community does a fantastic job, but think how much better things could be if we added new skills by growing the community outside its current demographic. While one of the advantages of open source, to many participants, is its lack of corporate rules and regulations, we nevertheless should accept that we do face many of the same problems that businesses do. If we can find new and creative solutions to those problems then that's great. If we can't, however, we shouldn't necessarily ignore the solutions that have already been developed in more traditional environments.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Besides wanting to increase the size of the existing Python community, I would also like to see the Python world reaching out more determinedly to groups supporting specific applications areas such as accounting, law, the conference industry, the print industry, the transport industry, the aerospace industry, and so on.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
The scientific community is a stellar example of the sort of collaborations I envisage. There, the community members are mostly not interested in Python for its abstract beauty, and don't have any ambition or desire to contribute to the core. They use Python because it has been demonstrated to be an effective tool for solving their problems. We need to remember that's the motivation of almost all users outside the development community.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
In my secret life as a conference organizer I am using Python in the shape of Eldarion's Symposion project. While it does currently have many failings, my approach is to use it intensively, and feed back the problems to the developers for fixes. As funds become available we intend to invest in improvements that will make our job as conference organizers easier and more effective. I am hoping that eventually, once we have together built a project that non-specialist users can be happy with, Eldarion and The Open Bastion will find a market among the small to medium-sized conferences, and another industry will start to fall under Python's sway.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Repeating such efforts across many industries is, in my opinion, the best way to make Python popular, and its many existing successes are a stable platform on which to base this work.&amp;nbsp; This will involve effort, since we have to explain open source to people who are not as familiar as we are with the milieu, and whose interest in it is limited to the areas in which it can help them get their jobs done.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;b&gt;TAKING RESPONSIBILITY&lt;/b&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Python is a mature technology, and it's time to consider it, if not exactly a finished work, at least as something that can be presented as a feature-complete tool for use in many different application areas. The UK government, having accepted that its computer education has gone through a period in the "dark ages," has accepted that computational thinking is a core skill in today's world. It looks as though Python will be adopted aggressively as a teaching language. I hope that success will be mirrored in many other countries.&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
If we are prepared to engage others with different skill sets from our own, and listen to their needs, we can build new communities who will complement our existing skill set and help us promote Python world wide in a multitude of application areas. The benefits for the Python community, though, are only a tiny portion of the gains to be made.&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
I mentioned at the start of my talk that the world is demonstrably broken. Central governments have neither the resources nor the imagination nor the flair to apply global solutions to local problems. It seems self-evident to me that the best way to solve local problems is locally, and so we need to persuade these governments to release some of their control and their funding to the communities with the power to solve those problems.&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
Eric Sterling gave &lt;a href="http://eric%20sterling%20gave%20a%20very%20engaging%20keynote%20at%20djangocon%20this%20year%20in%20which%20he%20suggested%20that%20it%20was%20important%20for%20a%20much%20broader%20cross-section%20of%20the%20population%20to%20make%20their%20needs%20known./" target="_blank"&gt;a very engaging keynote at DjangoCon this year&lt;/a&gt; in which he suggested that it was important for a much broader cross-section of the population to make their needs known.&amp;nbsp;As a group who only have to see an itch to start thinking about how to scratch it, I think that open source devotees are in a position to provide some valuable answers to the question of how we fix some of today's complex problems. This means leaving their comfort zone, reaching out and engaging with government and commerce at all levels,&amp;nbsp;and I want to persuade open source communities to use their considerable skills to do so. The world is broken, but I think with determination and goodwill we can help to fix it.&lt;br /&gt;
&lt;br /&gt;
This is an exciting time to be a Python programmer!&lt;/div&gt;
&lt;div class="p4"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=Ub8HUq7S7Pg:E64HurUb3qY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=Ub8HUq7S7Pg:E64HurUb3qY:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=Ub8HUq7S7Pg:E64HurUb3qY:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/Ub8HUq7S7Pg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/2035271169307114405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=2035271169307114405&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2035271169307114405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2035271169307114405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/Ub8HUq7S7Pg/building-new-communities.html" title="Building New Communities" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-z3IiTo1vuI0/UJJEtOEwISI/AAAAAAAABXo/kNhovmCuwE4/s72-c/2012-11-01_10-45-09.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/11/building-new-communities.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8MQ3c_eSp7ImA9WhNTEE8.&quot;"><id>tag:blogger.com,1999:blog-496482.post-8192682757559689381</id><published>2012-10-12T02:35:00.002-04:00</published><updated>2012-10-12T02:38:02.941-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-12T02:38:02.941-04:00</app:edited><title>I Should Have Known Installing Windows Would Be Painful</title><content type="html">As a geek I tend to have a bit of hardware lying around unused, so when a neighbor told me his laptop was starting to flake I suggested he might want to borrow one from me rather than put his wallet under further strain.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Two likely candidates emerged. One was a venerable Dell Precision M6300 and the other a Lenovo ThinkPad X6. I thought both had Linux installed, so I was unpleasantly surprised to see that the Dell didn't have a bootable image on it. Never mind, I thought, I can use the ThinkPad. Alas, the person who'd installed Linux hadn't given me a record of any passwords, so I called his father and I'm expecting a message back soon enough that it didn't seem worth rooting the machine (which in retrospect seems like the best option).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Bright ideas can hit at any time, and it was now that I remembered I had both the original install disks and a Windows 7 Upgrade set. My neighbor is actually a Windows user, so it seemed like a friendly act to install Windows for him. Since the disk had nothing on it there seemed to be little harm in requesting a complete installation, which I did. After answering a few questions it was grinding away, so I went out. When I arrived back a couple of hours later the installation was almost complete, waiting for the entry of my Windows product key. Which I duly entered from the Windows 7 Upgrade box. Product key invalid.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Being of a dyslexic nature, not to mention getting on enough to be experiencing some long-sightedness, these episodes are painful for me. Suffice it to say that after three further attempts involving the use of a flashlight and a magnifying glass I was positive the product key was entered correctly. So I figured since I was installing an upgrade maybe the Windows product key required was that of my original Windows installation. So all I had to do was turn the laptop upside down and peer again. The same performance with flashlight and magnifying glass was again repeated multiple times. All no go.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So there I was, with a stuck Windows installation. The only way out that I could see was to call Microsoft, who helpfully gave the support number in a little booklet in the Upgrade box. After I enter three or four digits to indicate I am having activation problems with Windows I am finally told that Microsoft are sorry, but they are now closed and I should call back during their normal working hours. &lt;i&gt;They do not tell me what their normal working hours are&lt;/i&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I guess I'll call back tomorrow, and bite my tongue rather than pointing out you never have any of this nonsense with Linux. When I need support there, the best in the world are available on the Internet.&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=CNF0GMesZ20:c9bH46EBJZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=CNF0GMesZ20:c9bH46EBJZE:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=CNF0GMesZ20:c9bH46EBJZE:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/CNF0GMesZ20" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/8192682757559689381/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=8192682757559689381&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/8192682757559689381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/8192682757559689381?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/CNF0GMesZ20/i-should-have-known-installing-windows.html" title="I Should Have Known Installing Windows Would Be Painful" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/10/i-should-have-known-installing-windows.html</feedburner:origLink></entry><entry><title type="text">Links for 2012-09-18 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/Y8Fx-HeJxqM/steve.holden" /><updated>2012-09-19T00:00:00-07:00</updated><id>http://del.icio.us/steve.holden#2012-09-18</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.fontsquirrel.com/fontface/generator"&gt;Create Your Own @font-face Kits | Font Squirrel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/Y8Fx-HeJxqM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2012-09-18</feedburner:origLink></entry><entry><title type="text">Links for 2012-09-15 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/WUh5UBWlfQY/steve.holden" /><updated>2012-09-16T00:00:00-07:00</updated><id>http://del.icio.us/steve.holden#2012-09-15</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bubbleideas.com/"&gt;@bubbles - letters of expression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.musicsmasher.net/"&gt;Music Smasher&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/WUh5UBWlfQY" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2012-09-15</feedburner:origLink></entry><entry><title type="text">Links for 2012-09-10 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/0UENJG1u3gU/steve.holden" /><updated>2012-09-11T00:00:00-07:00</updated><id>http://del.icio.us/steve.holden#2012-09-10</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.html5rocks.com/en/tutorials/security/content-security-policy/"&gt;An Introduction to Content Security Policy - HTML5 Rocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://writecodeonline.com/php/"&gt;Test run php code online, right here - WriteCodeOnline.com/PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://compilr.com/rohu2187/php-test/index.php"&gt;Online Compiler &amp;amp; IDE for C, Java, C# and C++ | Compilr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/0UENJG1u3gU" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2012-09-10</feedburner:origLink></entry><entry><title type="text">Links for 2012-09-09 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/6FPy2sRF4ZU/steve.holden" /><updated>2012-09-10T00:00:00-07:00</updated><id>http://del.icio.us/steve.holden#2012-09-09</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/3422786/zend-oauth-with-twitter-single-access-tokens"&gt;php - Zend OAuth with twitter single access tokens - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=uVqp1zcMfbE"&gt;How to build Android App with HTML5/CSS/JavaScript - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/6FPy2sRF4ZU" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2012-09-09</feedburner:origLink></entry><entry><title type="text">Links for 2012-09-08 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/ODyMbPst9SU/steve.holden" /><updated>2012-09-09T00:00:00-07:00</updated><id>http://del.icio.us/steve.holden#2012-09-08</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/abraham/twitteroauth/issues/44"&gt;Issue #44: Failed to validate oauth signature and token &amp;middot; abraham/twitteroauth &amp;middot; GitHub&lt;/a&gt;&lt;br/&gt;
$connection-&gt;http_header['date']&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.twitter.com/docs/auth/oauth/single-user-with-examples"&gt;Single-user OAuth with Examples | Twitter Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/ODyMbPst9SU" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2012-09-08</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8EQXk7eCp7ImA9WhJVFEQ.&quot;"><id>tag:blogger.com,1999:blog-496482.post-3193152832651141585</id><published>2012-09-01T05:34:00.001-04:00</published><updated>2012-09-01T06:20:00.700-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-01T06:20:00.700-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="raspberry pi" /><title>Adafruit Pi Cobbler</title><content type="html">&lt;div&gt;&lt;p&gt;Here is a picture of the extension board I built in about ten minutes this evening.&lt;/p&gt;
&lt;p&gt;The kit includes a ribbon cable to attach to the Pi, and the little circuit board plugs in to your prototyping board on which you can build the rest of your circuitry.&lt;/p&gt;
&lt;p&gt;This will be useful for projects too large for the Proto Plus to accommodate.&lt;/p&gt;
&lt;br/&gt;&lt;img src='http://lh6.ggpht.com/-rc67Q8g8UJI/UEHWk_YJwII/AAAAAAAABW4/IEbBIljH_YU/2012-09-01_02-33-42_187.png' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=xGmTSNfQizA:8nZDp00dpYs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=xGmTSNfQizA:8nZDp00dpYs:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=xGmTSNfQizA:8nZDp00dpYs:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/xGmTSNfQizA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/3193152832651141585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=3193152832651141585&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/3193152832651141585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/3193152832651141585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/xGmTSNfQizA/adafruit-pi-cobbler.html" title="Adafruit Pi Cobbler" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-rc67Q8g8UJI/UEHWk_YJwII/AAAAAAAABW4/IEbBIljH_YU/s72-c/2012-09-01_02-33-42_187.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/09/adafruit-pi-cobbler.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8BSHo9fSp7ImA9WhJVFEQ.&quot;"><id>tag:blogger.com,1999:blog-496482.post-4845929002801088206</id><published>2012-09-01T04:54:00.001-04:00</published><updated>2012-09-01T05:14:19.465-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-01T05:14:19.465-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fun" /><category scheme="http://www.blogger.com/atom/ns#" term="maker" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="prototyping" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="raspberry pi" /><title>Pi With Proto Plus</title><content type="html">&lt;div&gt;
Now I can blog straight from my phone I thought I'd post this picture of my Raspberry Pi, in its case with the lid removed and with my new Adafruit Proto Plus board in place.&lt;br /&gt;
&lt;br /&gt;
The add-on board is well-designed, allowing you to easily tap the Pi's signals for use on the breadboard (an optional extra I couldn't resist) or for external circuits.&lt;br /&gt;
&lt;br /&gt;
I have also bought a couple of Adafruit's Pi Cobbler kits, which will let me attach the fully-enclosed Pi to a larger breadboard. I am happy to say my soldering skills are returning despite a thirty-year hiatus.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://lh3.ggpht.com/-0Nt3p5wWnQo/UEHNK_o6YHI/AAAAAAAABWk/TsNxJpG7H8o/2012-09-01_01-40-50_195.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Note: I am not impressed by the way editing a mobile blog post immediately requires me to insert paragraph separators in what until then appeared to be a well-formatted post.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=k5pL9gSyUu0:RlLVlFdZhlc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=k5pL9gSyUu0:RlLVlFdZhlc:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=k5pL9gSyUu0:RlLVlFdZhlc:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/k5pL9gSyUu0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/4845929002801088206/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=4845929002801088206&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/4845929002801088206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/4845929002801088206?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/k5pL9gSyUu0/pi-with-proto-plus.html" title="Pi With Proto Plus" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-0Nt3p5wWnQo/UEHNK_o6YHI/AAAAAAAABWk/TsNxJpG7H8o/s72-c/2012-09-01_01-40-50_195.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/09/pi-with-proto-plus.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8NR306cCp7ImA9WhJWF00.&quot;"><id>tag:blogger.com,1999:blog-496482.post-862596991674507570</id><published>2012-08-23T04:01:00.001-04:00</published><updated>2012-08-23T04:01:36.318-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-23T04:01:36.318-04:00</app:edited><title>Spam Report</title><content type="html">Spam still exists.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=rinSvin0iXM:pvH2oGidCG4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=rinSvin0iXM:pvH2oGidCG4:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=rinSvin0iXM:pvH2oGidCG4:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/rinSvin0iXM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/862596991674507570/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=862596991674507570&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/862596991674507570?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/862596991674507570?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/rinSvin0iXM/spam-report.html" title="Spam Report" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/08/spam-report.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRXg4eyp7ImA9WhJQGEQ.&quot;"><id>tag:blogger.com,1999:blog-496482.post-6636721200809537048</id><published>2012-08-02T03:58:00.001-04:00</published><updated>2012-08-02T03:58:34.633-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-02T03:58:34.633-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="noller" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pycon" /><category scheme="http://www.blogger.com/atom/ns#" term="raspberry pi" /><title>Noller Does It Again</title><content type="html">I mentioned in &lt;a href="http://bit.ly/NZaM1F"&gt;my recent OSCON write-up&lt;/a&gt; that I had the privilege of announcing that this year's winner of the Frank Willison Memorial Award was Jesse Noller. The most spectacular contribution to his win was the amazing PyCon that he chaired with record results: over 2,200 delegates and an amazing program opening with dancing robots that, coming only ten years after PyCon took its first faltering steps, hit me quite emotionally.&lt;br /&gt;
&lt;br /&gt;
Jesse is once again PyCon chair, and he has just announced &lt;a href="http://bit.ly/QhtCER"&gt;the most amazing addition&lt;/a&gt; to next year's PyCon. Delegates will be able to sign up their over-12 kids for a short course, using pygame, to help them understand why their moms and dads are so crazy about Python. Not only will the workshop be free, each registered kid will be &lt;i&gt;given&lt;/i&gt;&amp;nbsp;a free Raspberry Pi computer complete with an operating system on an SD card.&lt;br /&gt;
&lt;br /&gt;
I'm so enthusiastic about this I have already approached the organizers, Lynn Root and Katie Cunningham, to offer my services as a classroom assistant. I encourage you to do the same if you enjoy helping kids to learn.&lt;br /&gt;
&lt;br /&gt;
The conference is still eight months away, people. Heaven only knows what other fabulous treats he has in store for us all. Go, Jesse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=VlZtVTCvizI:Hl3KOJ93zzQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=VlZtVTCvizI:Hl3KOJ93zzQ:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=VlZtVTCvizI:Hl3KOJ93zzQ:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/VlZtVTCvizI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/6636721200809537048/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=6636721200809537048&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/6636721200809537048?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/6636721200809537048?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/VlZtVTCvizI/noller-does-it-again.html" title="Noller Does It Again" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/08/noller-does-it-again.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIEQHw5fip7ImA9WhJQF0Q.&quot;"><id>tag:blogger.com,1999:blog-496482.post-1408552110720263785</id><published>2012-08-01T00:48:00.003-04:00</published><updated>2012-08-01T00:48:21.226-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-01T00:48:21.226-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Question Question</title><content type="html">So, if the ladies of PyPy started their own organization would they be the PyPyLadiesLadies?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=eLiA6Gp-tO8:c5RZtYFAM5w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=eLiA6Gp-tO8:c5RZtYFAM5w:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=eLiA6Gp-tO8:c5RZtYFAM5w:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/eLiA6Gp-tO8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/1408552110720263785/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=1408552110720263785&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/1408552110720263785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/1408552110720263785?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/eLiA6Gp-tO8/question-question.html" title="Question Question" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/08/question-question.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMFRHczeyp7ImA9WhJQEkU.&quot;"><id>tag:blogger.com,1999:blog-496482.post-2400257606125636273</id><published>2012-07-26T00:02:00.001-04:00</published><updated>2012-07-26T03:06:55.983-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-26T03:06:55.983-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="djangocon" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>DjangoCon Comes to DC</title><content type="html">Last year The Open Bastion asked the Django community where they wanted to hold the next couple of &lt;a href="http://djangocon.us/"&gt;DjangoCon&lt;/a&gt;s (since this is a community event, we figured that it made sense to ask). The first answer from most people was “this place close to my home town,” and the second one from the Django Software Foundation was “you’ll have to decide.” So much for community consultation.&lt;br /&gt;
&lt;br /&gt;
In fact we did interact with the denizens of the django-users list, and eventually settled on &lt;a href="http://djangocon.us/"&gt;Washington, DC&lt;/a&gt; for this year and downtown Chicago for the next. That being the case, the next thing was to recruit the community volunteers. Fortunately this wasn't difficult, since for DC they essentially turned up in my inbox one day basically asking what they could do. So far they have arranged a great sprinting facility, and become involved in the financial assistance of impecunious delegates. It's great to work with an enthusiastic team of volunteers&lt;br /&gt;
&lt;br /&gt;
People sometimes ask why a conference like DjangoCon uses volunteer help, and the answer to that question is complex. First of all, the volunteers can take care of areas we don't have the time or the local knowledge for. Those close to the conference are invaluable in performing on-site actions ahead of time. Secondly, their involvement retains the essential community feel of the conference. Our role is principally to ensure that the venue provides what it should and the logistics of the conference run smoothly (and thereby hangs a tale).&lt;br /&gt;
&lt;br /&gt;
Anyway, with 39 days to go to DjangoCon we are entering the final checklist phase. Apologies to the sponsors, as we have been dilatory getting their details up on the site. We are working on it.&lt;br /&gt;
&lt;br /&gt;
It's going to be interesting being in DC, to which I lived close for almost fifteen years. The hotel, thank heavens, is just around the corner from the airport—one of DC's advantages is that you can be downtown very quickly after clearing the airport. Just make sure you fly into Reagan National (DCA) and not Dulles (IAD) or Baltimore-Washington (BWI) unless you have to.&lt;br /&gt;
&lt;br /&gt;
Now the schedule has been announced Early Bird tickets have been moving briskly, but it looks as though they won't run out before the Early Bird period ends on August 3. The new Supersaver tickets were popular, though not as many students bought them as we anticipated. There is something for everyone in the schedule, and we'll be featuring the keynotes in a separate blog post soon.&lt;br /&gt;
&lt;br /&gt;
We have a code of conduct, not that different from the PyCon code of conduct. The principal value of such codes is in putting people on notice that certain standards of behavior are required.&lt;br /&gt;
&lt;br /&gt;
One of the things I like most about the Python and Django communities is that the individual members of the community largely feel empowered to police such things informally. This means that most issues never flare up into the kind of ugly incident that we are all tired of reading about because such behavior gets nipped in the bud before it has chance to make serious trouble*.&lt;br /&gt;
&lt;br /&gt;
Running these conferences is an effort, but whether or not they make money it's always gratifying to have people thank us for making the effort to run them. Now that I am no longer the chairman of the Python Software Foundation I am finding other ways to serve the community which has been a major part of my life for the last fifteen years.&amp;nbsp;&lt;span style="background-color: white;"&gt;Making the transition for community leader to open source entrepreneur might not be easy (I have already made a couple of expensive mistakes). I hope I have your support.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: x-small;"&gt;* I realize there is an element of hubris in such assertions, but nevertheless wanted to underline that harassment is taken seriously.&lt;/span&gt;&lt;/b&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=lDABQvoiKBY:PAExTiagL34:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=lDABQvoiKBY:PAExTiagL34:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=lDABQvoiKBY:PAExTiagL34:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/lDABQvoiKBY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/2400257606125636273/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=2400257606125636273&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2400257606125636273?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2400257606125636273?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/lDABQvoiKBY/djangocon-comes-to-dc.html" title="DjangoCon Comes to DC" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/07/djangocon-comes-to-dc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AFSH48eyp7ImA9WhJQE0o.&quot;"><id>tag:blogger.com,1999:blog-496482.post-1771971052769359707</id><published>2012-07-25T21:42:00.000-04:00</published><updated>2012-07-27T02:48:39.073-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-27T02:48:39.073-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="O'Reilly" /><category scheme="http://www.blogger.com/atom/ns#" term="dunking" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="raspberry pi" /><title>Fun and Games at OSCON</title><content type="html">Once again I spent a week in Portland with over 3,000 Open source enthusiasts, developers, business people and community managers at the largest US open source convention. Once again the hallway track was supremely interesting, and there was much of interest in the sessions.&lt;br /&gt;
&lt;br /&gt;
For me there was a little more business than usual, as a new client of &lt;a href="http://theopenbastion.com/"&gt;The Open Bastion&lt;/a&gt; was present and this was an opportunity to learn more about their team, meet people, form impressions, find out how they work and so on. Also the Python language had a stand in the Open Source Pavilion (alongside many other famous open source names), and I took my Raspberry Pi along. It was amazing how many people had heard of the Pi, and very few actually had one. The commonest comment was “I’m still waiting for mine.”
&lt;br /&gt;
&lt;br /&gt;
Alas I again didn't have very much time for the excellent &lt;a href="http://www.communityleadershipsummit.com/"&gt;Community Leadership Summit&lt;/a&gt; which now traditionally precedes OSCON, though I did manage to take part in one session about conflict resolution, and heard much useful stuff in plenary talks. If you are the leader of any open source community group I would definitely recommend going to this (free) event. It's well worth the cost of an extra couple of night's accommodation. Monday was taken up with clerical work, but on Tuesday I did make it to several sessions of the &lt;a href="http://www.oscon.com/oscon2012/public/content/business-leadership-day"&gt;Business Leadership Day&lt;/a&gt; tutorial, and found them sound to excellent.
&lt;br /&gt;
&lt;br /&gt;
Tuesday evening Camp OSCON was held—indoors, due to threatened thunder storms which in the end never transpired. This was a traditional O'Reilly party, open bars, many different types of food in all-you-can-eat quantities, airbrushed fake tattoos, the whole bit. I managed to score four party tickets for a friend who came with his wife and two children. They were excited beyond belief, and it was delightful to see how much pleasure a two-minute stop at the registration desk had created.
&lt;br /&gt;
&lt;br /&gt;
Among the many activities was a dunking stool, allowing three pitches in return for a $10 donation. My major part in the evening's activities was to be (as I thought) the final target of the event. I took my place, and was duly dunked several times. At one point a guy who looked a lot like Tim O'Reilly took a shot. Good heavens, it &lt;i&gt;was&lt;/i&gt;&amp;nbsp;Tim O'Reilly. After failing to unseat me with any of his three pitches he moved closer to the target. Saying “How does this work?” (something I suspect he was not in need of information about) he pressed the target and promptly subjected me to my fifteenth ducking of the evening.
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nHMI2ZjbhWo/UA94Ffgb4yI/AAAAAAAABRs/CjrhwjPNpqs/s1600/7598054918_93a6ae25cc_o.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-nHMI2ZjbhWo/UA94Ffgb4yI/AAAAAAAABRs/CjrhwjPNpqs/s320/7598054918_93a6ae25cc_o.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Tim O'Reilly in the dunking tank&lt;br /&gt;
&lt;i&gt;Photo from Flickr by&amp;nbsp;&lt;a href="http://www.flickr.com/photos/aaronpk/"&gt;aaronparecki&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
When I emerged from the tank I thought it was all over, but then I saw Tim getting into it. Even though I was still wet I couldn't resist, and promptly made the necessary donation to put me at the front of the line. I am happy to say by the flukiest luck I managed to turn him from dry to wet with my first pitch.&lt;span style="background-color: white;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;Success! My two remaining pitches failed to hit the target, so I went off to the men's room to dry and change. When I emerged I couldn't resist going up to the target, saying&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;“How does this work?”&lt;/span&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;and subjecting him to a second dunking.&lt;/span&gt;
&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
I went around back to pack my wet clothes and he insisted on reaching over to shake my hand with a big smile, which reassured me that there were no hard feelings and that the cancellation of my &lt;a href="http://www.oreillyschool.com/certificates/python-programming.php"&gt;O'Reilly School of Technology classes&lt;/a&gt; was not imminent. Tim O'Reilly is a good sport.
&lt;br /&gt;
&lt;br /&gt;
Wednesday's keynotes were thought-provoking. I particularly like the fact that the open source world appears to be becoming less shy about the value that it creates in the economy. Tim O'Reilly suggested that successful organizations create more value than they capture, and was very scathing about the short-term thinking and transparent absence of business ethics on Wall Street.&lt;br /&gt;
&lt;br /&gt;
He did some very interesting sums suggesting that open source is a huge net plus to the economy. He likened the situation to that in energy: if we use a clothes dryer to dry our clothes that energy is metered and measured and accounted for. If we dry our clothes on the line using solar power nothing ever gets recorded. Similarly the benefits of open source software have not been sufficiently trumpeted to the world, and so are taken for granted by the commercial enterprises that profit from them because they do not perceive any significant costs. He ended by thanking those of us who have been working in open source for a long time for our forward thinking and our contributions.
&lt;br /&gt;
&lt;br /&gt;
Much of the rest of the day I spent talking to people either on the Python stand or in the hallway track. It is always impressive to learn about the range of applications to which open source is being put. The medical faction are much in evidence. The most surprising discovery I made is that at the core of the award-winning open source&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/VistA"&gt;VistA&lt;/a&gt; system is a MUMPS database, technology whose roots must go back over forty years. I sure hope there's a Python API.&lt;br /&gt;
&lt;br /&gt;
Thursday morning's keynotes were more practical in nature, my favorite being the talk from Canonical's &lt;a href="http://www.oscon.com/oscon2012/public/schedule/speaker/14790"&gt;Mark Shuttleworth&lt;/a&gt;. I'm a sucker for technology, and his explanation of how the &lt;i style="font-weight: bold;"&gt;juju&lt;/i&gt;&amp;nbsp;system lets you&amp;nbsp;build and model complex, scalable systems on the desktop and then easily migrate them to the cloud for testing or production was quite something. The practical demonstration of migrating a service from Amazon to the H-P Cloud service was impressive* (though I was amused to see he did at one point get bitten by a minor gremlin).
&lt;br /&gt;
&lt;br /&gt;
There was a frankly disappointing interview with Microsoft's Senior Director for Open Source Communities, Gianugo Rabellino. Not only did it sound as though it might have been scripted by Microsoft's public relations department, it seemed to be mostly "sound and fury, signifying nothing." I am aware that Microsoft** are now a significant contributor to (for example) the Linux kernel and other open source projects, but it's difficult to have a company's representatives talking about open source in "snake oil" terms one year and then see them hold out the olive branch the next.&lt;br /&gt;
&lt;br /&gt;
There is still a substantial mistrust of Microsoft's motivations and purposes among a part of the open source community, as evidenced by a subtle change in the audience's mood. They will have to work hard to prove that they deserve a place in the open source community. This is a pity, because Microsoft employ many smart technical people who fully "get" open source, but it is taking the corporate side a long time to come to terms with it.
&lt;br /&gt;
&lt;br /&gt;
The Python stand was very busy again, as were those of the other open source projects. The day went quickly, and I got to listen to a couple of track talks, but again a lot of my time was spent in the hallways. I also spent some time observing the O'Reilly and Convention Center staff, who appeared for the most part to be a model of curtesy and efficiency. In the evening I was invited to the chairmens' party thrown by co-chairs &lt;a href="http://www.oscon.com/oscon2012/public/schedule/speaker/1"&gt;Edd Dumbill&lt;/a&gt; and &lt;a href="http://www.oscon.com/oscon2012/public/schedule/speaker/76338"&gt;Sarah Novotny&lt;/a&gt;. This was, as is often the case, a fairly low-key affair attended by many likable people, and I was surprised to see that it was after midnight when we left. Time does indeed fly in good company.
&lt;br /&gt;
&lt;br /&gt;
This meant I had to hustle and get my beauty sleep as I was a small part of Friday's keynotes, &lt;a href="http://www.youtube.com/watch?v=wYo_SUidpS8"&gt;announcing a well-deserved Frank Willison Memorial Award&lt;/a&gt; for Jesse Noller. Jesse is the classic busy person you should ask to get things done. His work rate is phenomenal, and he held down a full-time job while putting together the most amazing PyCon ever and going through a good deal of personal disturbance. I can't think of anyone who deserves it more, and the PSF Board was in full agreement that Jesse should be the recipient.
&lt;br /&gt;
&lt;br /&gt;
It was fascinating to spend a little time backstage and see the technology and the production values that now support OSCON. The show is professional from its head to the tip of its toes. The keynote session was followed by more hallway track and meetings while the sessions continued, then back for the closing plenary session at which Open Source Awards were handed out and the final entertainment was provided by Paul Fenwick, always worth listening to even when his topic is light.
&lt;br /&gt;
&lt;br /&gt;
After the formal end of the conference I had a couple of business meetings and went home (using public transport, because I live in Portland, hooray!) for a well-earned nap. Feeling much better-rested the next day I was happy to host the inaugural OSCON Survivors' Brunch at the &lt;a href="http://portland.citysearch.com/profile/8470104/portland_or/tabor_hill_cafe.html"&gt;Tabor Hill Cafe&lt;/a&gt;, a local place I make sure to&amp;nbsp;patronize&amp;nbsp;while I am at home. This was kind of an &lt;i&gt;ad hoc&lt;/i&gt;&amp;nbsp;event, attended by about a dozen of my favorite open source people, and I will repeat it in a more organized way next year.
&lt;br /&gt;
&lt;br /&gt;
OSCON always leaves you with plenty of food for thought, and this year I was much more encouraged about the prospects of open source entering (or even, dare I suggest, becoming) the mainstream. Mark Shuttleworth revealed OEM connections this year and claimed that next year 5% of all computers will ship with Ubuntu pre-loaded. I'd recommend buying your ticket for next year's OSCON as soon as they come on sale.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;* H-P were a major OSCON sponsor this year; this was a shrewd move&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;** Microsoft also sponsored OSCON&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="background-color: white;"&gt;&lt;i&gt;[Disclosure: Steve Holden's business runs technical events and conferences,&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;i&gt;and Steve profits from the sale of O'Reilly School Python classes]&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=yJVYZsHsDoU:yRp6_jA2FIs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=yJVYZsHsDoU:yRp6_jA2FIs:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=yJVYZsHsDoU:yRp6_jA2FIs:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/yJVYZsHsDoU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/1771971052769359707/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=1771971052769359707&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/1771971052769359707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/1771971052769359707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/yJVYZsHsDoU/fun-and-games-at-oscon.html" title="Fun and Games at OSCON" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-nHMI2ZjbhWo/UA94Ffgb4yI/AAAAAAAABRs/CjrhwjPNpqs/s72-c/7598054918_93a6ae25cc_o.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/07/fun-and-games-at-oscon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMDRno_cSp7ImA9WhJREkk.&quot;"><id>tag:blogger.com,1999:blog-496482.post-4323470939670003357</id><published>2012-07-14T00:34:00.000-04:00</published><updated>2012-07-14T00:34:37.449-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-14T00:34:37.449-04:00</app:edited><title>Back in the USSA</title><content type="html">&lt;span style="background-color: white;"&gt;My return to the USA after four weeks in Europe is to remarkably pleasant weather,&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;which&lt;/span&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;bodes fair for OSCON next week. It is something of a blow to be back in harness, but made more bearable by the thought of seeing so many friends again at &lt;a href="http://oscon.com/"&gt;OSCON&lt;/a&gt;, and so many more at &lt;a href="http://djangocon.us/"&gt;DjangoCon&lt;/a&gt;—in Washington, DC for the first time this year. So at least I am working towards sympathetic ends.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
During the trip I spent a week on vacation in a small town in Southern Spain. After an intensive week of packing and wrapping in London I then flew to Florence for EuroPython. I was charmed by EuroPython, and delighted (having been unable to attend last year) by Florence.&lt;br /&gt;
&lt;br /&gt;
This was my first visit to Florence. Arriving from London's City airport
wasn't terribly pleasant, as the city's fairly small airport is under
renovation and the line for the passport check didn't even enter the
terminal building for about thirty minutes. Fortunately I had not checked
any baggage, so I was soon in a taxi once I left the terminal building. [Since I don't want to end on a sour note I will mention now that the outbound experience was also troubled by long albeit air conditioned lines, apparently due to computer systems issues; I wrote this down to teething troubles].&lt;br /&gt;
&lt;br /&gt;
A €20 fixed cab fare took me to the Grand Hotel Mediterraneo, where the
conference was already heating up—literally: the temperature was around
35°C (100°F) on that first day, and the weather was baking all week.&amp;nbsp;&lt;span style="background-color: white;"&gt;The Italian organizers had worked hard to ensure a smooth flow to the conference, although the two-floor nature of the event inevitably meant that the staircase traffic was heavy at times. The air conditioning found it hard to keep up when rooms were full, and I sympathise with the venue—it is difficult to deal with such extreme temperatures.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
My
delayed arrival meant that I had missed Guido's “Not the State of Python” talk, at which I later heard he claimed he had used the same slides as a
previous presentation but said completely different things. The BDFL was certainly relaxed and entertaining as he later answered questions from the community relayed by Harald Armin Massa. When accosted later in person he appeared to be in fine form, and although he is traveling a little less
(the lucky man) he was due to go on to Zurich on business after the conference.
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white;"&gt;The program, primarily in English with one Italian track, was at all times worthwhile and often entertaining and stimulating. It was a pleasure to spend time with acquaintances old and new, and find out some of the amazing things that the Python community has been up to. The lightning talks were again chaired by Harald Armin Massa, now billing himself as “Lightning Talk Man” and I should have liked to see more than I did.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The Python Software Foundation was among the conference's sponsors, and ran a stand with the PSF's new conference kit on display for the first time. I spent some time on there with Marc-André Lemburg, Pat Campbell (the PSF's administrator) and Ewa Jodlowska (its Conference Coordinator), Quite a few people expressed an interest in the &lt;a href="http://psfmember.org/"&gt;new associate member scheme&lt;/a&gt;,&amp;nbsp;&amp;nbsp;and we had new stickers to pass out to those who signed up. The ever-popular Python stickers also disappeared fast, and we handled inquiries about advertising in the new Python brochure whose production Marc-André has been leading.&lt;br /&gt;
&lt;br /&gt;
This was a very special conference for me in many ways, as I ease back into community member status. I was able to spend some relatively relaxed time with old friends whom I rarely see. The food in Florentine restaurants is excellent, and each night was a different feast. At least one Italian admired my restraint in leaving a part of my &lt;i&gt;secondi&lt;/i&gt;, the entrée dish. Little did he know that I was already at bursting point. Beware, portions tend to be generous, and the food so good that it &lt;i&gt;is&lt;/i&gt;&amp;nbsp;an effort to stop eating. After that, I approached conference meals with rather less gusto.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-P7Tpiyu3pEs/UACMh05Y14I/AAAAAAAABAI/PGfVAaKKfXU/s1600/bastos.jpeg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img alt="Henrique Bastos face" border="0" src="http://2.bp.blogspot.com/-P7Tpiyu3pEs/UACMh05Y14I/AAAAAAAABAI/PGfVAaKKfXU/s1600/bastos.jpeg" title="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Henrique Bastos from Brazil&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Over the weekend I was joined by a friend from the UK and with Henrique Bastos and his wife we took the open-topped bus tour of the city. A walk through the Boboli Gardens to the old town, across the Ponte Vecchio and past the Uffizi Palace saw us ensconced in a typical Florentine café/bar with a bunch of young guys who were happy to advise on food and drink. A taxi back to the hotel seemed advisable after a most diverting (though somewhat tiring) day.&lt;br /&gt;
&lt;br /&gt;
On the Sunday, before returning to the UK we took the open-topped bus out of town and winding through the hills to Fiesole, a place to which I shall return to enjoy at greater leisure in future, I hope.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Tip9-Kd4534/UACJCDjlgbI/AAAAAAAAA_8/qBrOW_eumWg/s1600/2012-07-13_13-44-36.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="172" src="http://3.bp.blogspot.com/-Tip9-Kd4534/UACJCDjlgbI/AAAAAAAAA_8/qBrOW_eumWg/s400/2012-07-13_13-44-36.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: xx-small;"&gt;Fiesole, Florence, from above [courtesy of Google Maps]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Oh, and during it all people from (I'm guessing) over twenty nations got together and shared a huge amount of knowledge about Python, thereby helping to grow the Python community and bond it together through the forge of shared experience. What could be better than that?&lt;br /&gt;
&lt;br /&gt;
Bravo to the organizing team for keeping everything running so smoothly. Those guys will be a hard act to follow, but fortunately nobody is going to have to try just yet. Yes, EuroPython will run in Florence for an unprecedented &lt;i&gt;third&lt;/i&gt;&amp;nbsp;year. My advice would be to book early.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=MRUkmVhdrww:9u4BZIlHpXE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=MRUkmVhdrww:9u4BZIlHpXE:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=MRUkmVhdrww:9u4BZIlHpXE:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/MRUkmVhdrww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/4323470939670003357/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=4323470939670003357&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/4323470939670003357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/4323470939670003357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/MRUkmVhdrww/back-in-ussa.html" title="Back in the USSA" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-P7Tpiyu3pEs/UACMh05Y14I/AAAAAAAABAI/PGfVAaKKfXU/s72-c/bastos.jpeg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/07/back-in-ussa.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8MR348eip7ImA9WhVUFEk.&quot;"><id>tag:blogger.com,1999:blog-496482.post-5614052736216375658</id><published>2012-05-19T06:02:00.000-04:00</published><updated>2012-05-19T11:21:26.072-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-19T11:21:26.072-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blog" /><title>Twelve Years a Blogger</title><content type="html">Some years were busier than others, but I am still here, and still finding the time to blog occasionally. I try not to be put off by (or unduly stimulated by) thoughts such as “It's been too long since I put something out” or “it's been so long now it would look lame to post something.”&lt;br /&gt;
&lt;br /&gt;
If I have something I think is worth posting and (the kicker) the time to do it then I will by all means write something down. Just been a bit busy this lifetime is all ...&lt;br /&gt;
&lt;br /&gt;
“Life’s what happens to you while you’re busy making other plans”—&lt;i&gt;John Lennon&lt;/i&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=EQNt6wYk7Wg:vNDU2tfT3kE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=EQNt6wYk7Wg:vNDU2tfT3kE:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=EQNt6wYk7Wg:vNDU2tfT3kE:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/EQNt6wYk7Wg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/5614052736216375658/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=5614052736216375658&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/5614052736216375658?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/5614052736216375658?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/EQNt6wYk7Wg/twelve-years-blogger.html" title="Twelve Years a Blogger" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/05/twelve-years-blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUCQ3k5cSp7ImA9WhVUE0U.&quot;"><id>tag:blogger.com,1999:blog-496482.post-6169426114866531777</id><published>2012-05-18T18:29:00.001-04:00</published><updated>2012-05-18T18:31:02.729-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-18T18:31:02.729-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="chicago" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="midwest" /><category scheme="http://www.blogger.com/atom/ns#" term="TheOpenBastion" /><title>Open Django Central Now Open to Sponsors</title><content type="html">&lt;br /&gt;
The Open Bastion, the subsidiary that runs events and conferences, has announced that its&amp;nbsp;&lt;a href="http://opendjango.com/central/"&gt;Open&amp;nbsp;Django Central&lt;/a&gt; event, new to the calendar this&amp;nbsp;year, is now (yes, we know) finally &lt;a href="http://holdenweb.com/contact/Open%20Django%20Sponsorship"&gt;open to sponsors&lt;/a&gt;. Sponsorship is very reasonably priced, and&amp;nbsp;the more money that comes in sponsorship the better&amp;nbsp;we can make the event for the local Django community.&lt;br /&gt;
&lt;br /&gt;
This represents a rare opportunity to connect with&amp;nbsp;a diverse group of “djangstas” from the greater&lt;br /&gt;
Chicago and surrounding areas. The conference is&amp;nbsp;targeted not just at technologists but also at&lt;br /&gt;
others wishing to engage with the open source world&amp;nbsp;and find out what these technologies can do.&lt;br /&gt;
&lt;br /&gt;
We hope that by adding your name to the roster of&amp;nbsp;those supporting Open Django Central you will&lt;br /&gt;
indicate your enthusiastic support of and interest in open source&amp;nbsp;technologies, in particular Django and Python. It's easy to &lt;a href="http://holdenweb.com/contact/Open%20Django%20Sponsorship"&gt;ask about becoming a sponsor&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
We are also still looking for speakers, so please &lt;a href="http://holdenweb.com/contact/Potential%20Open%20Django%20Speaker"&gt;let&amp;nbsp;us know of anyone (you included, dear reader)&lt;/a&gt; who might be&amp;nbsp;interested in giving a (technical, not marketing)&amp;nbsp;talk at the conference. Slots are from 30-90 minutes.&lt;br /&gt;
&lt;br /&gt;
And please act now, as time is (yes, we know) getting short!&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=pXBbz3raIWA:2_G7Sj90ZtA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=pXBbz3raIWA:2_G7Sj90ZtA:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=pXBbz3raIWA:2_G7Sj90ZtA:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/pXBbz3raIWA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/6169426114866531777/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=6169426114866531777&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/6169426114866531777?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/6169426114866531777?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/pXBbz3raIWA/open-django-central-now-open-to.html" title="Open Django Central Now Open to Sponsors" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/05/open-django-central-now-open-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMBQHg7cSp7ImA9WhVUE00.&quot;"><id>tag:blogger.com,1999:blog-496482.post-7971868624090746252</id><published>2012-05-17T20:20:00.000-04:00</published><updated>2012-05-17T20:20:51.609-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-17T20:20:51.609-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="law" /><category scheme="http://www.blogger.com/atom/ns#" term="iniquity" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="refactoring" /><category scheme="http://www.blogger.com/atom/ns#" term="principle" /><title>Refactor All the Laws</title><content type="html">In the Python world we try to keep things simple. There are very good reasons for this. Brian Kernighan, a well-known programmer responsible for parts of the design of UNIX™*, once famously observed that&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Debugging is twice as hard as writing code in the first place. Therefore, if you write the code as cleverly as possible you are, by definition, not smart enough to debug it.&lt;/blockquote&gt;
&lt;br /&gt;
This principle is not observed by programming beginners, who know enough to get themselves in trouble, but often not enough to get out of it. Anyone who has been coding a long time (and believe me, I have been coding a&lt;i&gt;&amp;nbsp;long &lt;/i&gt;time) knows not to get too smart lest they write code they cannot debug. It's slightly different when you are struggling to establish an architecture (are we a library or a framework?), but once the production environment is established you really want to be able to crank it out without having to rethink each corner case.&lt;br /&gt;
&lt;br /&gt;
I even once went so far as to write a pre-processor for BASIC PLUS that operated on BASIC lines (which had to be numbered, whereas the input to the pre-processor did not) much as an assembler did to lines of symbolic machine code. In other words, I made BASIC code relocatable and made library sharing between projects much simpler. Because it was really more like a linking loader than an assembler (though it had features in common with both), I called it Blink. But that was thirty-odd years ago, when I was writing accounting systems. It certainly let us crank the code out. Happy days.&lt;br /&gt;
&lt;br /&gt;
Of course Blink no longer exists. I am not one of those programmers who keeps every line of code they have ever written, regarding most of it as ephemeral: built to perform a task, and no longer relevant once the task is complete. I do not envy the curators of computer museums, who must decide what is worth keeping, and what can be kept running. You can do that with hardware, just about, but with software the profusion makes it impossible to track what's going on. Perhaps soon the open source world will find fixes for this bug—certainly the appearance of public DVCS systems will help. Some software, however, seemingly goes on for ever and ever.&lt;br /&gt;
&lt;br /&gt;
It was very pleasing earlier this year to see a bunch of BBC Micros of ancient vintage still doing what they were designed for thirty years later. I wonder whether we'll ever see a 30-year-old iPhone anywhere but a museum? (To be fair, you don't see many BBC Micros nowadays). There are relatively few engineers building control systems and the like for a lifetime much longer than that.&lt;br /&gt;
&lt;br /&gt;
Of course most systems of any age have been modified somewhat from their original purpose. You build a billing system, then the sales department come along and say "we could double our revenues if we could bill more flexibly," and the dance begins. You fix your programs to handle new requirements, they come along with even newer requirements, you add more fixes, and so on. Unless you are very, very disciplined, and are working with well-designed well-written code (&lt;i&gt;e.g.&lt;/i&gt;&amp;nbsp;if someone else wrote the program badly you may be screwed) you can end up finding that the change you make, while it meets the new requirements, no longer meets earlier requirements because of unintended consequences from your change. In simple terms, your program has become so complex that fixing it in one place breaks it in another.&lt;br /&gt;
&lt;br /&gt;
In the software world we can use regression tests to alleviate the worst pain from this kind of activity (in addition to the unit tests we use to establish basic functions operate correctly). Whenever you find an error in the program, you write a test that fails with the problematic release but should pass when the system is fixed. This has the advantage that if your changes cause unanticipated failure then there should be a high probability that at least one existing test should fail. The presence of such regression tests sets a sort of “high water mark” for software performance. It has to be at least good enough to pass all the tests, or something is broken. In the presence of the tests we can &lt;i&gt;refactor&lt;/i&gt;&amp;nbsp;our code (reorganize and re-structure it)&lt;br /&gt;
&lt;br /&gt;
Imagine now, if you can, a computer program two hundred years old**. Yes, I know, that pre-dates even Charles Babbage's analytical engine by more than a century. Never mind that. Just suppose that by some freak of probability some primitive computing technology had been developed by an unsung genius, and that its output is so valuable that it &lt;i&gt;must&lt;/i&gt;&amp;nbsp;be kept running†. The order of society itself depends on this program running, and yet it&amp;nbsp;has never had a single test written for it. Don't blame the authors, when the constitution was written there was no such thing as test-driven development.&lt;br /&gt;
&lt;br /&gt;
And yes, I &lt;i&gt;am&lt;/i&gt;&amp;nbsp;talking about the law of the land as something in need of refactoring. In just the same way as software engineering has benefited from &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;test-driven development&lt;/a&gt;&lt;/i&gt;, so the law would, in my immodest contention, benefit from &lt;i&gt;principle-driven development&lt;/i&gt;. By this I mean to suggest that the lawyers, when proposing a law, should list some desirable outcomes (tests) which somehow engender the law's purpose. If we could at least get agreement on what such principles might be, and the fact that they &lt;i&gt;are&lt;/i&gt;&amp;nbsp;desirable, then we might establish benchmarks for the operation of a law and be able to reject amendments that violate the principles (break the tests, in coding terms).&lt;br /&gt;
&lt;br /&gt;
Just as sometimes we get our tests wrong, and have to rewrite them, sometimes legislators will occasionally get the principles wrong and need to rewrite those. But a discussion of principle would be a matter for all-out debate, whereas it seems to me that modifications of the law would be less contentious as long as none of the underlying principles were violated (in other words, as long as the law introduces no regression errors).&lt;br /&gt;
&lt;br /&gt;
The present laws are full of special cases, introduced because of the lobbying of those with special interests or to suit one particular constituency. It's time we stopped placing so much emphasis on passing new laws and decided instead to add principles to the existing law so that we could start to detect more easily when the law started to diverge from society’s desires about the way it operates. In time the law could be cleaned up in much the same way as a crufty old program can be re-engineered to bring it in line with more modern requirements.&lt;br /&gt;
&lt;br /&gt;
At present the law is a bug ugly ball of string, and there are many professionals making a good living finding and exploiting loopholes that operate to the advantage of their clients. We need more foresight, and we need a legal system that effectively says “this law &lt;i&gt;cannot&lt;/i&gt;&amp;nbsp;be amended, and is not intended to operate, to provide tax benefits to those who do not require them” or “this law cannot be used to the benefit of anyone with above-average income.” While this isn;t a perfect proposal, it would perhaps serve to focus people's interest on those who are specifically intended to benefit from the passage of particular laws, and the principles might over time become an accepted set of goals for new legislation.&lt;br /&gt;
&lt;br /&gt;
When I think of how crufty code gets after just a few years I shudder to think what the law must look like from the inside. It's certainly obvious that the legislature has not been operating “by the pexxople, for the people and of the people.” It's time we changed that. Since I have no vote I'd appreciate it if my voter friends could execute this change at the first available opportunity.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;* Merely one in a very long list of achievements, as any Internet search will reveal&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;** Or, perhaps, 236 years old&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;† Believe it or not, at the time of the "year 2k" panic some banks discovered they were running (in compatibility mode) some programs originally written in 1400-series autocode &lt;i&gt;for which they no longer had the source&lt;/i&gt;. This would have been more surprising back in the days when banks were regarded as reliable and responsible. Happy days.&lt;/span&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=S9GXOh-eVu8:ddDy36nQaHY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=S9GXOh-eVu8:ddDy36nQaHY:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=S9GXOh-eVu8:ddDy36nQaHY:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/S9GXOh-eVu8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/7971868624090746252/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=7971868624090746252&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7971868624090746252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7971868624090746252?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/S9GXOh-eVu8/refactor-all-laws.html" title="Refactor All the Laws" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/05/refactor-all-laws.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YHRX47cSp7ImA9WhVVEkQ.&quot;"><id>tag:blogger.com,1999:blog-496482.post-7555279251531059923</id><published>2012-05-06T03:51:00.001-04:00</published><updated>2012-05-06T03:58:54.009-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-06T03:58:54.009-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="news" /><category scheme="http://www.blogger.com/atom/ns#" term="chairman" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="psf" /><title>Swan Song</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-mvU6WRZNgv8/T6YtPCzN5CI/AAAAAAAAA4I/BOZICZpLMkI/s1600/IMG_2724.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-mvU6WRZNgv8/T6YtPCzN5CI/AAAAAAAAA4I/BOZICZpLMkI/s320/IMG_2724.jpg" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
Well, I don't really know where to begin. Finally, and somewhat unexpectedly, there is an end to the tunnel entitled “Chairman of the Python Software Foundation.” When I stood for election to the board this year my manifesto included a declaration that by the same time next year I would no longer &amp;nbsp;be chairman. The board at my request asked for nominations for a Vice Chairman to prepare to take over from me at a planned point in the future.&lt;br /&gt;
&lt;br /&gt;
As the inauguration of the new board coincides with the unfortunate necessity of consulting orthopedic surgeons I am availing myself of the non-profit equivalent of the "get out of jail free" card, and handing over to the new chairman Van Lindberg (currently Vice Chairman, and the careful steward of PyCon in 2010 and 2011), somewhat earlier than originally anticipated. This will allow me time to rest and discover what comes next. Fortunately I don't anticipate any real problems, but it is good to have a Chairman waiting in the wings, supported by a Board that will continue to take capable care of business while I pay attention to other things. I know that the whole Python community will be behind them.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/-97iQmZoxE0c/T6YswmW5EqI/AAAAAAAAA34/4WXD-VMtUH4/s1600/VanLindberg.jpeg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-97iQmZoxE0c/T6YswmW5EqI/AAAAAAAAA34/4WXD-VMtUH4/s1600/VanLindberg.jpeg" /&gt;&lt;/a&gt;To those who wish to email me about PSF matters, please continue to do so if you don't know who else to contact (hint: our administrator and secretary Pat Campbell stands ready to help at all times). I will continue to try and ensure that all mail reaches an appropriate (&lt;i&gt;i.e.&lt;/i&gt;&amp;nbsp;not &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/dev/null&lt;/span&gt;) destination. Please do all you can to help the new chairman and board to help you. I am sure that the Foundation will under their leadership continue to move from strength to strength, reinforcing its mission of promoting the Python language and encouraging the growth of the international Python community. I remain on the board for the remainder of my elected term, and look forward to helping the new team strengthen the ties we have forged with the widest possible Python community.&lt;br /&gt;
&lt;br /&gt;
Thank you for the opportunity to serve you. Good luck, Van, and over to you.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=54ygosZ9EJc:U5bDzJ0gEbI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=54ygosZ9EJc:U5bDzJ0gEbI:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=54ygosZ9EJc:U5bDzJ0gEbI:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/54ygosZ9EJc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/7555279251531059923/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=7555279251531059923&amp;isPopup=true" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7555279251531059923?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/7555279251531059923?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/54ygosZ9EJc/well-i-dont-really-know-where-to-begin.html" title="Swan Song" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-mvU6WRZNgv8/T6YtPCzN5CI/AAAAAAAAA4I/BOZICZpLMkI/s72-c/IMG_2724.jpg" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/05/well-i-dont-really-know-where-to-begin.html</feedburner:origLink></entry><entry><title type="text">Links for 2012-05-05 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/MK9wEImX1_s/steve.holden" /><updated>2012-05-06T00:00:00-07:00</updated><id>http://del.icio.us/steve.holden#2012-05-05</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://delicious.com/steve.holden/"&gt;Delicious.com - Discover Yourself!&lt;/a&gt;&lt;br/&gt;
You know, it would be really nice if bit.ly and delicious were better friends.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/MK9wEImX1_s" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2012-05-05</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAMSX46fCp7ImA9WhVSEEQ.&quot;"><id>tag:blogger.com,1999:blog-496482.post-779247615592866773</id><published>2012-03-06T22:26:00.001-05:00</published><updated>2012-03-06T22:26:28.014-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T22:26:28.014-05:00</app:edited><title>To My Followers</title><content type="html">Wow. Didn't even know I had any. Sorry about that. Been busy. Should get a few posts out during PyCon.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=SwxU9V-9fnE:YvNY6Ogvffg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=SwxU9V-9fnE:YvNY6Ogvffg:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=SwxU9V-9fnE:YvNY6Ogvffg:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/SwxU9V-9fnE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/779247615592866773/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=779247615592866773&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/779247615592866773?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/779247615592866773?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/SwxU9V-9fnE/to-my-followers.html" title="To My Followers" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/03/to-my-followers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UDQX05eCp7ImA9WhVSEU4.&quot;"><id>tag:blogger.com,1999:blog-496482.post-8426718368461039628</id><published>2012-01-03T08:44:00.001-05:00</published><updated>2012-03-07T10:47:50.320-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-07T10:47:50.320-05:00</app:edited><title>Help Wanted</title><content type="html">If you are here because you think this post might be advertising a job, please accept my apologies.&amp;nbsp;If, on the other hand, you are looking for work, this might be the very place for you. If you don’t see the difference between “a job” and “work” then there might be something to learn here.&lt;br /&gt;
&lt;br /&gt;
“Hold hard,” I hear you say (I have a very vivid and somewhat eighteenth-century imagination). “Surely that is a contradiction in terms?” (My New Year’s resolution to be less pedantic stops me from pointing out that you have ended a non-interrogative sentence with a question mark)(and my pedantry neatly negates the resolution). I take instead the consultant's approach of arguing that it depends what you mean by ‘job’ and ‘work’.&lt;br /&gt;
&lt;br /&gt;
If you take your definitions from the market economy then a job and work are often pretty strictly equated. This point of view would not cut much ice with many of the people I know, though. I am delightedly sharing the company of many of them at &lt;a href="http://us.pycon.org/"&gt;PyCon&lt;/a&gt; this week* who work in open source, though. In their case the work they do on behalf of the Python community, and other open source communities too in many cases, is often done outside of their working lives. Admittedly many of the have the smarts to make a halfway decent living by exercising the same or related skills professionally, but that isn't necessarily a bad thing..&lt;br /&gt;
&lt;br /&gt;
If you don't really understand how the open source ‘ecosystem’ works you might be fascinated to learn that huge swathes of the technology that is used every nanosecond to process unthinkable volumes of information across the Internet was created by people with the necessary skills who also happened to believe that it was more important to create the new technologies than it was to organize profitable industries around proprietary solutions that were the sole responsibility of single organizations. Those people, the kind of people who put their effort where their mouth is, are people I will support. And have, most recently as chairman of the Python Software Foundation.&lt;br /&gt;
&lt;br /&gt;
Open source devotees generally seem to me to try and avoid organizational issues or involvement. This is perhaps understandable: why would people who value logic and reason highly want to involve themselves in environments where decisions are frequently made on irrational grounds? “To make the decisions more rational” is one answer. But if that was the only advantage of involvement it would asymmetrically benefit the irrational, and why should the rational waste their time? (&lt;i&gt;&lt;a href="http://www.imdb.com/title/tt0387808/"&gt;Idiocracy&lt;/a&gt;&lt;/i&gt;, anyone?)&amp;nbsp;Most open source programmers would rather code than consider strategy and tactics for a non-profit, even if the non-profit is supporting their principal programming language. That's human nature, and we should be grateful for it: coders gotta code, and the rest of us benefit from that. But it can leave a gap if we don't want open source to simply become the plaything of market forces.&lt;br /&gt;
&lt;br /&gt;
The point is, some of the things business does, and some of the ways business organizes, are sensible for any enterprise of moderate size. Allegedly, corporations are legally people (and the band played “Believe it if you like”).&amp;nbsp;Most businesses currently pay far too little attention to their social responsibilities.&amp;nbsp;If people went around behaving like corporations do then they would soon get what in London used to be referred to as “a swift punch up the bracket”. One of the strengths of a market economy is supposed to be that the market can be changed by mass behaviors. There doesn't seem to be much sign of that in the banking industry at present, despite public confidence in them being at an all-time low. And who can be surprised about the lack of confidence from a populace whose equity has just been looted by rapacious bastards who see bonuses in the billions as their right?&lt;br /&gt;
&lt;br /&gt;
At the moment there is an uneasy tension between commercial organizations and open source, although that has not stopped both sides from profiting by its adoption. I would like to think that while the non-profit side can learn from commerce it can also teach commerce a few things about how to manage technical resources. We can, at least, try leading the horse to water. If it won't drink then I say let the damned thing die of dehydration. The signs are very clear that the present order can only be maintained by increasing levels of brutality (“the floggings will continue until morale improves”). Adapting to change was never the forté of the dinosaurs.&lt;br /&gt;
&lt;br /&gt;
On the principle of “if you can't beat them, join them,” I think it's time for the open source movement to admit a few things. Such as: not everything can be done with software; foundations need skills that aren't readily available from the geek population (whether through lack of ability or inclination is hardly material). The Foundation I chair is likely, from existing evidence, to be receiving a fair amount of support as the economy recovers—and no, I do not claim to know when that will be. This will mean that more things need to be done, which in turn means more administration and accounting—two things I am as bad at as many of my acquaintance are.&amp;nbsp;The inevitable impact of scaling up the organization is to require more of the kind of services that geeks (for want of a better or more descriptive term) are ill suited to providing. So either things will get clogged up or we will have to somehow involve more people who can provide the necessary “non-geek” skills.&lt;br /&gt;
&lt;br /&gt;
Some time ago the Foundation hired an Administrator, who is now employed full-time, in acknowledgment of the need for such a skills base. I am happy to say that our Adminstrator and Secretary Pat Campbell has become an indispensable part of the Foundation. She continues to prove her merit by making things happen with &lt;i&gt;no geek input!&lt;/i&gt;&amp;nbsp;We cannot necessarily add staff at will, however, because we don't want to be one of those non-profits that exists to pay exorbitant salaries to its management for very little reason. Contributions should primarily go towards &amp;nbsp;funding &lt;a href="http://www.python.org/psf/mission/"&gt;the mission&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
There are many other areas in which we are stretched, and perhaps surprisingly many of those roles do not require much in the way of geek skills. Our Treasurer, dealing valiantly with increasing volumes of financial data as our operations grow, could certainly use assistance. We need help with marketing, to encourage people to join and pay subscriptions for the privilege of being&amp;nbsp;associate members of the Foundation. When the updated web site technology is deployed (still some way off, but definitely more than a gleam in the chairman's eye thanks to the efforts of Jesse Noller) we will also need people who can manage the large and growing volume of content.&lt;br /&gt;
&lt;br /&gt;
All this is exceptionally good news for anyone in the "open source industry," and people with Python skills in particular. Python is so hot now it's difficult to believe. Major companies have stood inline to join up as PyCon sponsors, and the money this has brought in helps us to keep the cost down. People are looking for Python training at many different levels, and need help establishing programming best practices and the like if training is not your métier.&lt;br /&gt;
&lt;br /&gt;
The Python community as a whole is such an incredible resource that it's difficult to imagine a skill we might need that someone doesn't possess in at least some measure. But maybe it's time to admit that in reality in job X we could probably only deliver 79% of the performance we would like to, and that has to address specific functions. If we can find a volunteer for Job X we release a developer to program; if the volunteer only happens to do an 80% job that's still a win.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;* No, none at all, sorry. PyCon has been turning people away for weeks now.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;This post has been in draft for some time, hence the screwy dateline. Don't ask me why Blogger does this.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=uBsNu5EmNVI:C2pBaKVoiNc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=uBsNu5EmNVI:C2pBaKVoiNc:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=uBsNu5EmNVI:C2pBaKVoiNc:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/uBsNu5EmNVI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/8426718368461039628/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=8426718368461039628&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/8426718368461039628?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/8426718368461039628?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/uBsNu5EmNVI/help-wanted.html" title="Help Wanted" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2012/01/help-wanted.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGQXs6fSp7ImA9WhRXEEw.&quot;"><id>tag:blogger.com,1999:blog-496482.post-2423819233541420234</id><published>2011-12-16T01:02:00.001-05:00</published><updated>2011-12-16T01:03:40.515-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-16T01:03:40.515-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="finally" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="implementations" /><category scheme="http://www.blogger.com/atom/ns#" term="try" /><category scheme="http://www.blogger.com/atom/ns#" term="exceptions" /><title>Nothing Stranger Than This?</title><content type="html">I’ve just been reading Stack Overflow’s &lt;i&gt;&lt;a href="http://stackoverflow.com/questions/1995113/strangest-language-feature" target="_blank"&gt;Strangest Language Feature&lt;/a&gt;&lt;/i&gt;&amp;nbsp;thread, where I discover that (at the time of writing) the highest-voted Python complaint is actually about Java, but the complainant claims that JavaScript and Python are the same. So after I've got this off my chest I'll perhaps go back and look for the top complaint specifically about Python. In Java the complained-of code looks like this:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; try {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; } finally {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
This naturally translates into&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; try:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; finally:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return False&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
which, under every recent CPython I've tried (2.{6,7}.X and 3.X), returns False. What I can’t understand is why anyone would expect anything different. If the &lt;b&gt;finally&lt;/b&gt;&amp;nbsp;suite contains a return then it’s pretty apparent that the programmer of that function wanted the function to always return a specific value. If there had been code following the &lt;b&gt;return&lt;/b&gt;&amp;nbsp;statement would the complainers have expected that to be executed? I'm not sure I see the reason for the complaint at all. What would the complainers have this function return? What is the &lt;b&gt;return&lt;/b&gt;&amp;nbsp;statement supposed to do?&lt;br /&gt;
&lt;br /&gt;
This gave rise to a further thought: does a &lt;b&gt;return&lt;/b&gt;&amp;nbsp;in a &lt;b&gt;finally&lt;/b&gt;&amp;nbsp;clause suppress any active exception?&amp;nbsp;This is only one of a number of exception-handling issues I've been thinking about lately, kind of noodling around the corner cases. More later.&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=uMO8WOXwJHw:oTeznXdbjRU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=uMO8WOXwJHw:oTeznXdbjRU:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=uMO8WOXwJHw:oTeznXdbjRU:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/uMO8WOXwJHw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/2423819233541420234/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=2423819233541420234&amp;isPopup=true" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2423819233541420234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/2423819233541420234?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/uMO8WOXwJHw/nothing-stranger-than-this.html" title="Nothing Stranger Than This?" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>7</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2011/12/nothing-stranger-than-this.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cGR3s6fyp7ImA9WhRQEE4.&quot;"><id>tag:blogger.com,1999:blog-496482.post-5442382439170126889</id><published>2011-12-04T15:37:00.000-05:00</published><updated>2011-12-04T15:37:06.517-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-04T15:37:06.517-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="smart phone" /><category scheme="http://www.blogger.com/atom/ns#" term="corporate stupidity" /><category scheme="http://www.blogger.com/atom/ns#" term="democracy" /><category scheme="http://www.blogger.com/atom/ns#" term="carrier iq" /><title>Competition: Working to Keep You Enslaved?</title><content type="html">The Digital Millenium Copyright Act was never my favorite legislation. It was the first of a number of moves that threatens the freedom of the end users of intellectual property (by which under many circumstances I refer to those who have &lt;i&gt;paid good money&lt;/i&gt;&amp;nbsp;for their real or virtual goods or services) to freely enjoy that which they have purchased. Since the Python world generally prefers not to place onerous licenses on users this isn't generally an issue in my working life, but it affects other aspects of it. Those other aspects are shared with the other millions on the planet who use a smartphone.&lt;br /&gt;
&lt;br /&gt;
For all the brouhaha there's been about occupations this year (and I for one regard them as a welcome sign that Americans have realized that the future of democracy is up to them) the most insidious occupation I can think of is the one organized by wireless telephone carriers against their customers. With the aid of an application called “Carrier IQ” many handsets, supplied with software packages approved by their respective carriers, have been equipped with the provision to spy on the holder.&lt;br /&gt;
&lt;br /&gt;
This issue was brought to mind by the news that the &lt;a href="http://www.softwarefreedom.org/"&gt;Software Freedom Law Center&lt;/a&gt; have &lt;a href="http://www.groklaw.net/article.php?story=20111203184859667"&gt;filed paperwork with the Library of Congress&lt;/a&gt; seeking an exemption to the DMCA allowing smartphone users the full legal right to run any damned software they choose on their handsets, with or without the approval of the carrier (who is naturally in most cases the supplier of the handset).&lt;br /&gt;
&lt;br /&gt;
I’ve not&amp;nbsp;yet&amp;nbsp;heard of any case where Carrier IQ has been deployed to the detriment of the phone’s owner, but I haven't done extensive research in that area. As someone who teaches security I know that a capability, once created, is highly likely to eventually be used, and often for unintended purposes—if only by those whose approach to moral and ethical questions is one of expediency. Thank heavens so few such people exist.*&lt;br /&gt;
&lt;br /&gt;
This raised for me the broader question of why, in a society that lauds the value of competition, are wireless carriers allowed to sell ’phones that are locked to their networks? If the argument is that doing so allows them to use the profits from the handset to subsidize the contract, my answer is thanks very much, I will &lt;i&gt;pay&lt;/i&gt;&amp;nbsp;for a&amp;nbsp;handset&amp;nbsp;that I can take to another supplier if they offer better services, and you can reduce the price of my contract since you do not have to subsidize my handset purchase, thank you very much. And I want the best possible price on the&amp;nbsp;’phone, please, or I'll buy it from Mr. SmallerProfits round the corner.&lt;br /&gt;
&lt;br /&gt;
By all means let the corporate giants carry on doing business as they are, but also please require them to supply unlocked handsets on request. That way I don't have to suffer weeks in Europe where I am forced to use an international roaming plan&amp;nbsp;that charges me a minimum $100 a month &lt;i&gt;on top of my regular service charge&lt;/i&gt;&amp;nbsp;for a parsimonious 70 MB of data and something ridiculous for each few measly bits after that. Haven't they heard we live in the information age? Colleagues from other countries simply re-SIM their telephones locally and pay $30 for a card that gives them 2GB of data and 2 calling hours, topped up electronically by credit card.&lt;br /&gt;
&lt;br /&gt;
It causes me to smile sometimes when I hear Americans blindly praising their country for properties it does not possess, or for being best in the world at activities in which they are in fact well down the league table (mathematics and science education being among those activities). To my mind, America is quite admirable enough in reality without the support of false information. I chose to live here, after all. But when I discover that Israel of all countries (and no, we won’t get into that here, thank you) has made it illegal to sell locked handsets, I have to wonder how much&amp;nbsp;that particular legislative concession would&amp;nbsp;cost the cellular companies in the USA and why the move hasn't been emulated here. I am sure the lobbying costs expended against such a change would be formidable.&amp;nbsp;Times are good in the boardrooms right now.&amp;nbsp;As the UK magazine &lt;i&gt;Private Eye&lt;/i&gt;&amp;nbsp;says, “treble brandies all round”.&lt;br /&gt;
&lt;br /&gt;
So although I was delighted to see Verizon** issue a categorical statement that none of their devices have ever had Carrier IQ installed, their roaming plan sucks at least as badly as any I have come across. The fact that the charges are so much higher than those of the native carriers smells of anti-competitive practice to me. If competition is so good, why don't they all use handsets that aren't crippled?&lt;br /&gt;
&lt;br /&gt;
So rise up, sisters and brothers, and occupy your handsets. You have nothing to lose but your roaming plans.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;i&gt;* For American readers, this is an irony alert. Or am I being sardonic? The real point is that some people just cannot be trusted. You know who you are.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;i&gt;** The current carrier for both my voice and data cellular services&lt;/i&gt;&lt;/span&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=AaxkZs2-ycY:76vcYojToAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=AaxkZs2-ycY:76vcYojToAg:Jy2wSXVWK38"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=AaxkZs2-ycY:76vcYojToAg:Jy2wSXVWK38" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/AaxkZs2-ycY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://holdenweb.blogspot.com/feeds/5442382439170126889/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=496482&amp;postID=5442382439170126889&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/5442382439170126889?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/496482/posts/default/5442382439170126889?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/AaxkZs2-ycY/competition-working-to-keep-you.html" title="Competition: Working to Keep You Enslaved?" /><author><name>Steve</name><uri>http://www.blogger.com/profile/15732819755000554717</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://3.bp.blogspot.com/_JT1n2tt-4Wg/SfKQKYN1rKI/AAAAAAAAATo/rYHEp6uMOes/S220/myavatar.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://holdenweb.blogspot.com/2011/12/competition-working-to-keep-you.html</feedburner:origLink></entry><entry><title type="text">Links for 2010-12-26 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/v7akNzKj5jk/steve.holden" /><updated>2010-12-27T00:00:00-08:00</updated><id>http://del.icio.us/steve.holden#2010-12-26</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gmap.nurtext.de/examples.html"&gt;gMap - Google Maps Plugin For jQuery | Examples&lt;/a&gt;&lt;br/&gt;
Great code for interfacing with Google Maps wiyh jQuery&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/v7akNzKj5jk" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/steve.holden#2010-12-26</feedburner:origLink></entry></feed>
