<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Fitzgerald Steele &#187; scholarlycommunication</title>
	<atom:link href="http://fitzgeraldsteele.wordpress.com/category/scholarlycommunication/feed/" rel="self" type="application/rss+xml" />
	<link>http://fitzgeraldsteele.wordpress.com</link>
	<description>Usability, User Experience, Social Media, Web Design and Development...</description>
	<lastBuildDate>Mon, 04 Jan 2010 15:59:33 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='fitzgeraldsteele.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/1c947ff76c2910d1ea01c039045e041c?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Fitzgerald Steele &#187; scholarlycommunication</title>
		<link>http://fitzgeraldsteele.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fitzgeraldsteele.wordpress.com/osd.xml" title="Fitzgerald Steele" />
		<item>
		<title>Social Media + Open Access: Transforming Politics and Academia in One Shot</title>
		<link>http://fitzgeraldsteele.wordpress.com/2009/06/22/social-media-open-access-transforming-politics-and-academia-in-one-shot/</link>
		<comments>http://fitzgeraldsteele.wordpress.com/2009/06/22/social-media-open-access-transforming-politics-and-academia-in-one-shot/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 14:22:22 +0000</pubDate>
		<dc:creator>fitzgeraldsteele</dc:creator>
				<category><![CDATA[research]]></category>
		<category><![CDATA[scholarlycommunication]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[election]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[iran]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://fitzgeraldsteele.wordpress.com/2009/06/22/social-media-open-access-transforming-politics-and-academia-in-one-shot/</guid>
		<description><![CDATA[This is a great use of statistics by a couple of PhD candidates at New York University, identifying and quantifying some strong irregularities released by the Iranian Government.
The Devil Is in the Digits: Evidence That Iran&#8217;s Election Was Rigged &#8211; washingtonpost.com
The numbers look suspicious. We find too many 7s and not enough 5s in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=214&subd=fitzgeraldsteele&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is a great use of statistics by a couple of PhD candidates at New York University, identifying and quantifying some strong irregularities released by the Iranian Government.</p>
<p><a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/06/20/AR2009062000004.html?hpid=opinionsbox1">The Devil Is in the Digits: Evidence That Iran&#8217;s Election Was Rigged &#8211; washingtonpost.com</a></p>
<blockquote><p>The numbers look suspicious. We find too many 7s and not enough 5s in the last digit. We expect each digit (0, 1, 2, and so on) to appear at the end of 10 percent of the vote counts. But in Iran&#8217;s provincial results, the digit 7 appears 17 percent of the time, and only 4 percent of the results end in the number 5. Two such departures from the average &#8212; a spike of 17 percent or more in one digit and a drop to 4 percent or less in another &#8212; are extremely unlikely. Fewer than four in a hundred non-fraudulent elections would produce such numbers.</p></blockquote>
<p>Even more than that, this demonstrates the power of cheap, easy access to information over the internet.  <a href="http://www.columbia.edu/%7Eals2110/">Two</a> <a href="http://www.columbia.edu/%7Ebhb2102/">students</a> can pinpoint problems with election results half a world away, publish them, and have them copied, shared, bookmarked, re-tweeted all over the world in a couple of hours.  Using publicly available data, and <a href="http://www.r-project.org/">free software</a>.  We haven&#8217;t even begun to figure out all the ways in which the internet, social media, open source and open access is changing the way the world works.</p>
<p>This is another nail in the coffin for traditional academic publishing.  If and when Scacco and Beber write this up as a journal article, the results won&#8217;t be publicly available until it goes through the rigorous academic review cycle, which could be anywhere from a few months to several years.  But the events in Iran are happening now.  Protestors are dying now.  Publishing these results in a respected newspaper gets the results out much more quickly.</p>
<p>Furthermore, the authors made the data and statistical analysis code available for anyone in the world to download and run (remember, its all free software, and free data).  This means that instead of a couple journal editors validating their work, they&#8217;ve effectively <a href="http://en.wikipedia.org/wiki/Crowdsourcing">crowdsourced</a> the review process.  Brilliant.  I don&#8217;t know how traditional academic journals can continue to pretend to be socially relevant in a world where anyone can make their work public, that work can be independently verified in minutes instead of years.</p>
<p><strong>Update</strong>: The annotated version of the Scacco and Beber paper points to a couple other articles that show statistical irregularities in the Iran voter counts: In the <a href="http://arxiv.org/abs/0906.2789v2">first digit</a> and <a href="http://www-personal.umich.edu/~wmebane/note18jun2009.pdf">second digits</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fitzgeraldsteele.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fitzgeraldsteele.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fitzgeraldsteele.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fitzgeraldsteele.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fitzgeraldsteele.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fitzgeraldsteele.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fitzgeraldsteele.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fitzgeraldsteele.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fitzgeraldsteele.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fitzgeraldsteele.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=214&subd=fitzgeraldsteele&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fitzgeraldsteele.wordpress.com/2009/06/22/social-media-open-access-transforming-politics-and-academia-in-one-shot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">fitzgeraldsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Newbie&#8217;s Experience Setting Up a Pinax Site</title>
		<link>http://fitzgeraldsteele.wordpress.com/2008/10/16/newbies-experience-setting-up-a-pinax-site/</link>
		<comments>http://fitzgeraldsteele.wordpress.com/2008/10/16/newbies-experience-setting-up-a-pinax-site/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 19:20:28 +0000</pubDate>
		<dc:creator>fitzgeraldsteele</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scholarlycommunication]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[pinax]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://fitzgeraldsteele.wordpress.com/?p=22</guid>
		<description><![CDATA[As I mentioned last week, I&#8217;m using Pinax to test a new website for my research lab.  The site is now in private alpha, which means I&#8217;m getting some internal users to log in, test it out, and give me feedback, and I don&#8217;t think it will fall over.  I&#8217;m writing up my experience to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=22&subd=fitzgeraldsteele&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://fitzgeraldsteele.wordpress.com/2008/10/10/playing-with-pinaxplaying-with-pinax/">As I mentioned last week</a>, I&#8217;m using <a href="http://pinaxproject.com">Pinax </a>to test a new website for my research lab.  The site is now in private alpha, which means I&#8217;m getting some internal users to log in, test it out, and give me feedback, and I don&#8217;t think it will fall over.  I&#8217;m writing up my experience to 1) help others get started quickly, and 2) start talking about how the pinax community can get people ramped up faster.</p>
<p>My background:</p>
<ul>
<li>Journeyman Python Programmer.  Can independently write code, diagnose most problems.</li>
<li>Journeyman HTML/CSS/Javascript. Can independently write code, diagnose most problems.</li>
<li>Some experience doing apache configuration, though not recently. No experience with mod_python or mod_wsgi.  I largely rely on documentation and examples found on the interwebs.</li>
<li>No major prior experience with <a href="http://www.djangoproject.com">django</a>, and none deploying it via Apache/mod_{python,wsgi}.  I almost exclusively rely on documentation and examples found on the web (although my python experience helps)</li>
</ul>
<p>The nice thing about pinax is that it has an active community; in particular an active IRC channel (#pinax on freenode).  The pinax maintainers have been there, patiently answered my newbie questions, and got me going.</p>
<h3>Step 1 &#8211;  Get the base pinax software running.</h3>
<p>Download and install django and pinax.   I first did this on a WinXP desktop.  Crap.  The templates aren&#8217;t rendering properly.  I try commenting out the offending lines in the templates, but problem after problem comes up.  Jump on #pinax.  Did you do seed the database with <code>manage.py syncdb</code>?   Uhh, no.  I do that, but still having problems.  Back to #pinax.  Are you running WinXP?  Why yes!  Oh, pinax on Windows has a known bug (<a href="http://groups.google.com/group/django-hotclub/msg/e41d4220d7f65299">which really is caused by one of the external apps they rely on</a>).  Copy some files to a new location, or install on an OS which supports soft links.  I choose door 2, recheckout on my Ubuntu machine, sync the database, run the django dev server (<code> manage.py runserver</code>) and we&#8217;re good to go.</p>
<h3>Step 2 &#8211; Make sure everything in the base site works as expected.</h3>
<p>The pinax project comes with a complete working example under the directory projects/complete_projects.  I copy this to a new directory so that I can refer back to the complete_project in case I screw something up.  This means you have to change the ROOT_URLCONF in the settings.py</p>
<p>Added some users via the admin interface&#8230;looks great.  Added an account via the Sign-Up page.  Accounts are created (with or without OpenID), but no confirmation emails are being sent.  Hmm  Check out the included <a href="http://code.google.com/p/django-mailer/">django-mailer</a> app, which uses the same configuration as the <a href="http://docs.djangoproject.com/en/dev/topics/email/">standard django.core.mailer</a>.  We need to add some settings to settings.py: EMAIL_HOST, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD.  I set these to use my gmail account to do email.  But really, it&#8217;d be better to have the emails coming from the local machine, and I really don&#8217;t want to hardcode my gmail password into the config file.  I need <a href="http://www.sendmail.org/">sendmail</a> on this machine (<code>sudo apt-get install sendmail</code>).  Now that the local machine has its own SMTP server, I can remove the EMAIL_* settings from settings.py.</p>
<p>Hmm&#8230;emails still not going out.  Let&#8217;s look at the django-mailer docs.  Oh, I see&#8230;email messages aren&#8217;t actually sent until manage.py send_mail is run from the command line.  The recommended solution is to add a couple lines to the system crontab so that they are run regularly (<a href="http://pinaxproject.com/docs/deployment.html">this is now much clearer in the pinax deployment docs</a>).  Now we&#8217;re sending emails!</p>
<h3>Step 3 &#8211; Configure templates, images, and site text for our lab.</h3>
<p>Ok&#8230;first thing is that the default site says &#8216;Pinax&#8217; everywhere.  I need to change that to the name of our lab, GROK Lab.  There&#8217;s an <a href="http://code.google.com/p/django-hotclub/issues/detail?id=29">outstanding ticket</a> to use a SITE_NAME variable in settings.py which would be displayed throughout the site.  Until that gets resolved, we just have to find all the hardcoded [Pp]inax strings are replace them with the SITE_NAME variable.  I just used grep to find them all, and then I replaced the ones I needed to replace (I left things like Built with Pinax, About Pinax, James Tauber is the awesomest creater of Pinax ever, etc).  Pinax has several translations available, which I think means that I should have been making most of my changes to externalized text strings in locale/en/LC_MESSAGES.  But I didn&#8217;t, and just changed the template files.  I&#8217;m not sure what will happen when another language is selected.  Should learn more about <a href="http://docs.djangoproject.com/en/dev/topics/i18n/#topics-i18n">django internationalization</a>.</p>
<p><em><strong>Update 11/14</strong></em><em>: Fernando Correia did some more digging on how to <a href="http://fernandoacorreia.wordpress.com/2008/10/23/exploring-pinax-part-2/">properly externalize strings in django</a>.</em></p>
<p>One particular place this got me into trouble was, again, the django-mailer app.  Invitations to join the site are generated via two templates: templates/friends/join_invite_message.txt and templates/friends/join_invite_subject.txt.  I wanted the subject of my email to say &#8220;You have been invited to join the new SITE_NAME.&#8221;  I tried to use the variable substitution syntax {% site_name %} but got an exception that I couldn&#8217;t use that tag inside a trans tag.  Read more django docs to learn about <a href="http://docs.djangoproject.com/en/dev/ref/templates/#ref-templates-index">template tags</a> and internationalization.  I also tried changing the join_invite_subject.txt to use {%blocktrans %}, similar to the other template file in that directory.  Oops.  I accidentally added newlines to the subject template, which django-mailer does not like.  I revert to the original join_invite_subject file, and simply hardcode &#8216;GROK Lab&#8217; into the subject string.  Hmm&#8230;still getting the same error messages about newlines in the header, even though I&#8217;ve changed the template.  Oh, the old messages with the bad header are still in the email queue&#8230;its trying to send those, not render new ones based on this template.  I clear out the emails with the bad header out of the database via the admin interface, and email is working again.  Whew&#8230;</p>
<p>The logo image says Pinax.  That&#8217;s no good&#8230;I want to replace that with our lab logo.  Everything is nicely styled with CSS.  My image is a slightly different shape than the pinax logo, so I need to change the height/width in the base.css #tabhead .logo img selector to match my logo file (I made our logo the same height as the original pinax logo to simplify).</p>
<p>This is supposed to be a serious research site, so we probably don&#8217;t need games (although I played some on cloud27 &#8212; they&#8217;re pretty fun, and might be a nice way to encourage a more active community).  I commented out the arcade and games apps in the settings.py, all the related ARCADE_* variables, and the URLpattern in urls.py.  Oops&#8230;many of the templates expect to have the arcade app installed (for example, the navigation tabs are hard coded).  Use grep again to find all mentions of &#8216;arcade,&#8217; and comment them all out.</p>
<p>Finally, there were some functionality that the default installation hides if the user is not logged in.  I wanted to be able to have some read views of the people, projects, blogs, tweets available to anyone who visited the site, but only allow writing if they were logged in.  This involved again grepping through the templates for the right section of code, and adding {% if user.authenticated %} &#8230; {% endif %} tags.</p>
<h3>Step 4 &#8211; Configure site to run through Apache instead of the dev server.</h3>
<p>So I had the site up and running using the django development server on the default port 8000.  But I needed it deployed through apache so that in case of a server restart, I did not have to restart the site by hand.  <a href="http://www.20seven.org/journal/2008/09/pinax-setup-and-deploy.html">The most commonly referenced post for deploying pinax is here</a>.  It gives two sample configurations depending on whether you want to use apache modules mod_wsgi or mod_python.  Which one do I want to use?  What&#8217;s the difference between the two?  No idea.  Look up <a href="http://djangobook.com/en/1.0/chapter20/">django docs on deployment</a>; it seems to recommend mod_python, so I&#8217;ll try that. I wrestle with that for a few hours, but little success.  Back to #pinax, where the consensus is mod_wsgi good, ignore mod_python.  Ok, after another few minutes of messing with my apache site config file, and the pinax.wsgi file, we got it up and running.  A few gotchas:</p>
<ul>
<li>Added the appropriate WSGIScriptAlias to my apache site config.  I could view the site; however, I got errors that apache didn&#8217;t have permissions to write to the db.  Added WSGIDaemonProcess to the site config and that fixed it.</li>
<li>I could access the admin site, but it did not have the correct styles/media.  Needed to add an Alias and Directory commands to the apache site.</li>
<li>Changed the name of the pinax.wsgi to match our site name; need to change the DJANGO_SETTINGS_MODULE variable inside this file</li>
</ul>
<p>So the appropriate section of my apache VirtualHost configuration looks like this:</p>
<p><code># attempt to setup pinax<br />
WSGIScriptAlias / /path/to/your/pinax/project/deploy/pinax.wsgi<br />
WSGIProcessGroup name<br />
WSGIDaemonProcess name user=unixusername group=unixgroup threads=25</code></p>
<p><code>Alias /media/ "/path/to/django/contrib/admin/media/"<br />
&lt;Directory "/path/to/django/contrib/admin/media/"&gt;<br />
Order allow,deny<br />
Options Indexes<br />
Allow from all<br />
IndexOptions FancyIndexing<br />
&lt;/Directory&gt;</code></p>
<p>When debugging this, it was helpful to watch all the appropriate log files to see what error messages were being generated where: <code>tail -f <em>apache.log apacheerror.log projectsend_mail.log project.send_mail_deferred.log</em></code><em></em>.</p>
<h3>Conclusions</h3>
<p>Clearly one area where we can improve pinax is the installation experience.  Compare it to the wordpress install experience&#8230;download into a web accessible directory, open a web page, short configuration, done.</p>
<p>More difficult to deal with is the fact that, in order to use pinax, you need to acquire at least a passing knowledge of django convention and configuration, apache convention and configuration, and all the external apps bundled with pinax.  This can be a tall order.</p>
<p>Still, I got my site up and running, with much more integrated functionality than I would have had with django alone.  I learned alot about pinax, django, and apache, and should have less trouble on my next site.  And I get the desired &#8216;oohs&#8217; and &#8216;ahhs&#8217; and &#8216;damn, how long did it take you to do this?&#8217; from people in the demo.</p>
<p>The next step is a bit more fun.  Now that I&#8217;ve got a basic feel for the technology, I can really think about how to design the site and workflows to best serve the users.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fitzgeraldsteele.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fitzgeraldsteele.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fitzgeraldsteele.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fitzgeraldsteele.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fitzgeraldsteele.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fitzgeraldsteele.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fitzgeraldsteele.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fitzgeraldsteele.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fitzgeraldsteele.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fitzgeraldsteele.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=22&subd=fitzgeraldsteele&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fitzgeraldsteele.wordpress.com/2008/10/16/newbies-experience-setting-up-a-pinax-site/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">fitzgeraldsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Playing with Pinax</title>
		<link>http://fitzgeraldsteele.wordpress.com/2008/10/10/playing-with-pinax/</link>
		<comments>http://fitzgeraldsteele.wordpress.com/2008/10/10/playing-with-pinax/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 21:55:02 +0000</pubDate>
		<dc:creator>fitzgeraldsteele</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[scholarlycommunication]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://fitzgeraldsteele.wordpress.com/?p=20</guid>
		<description><![CDATA[pinax is cool<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=20&subd=fitzgeraldsteele&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve had fun this afternoon playing with <a href="http://pinaxproject.com">Pinax</a>, and new social media framework based on <a href="http://www.djangoproject.com">Django</a>.  I got it up and running very quickly, and with very little configuration (changing template files here and there, styles, etc) I&#8217;ve got a brand new website for my <a href="http://groklab.org">research lab</a> that features user profiles, project sites complete with wikis and task assignment, social bookmarking, discussion boards, and a host of other features. I showed it to a couple of my labmates.  They were able to log in and get up and running without any prompting for me, so it seems to have a familiar and easy-to-use-and-learn interface.  Those that were running their own projects enjoyed the project interface, and the ability to link and follow activities of different team members.</p>
<p>I think James and the rest of the Pinax team have hit the nail right on the head.  Out of the box I get about 90% of the functionality I was considering building for our lab.  I&#8217;d like to create and and in a django-references app, which would store citation information, who&#8217;s read what, who&#8217;s written what, etc.</p>
<p>I&#8217;m looking forward to seeing how much functionality I can add in how much time.  This type of thing could really transform scholarly communication:)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fitzgeraldsteele.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fitzgeraldsteele.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fitzgeraldsteele.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fitzgeraldsteele.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fitzgeraldsteele.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fitzgeraldsteele.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fitzgeraldsteele.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fitzgeraldsteele.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fitzgeraldsteele.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fitzgeraldsteele.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=20&subd=fitzgeraldsteele&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fitzgeraldsteele.wordpress.com/2008/10/10/playing-with-pinax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">fitzgeraldsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Python tip: Sorting lists by its contents</title>
		<link>http://fitzgeraldsteele.wordpress.com/2008/09/11/python-tip-sorting-lists-by-its-contents/</link>
		<comments>http://fitzgeraldsteele.wordpress.com/2008/09/11/python-tip-sorting-lists-by-its-contents/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 17:05:31 +0000</pubDate>
		<dc:creator>fitzgeraldsteele</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[scholarlycommunication]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[science21]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://fitzgeraldsteele.wordpress.com/2008/09/11/python-tip-sorting-lists-by-its-contents/</guid>
		<description><![CDATA[Not sure why this was so hard for me to use the sorted() method this morning.
I&#8217;m playing with the FriendFeed API, I wanted to retrieve the entries of a FriendFeed room, and then sort the returned entries by the number of comments&#8230;
Getting the latest 30 entries is a simple HTTP call.  FriendFeed returns a json [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=8&subd=fitzgeraldsteele&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Not sure why this was so hard for me to use the sorted() method this morning.</p>
<p>I&#8217;m playing with the <a href="http://code.google.com/p/friendfeed-api/wiki/ApiDocumentation">FriendFeed API</a>, I wanted to retrieve the entries of a FriendFeed room, and then sort the returned entries by the number of comments&#8230;</p>
<p>Getting the latest 30 entries is a simple HTTP call.  FriendFeed returns a json structure which is nicely parsed with simplejson (soon to be part of the standard python library).</p>
<pre class="brush: python;">
import simplejson
import urllib2

r = urllib2.urlopen('http://friendfeed.com/api/feed/room/science21')
json = simplejson.loads(r.read())

# I just want to look at the entries in the room
e = json['entries']
</pre>
<p>I want to sort the entries by the number of comments.  In other words, I want to use the number of comments as a sort key.  Luckly, <a href="http://wiki.python.org/moin/HowTo/Sorting">Python&#8217;s sorted() method has a key attribute, which takes a callable that returns a single value to be used as a key</a>.  We use the <a href="http://docs.python.org/lib/module-operator.html">operator module</a> in order to generate the sorting key method:</p>
<pre class="brush: python;">
ln = lambda x: len(operator.getitem(x,'comments'))
esorted = sorted(e,key=ln,reverse=True)&lt;/code&gt;

for i in esorted:
print i['title'].encode('utf-8'), len(i['comments'])
</pre>
<p>That took me all morning to get, which shows some of my Python programming limitations.  My first attempt, I tried this:</p>
<p><code>In [94]: es = sorted(e, key=len(operator.itemgetter('comments')))<br />
---------------------------------------------------------------------------<br />
TypeError                                 Traceback (most recent call last)</p>
<p>/home/fitzgeraldsteele/&lt;ipython console&gt; in &lt;module&gt;()</p>
<p>TypeError: object of type 'operator.itemgetter' has no len()<br />
</code><br />
Now I recall that an object must have a .__len__() method in order to work with len().  But operator.itemgetter() returns a function, not an object with a .__len__(), hence the TypeError exceptin I got.</p>
<p>Then I tried this:<br />
<code><br />
esorted = sorted(e, key=lambda x: len(operator.getitem(x,'comments')))<br />
</code><br />
Which is very similar to the solution I ended up with, but this one returns the list in different order.  <span style="text-decoration:line-through;">I&#8217;m not sure why yet</span>. <strong>Update</strong>: Duh&#8230;we get a different order because the first one has reverse=True, and the second one doesn&#8217;t.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fitzgeraldsteele.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fitzgeraldsteele.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fitzgeraldsteele.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fitzgeraldsteele.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fitzgeraldsteele.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fitzgeraldsteele.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fitzgeraldsteele.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fitzgeraldsteele.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fitzgeraldsteele.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fitzgeraldsteele.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fitzgeraldsteele.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fitzgeraldsteele.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=8&subd=fitzgeraldsteele&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fitzgeraldsteele.wordpress.com/2008/09/11/python-tip-sorting-lists-by-its-contents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">fitzgeraldsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Towards Evaluating Social Media for Scholarly Communication</title>
		<link>http://fitzgeraldsteele.wordpress.com/2008/09/09/towards-evaluating-social-media-for-scholarly-communication/</link>
		<comments>http://fitzgeraldsteele.wordpress.com/2008/09/09/towards-evaluating-social-media-for-scholarly-communication/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 23:00:36 +0000</pubDate>
		<dc:creator>fitzgeraldsteele</dc:creator>
				<category><![CDATA[scholarlycommunication]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[science21]]></category>

		<guid isPermaLink="false">http://fitzgeraldsteele.wordpress.com/?p=6</guid>
		<description><![CDATA[Using a Radar-Graph to visualize how a science social network site achieves the core goals of scholarly communication.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=6&subd=fitzgeraldsteele&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>There are A LOT of people and organizations that are looking at ways of using modern web technologies (web2.0, social media, collaboration, and other buzzwords as well) to enhace the creation, modification, and dissemination of their research and other scholarly work.  There&#8217;s even a <a href="http://www.science21stcentury.org/index.html">conference </a>going on right now discussing the matter (see some of the <a href="http://friendfeed.com/rooms/science21">conference discussion on FriendFeed</a>).  And it seems like every day there are a host of new tools, start ups, web sites to enhance collaboration, sharing, and communication between scientists.</p>
<p>There were so many web sites evolving so quickly, <a href="http://docs.google.com/Doc?id=dhs5x5kr_572hccgvcct&amp;hl=en">there was a call to figure out how to critically evaluate, compare, and contrast the tools</a>.  One way to look at all the sites and tools is to examine how well they achieve the core goals of scientific communication * :</p>
<ul>
<li>Registration of a new idea or claim to an individual or group of collaborators</li>
<li>Certification / peer-review of a claim</li>
<li>Awareness / access to the details of the claim</li>
<li>Archival of the claim</li>
<li>Reward for the registrant(s)</li>
</ul>
<p>Imagine we could assign each site or tool a score along each of these goals.  We could then plot the cumulative score on a radar graph like this:</p>
<p><a title="Radar Graph Visualization of Social Media for Scholarly Communication by fitzgeraldsteele, on Flickr" href="http://www.flickr.com/photos/fitzgeraldsteele/2844425132/"><img src="http://farm4.static.flickr.com/3094/2844425132_14454202f6_o.png" alt="Radar Graph Visualization of Social Media for Scholarly Communication" width="587" height="384" /></a></p>
<p style="margin:0;">This type of graph can help decision makers visualize how well different systems fulfill different goals of scholarly communication, how they are lacking, and overall what are the opportunities for development of future tools.</p>
<p style="margin:0;">
<p style="margin:0;">Note that the scores in the image are not at all rigorously determined.  I made up some quick estimates for a few sites, and compared them to made-up estimates for publication in a high impact journal such as Nature.  I made up the estimates based on the following loose criteria:</p>
<p style="margin:0;">
<p style="margin:0;"><strong>Registration:</strong> A contribution or claim can be attributed to an individual or a set of contributors, with a creation date time stamp and revision history.</p>
<p style="margin:0;">
<p style="margin:0;"><strong>Certification:</strong> A contribution can be rated by others.  There can be a few, influential raters (eg editorial board) or many (eg crowd sourcing/collaborative filtering).  Ratings can be anonymous or attributed.  Ratings can be meta-rated (eg the Slashdot moderation system).  Ratings can be simple thumbs up/thumbs down, or with comments/feedback.</p>
<p style="margin:0;">
<p style="margin:0;"><strong>Awareness/Access:</strong> Users can identify new contributions, as well as contributions that are relevant to their interests.  Awareness tools can range from passive (user must browse/search) to active (system recommendations based on clustering or collaborative filtering).  Entery and metadata for contributions are queriable/accessiblly by a publically documented API, open standard, or format.</p>
<p style="margin:0;">
<p style="margin:0;"><strong>Archival:</strong> A contribution can be identified and accessed by a single URI (possibly with multiple resource URLs &#8212; see Fielding&#8217;s thesis on REST).  Association to similar data via metadata are present.  Contributions are exportable into a documented open standard or format . Contributions will be available at the URI for the forseeable future.</p>
<p style="margin:0;">
<p style="margin:0;"><strong>Reward:</strong> A contribution counts toward professional career advancement, or standing within the academic discipline. (Obviously, social media is currently lacking in this area).</p>
<p style="margin:0;">
<p style="margin:0;">These criteria attempt to combine the traditional requirements for scholarly communication, with modern needs/expectations of web2.0 technologies and open science.  There is certainly room for refinement, and I&#8217;d welcome comments from the peanut gallery.</p>
<p style="margin:0;">
<p style="margin:0;">Hmm&#8230;maybe there&#8217;s room for a collaborative filtering type tool for science web2.0 tools.  People can rate sites on each of these, and other interesting criteria&#8230;</p>
<p style="margin:0;">
<p style="margin:0;">* See Roosendaal, H., &amp; Geurts, P. A. T. M. (1998). Forces and functions in scientific communication. In . Retrieved July 25, 2008, from http://www.physik.uni-oldenburg.de/conferences/crisp97/roosendaal.html.  Also Van de Sompel, H., Payette, S., Erickson, J., Lagoze, C., &amp; Warner, S. (2004). Rethinking Scholarly Communication: Building the System that Scholars Deserve. D-Lib Magazine, 10(9). Retrieved August 12, 2008, from http://www.dlib.org/dlib/september04/vandesompel/09vandesompel.html.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fitzgeraldsteele.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fitzgeraldsteele.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fitzgeraldsteele.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fitzgeraldsteele.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fitzgeraldsteele.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fitzgeraldsteele.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fitzgeraldsteele.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fitzgeraldsteele.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fitzgeraldsteele.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fitzgeraldsteele.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fitzgeraldsteele.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fitzgeraldsteele.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fitzgeraldsteele.wordpress.com&blog=4793962&post=6&subd=fitzgeraldsteele&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://fitzgeraldsteele.wordpress.com/2008/09/09/towards-evaluating-social-media-for-scholarly-communication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">fitzgeraldsteele</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3094/2844425132_14454202f6_o.png" medium="image">
			<media:title type="html">Radar Graph Visualization of Social Media for Scholarly Communication</media:title>
		</media:content>
	</item>
	</channel>
</rss>