<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Entrepreneurial Geekiness &#187; Python</title>
	<atom:link href="http://ianozsvald.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://ianozsvald.com</link>
	<description>My thoughts on screencasting, the A.I. Cookbook and high-tech entrepreneurship</description>
	<lastBuildDate>Tue, 31 Jan 2012 13:12:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>StrongSteam alpha, HackerNewsLondon, Startup-Chile</title>
		<link>http://ianozsvald.com/2011/10/26/strongsteam-alpha-hackernewslondon-startup-chile/</link>
		<comments>http://ianozsvald.com/2011/10/26/strongsteam-alpha-hackernewslondon-startup-chile/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 10:29:29 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Api]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Budget]]></category>
		<category><![CDATA[Chile]]></category>
		<category><![CDATA[Kyran]]></category>
		<category><![CDATA[Linkedin]]></category>
		<category><![CDATA[Possibilities]]></category>
		<category><![CDATA[Priority]]></category>
		<category><![CDATA[Santiago]]></category>
		<category><![CDATA[Slideshow]]></category>
		<category><![CDATA[Surveys]]></category>
		<category><![CDATA[Tomorrow Night]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1235</guid>
		<description><![CDATA[I&#8217;m a little behind with the blogging so here&#8217;s the short version. StrongSteam has been under constant dev for 2 months, we&#8217;re close to putting up the first AI tools behind a few Python demos (hopefully it&#8217;ll be up next week). I&#8217;m talking on this at HackerNewsLondon tomorrow night. We haven&#8217;t (quite) finished the demos [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a little behind with the blogging so here&#8217;s the short version. <a title="AppStore for AI and data mining tools" href="http://strongsteam.com/" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com/?referer=');">StrongSteam</a> has been under constant dev for 2 months, we&#8217;re close to putting up the first AI tools behind a few Python demos (hopefully it&#8217;ll be up next week). I&#8217;m talking on this at <a href="http://www.meetup.com/HNLondon/events/37828982/" onclick="pageTracker._trackPageview('/outgoing/www.meetup.com/HNLondon/events/37828982/?referer=');">HackerNewsLondon</a> tomorrow night.</p>
<p>We haven&#8217;t (quite) finished the demos so it&#8217;ll be a slideshow, I&#8217;m thinking of running a workshop in a month or so to show what&#8217;s possible, talk through the limitations and possibilities and help people got comfy with the API.</p>
<p>I&#8217;m also very pleased to say that we were accepted into the <a href="http://www.startupchile.org/" onclick="pageTracker._trackPageview('/outgoing/www.startupchile.org/?referer=');">StartupChile</a> programme alongside <a href="http://emilytoop.com/2011/10/11/creating-an-intelligent-interactive-storybook-for-kids/" onclick="pageTracker._trackPageview('/outgoing/emilytoop.com/2011/10/11/creating-an-intelligent-interactive-storybook-for-kids/?referer=');">RadicalRobot</a> (my better half). In StrongSteam Kyran and I will get 6 months in Santiago with a $40k budget (for no equity!) to build our API and this opens the door to further travel. We&#8217;re also very happy to welcome <a href="https://twitter.com/#!/BaltoRouberol" onclick="pageTracker._trackPageview('/outgoing/twitter.com/_/BaltoRouberol?referer=');">Balthazar Rouberol</a> (<a href="http://www.linkedin.com/pub/balthazar-rouberol/41/a76/55" onclick="pageTracker._trackPageview('/outgoing/www.linkedin.com/pub/balthazar-rouberol/41/a76/55?referer=');">linkedin</a>) to our team, he&#8217;ll be joining us remotely as an intern for 6 months.</p>
<p>Our biggest priority now is to get the alpha out there. If you&#8217;re curious to see what we&#8217;re doing please follow us via <a href="https://twitter.com/#!/strongsteamapi" onclick="pageTracker._trackPageview('/outgoing/twitter.com/_/strongsteamapi?referer=');">@strongsteamapi</a> and join the mailing list on the <a href="http://strongsteam.com/" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com/?referer=');">strongsteam</a> homepage.</p>
<p>We also have two surveys &#8211; the first is so you can tell us about your <a href="http://www.surveymonkey.com/s/7377L7L" onclick="pageTracker._trackPageview('/outgoing/www.surveymonkey.com/s/7377L7L?referer=');">general AI interest</a>, the second focuses on some of the points raised in the first to tell us <a href="http://www.surveymonkey.com/s/SWTWB6S" onclick="pageTracker._trackPageview('/outgoing/www.surveymonkey.com/s/SWTWB6S?referer=');">more about your needs</a>. We&#8217;d <em>really</em> appreciate your input here if you have 10 minutes to spare.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2011/10/26/strongsteam-alpha-hackernewslondon-startup-chile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>strongsteam &#8211; an &#8220;AppStore for A.I. and data mining tools&#8221;</title>
		<link>http://ianozsvald.com/2011/08/31/strongsteam-an-appstore-for-a-i-and-data-mining-tools/</link>
		<comments>http://ianozsvald.com/2011/08/31/strongsteam-an-appstore-for-a-i-and-data-mining-tools/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 12:24:56 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[Entrepreneur]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Api]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Caption]]></category>
		<category><![CDATA[Coke]]></category>
		<category><![CDATA[Data Mining Tools]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Image Matching]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Kyran]]></category>
		<category><![CDATA[Mash]]></category>
		<category><![CDATA[Name Badges]]></category>
		<category><![CDATA[Natural Language]]></category>
		<category><![CDATA[Open Source Tools]]></category>
		<category><![CDATA[Optical Character Recognition]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Plant Labels]]></category>
		<category><![CDATA[Plume]]></category>
		<category><![CDATA[Podcasts]]></category>
		<category><![CDATA[Python Bindings]]></category>
		<category><![CDATA[Sussex]]></category>
		<category><![CDATA[Text Processing Tools]]></category>
		<category><![CDATA[Wakehurst Place]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1227</guid>
		<description><![CDATA[Kyran and I are starting work on a new project &#8211; strongsteam offers a web API with artificial intelligence and data mining tools. The goal is to make it easy for you to do things like: get the text out of images using optical character recognition determine whether two images look the same and if [...]]]></description>
			<content:encoded><![CDATA[<p>Kyran and I are starting work on a new project &#8211; <a title="artificial intelligence and data mining tools" href="http://strongsteam.com/" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com/?referer=');">strongsteam</a> offers a web API with artificial intelligence and data mining tools. The goal is to make it easy for you to do things like:</p>
<ul>
<li>get the text out of images using optical character recognition</li>
<li>determine whether two images look the same and if one object (e.g. a certain book or a can of coke) can be found in another</li>
<li>use natural language processing to analyse, cluster and compare text</li>
<li>extract text from audio (e.g. to pull out keywords from podcasts)</li>
<li>use machine learning on text to derive new data</li>
</ul>
<p>If you&#8217;d like to join the closed alpha then visit <a href="http://strongsteam.com/" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com/?referer=');">strongsteam</a> and add your email to the announce list on the homepage.</p>
<p>We&#8217;ve started with Python bindings which make it easy to talk to the strongsteam web service. Initially we&#8217;ll wrap open source tools that we&#8217;ve used along with lots of our own A.I. data mining tools from years of work in my <a title="artificial intelligence consulting" href="http://morconsulting.com/" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com/?referer=');">Mor Consulting</a> A.I. consultancy.</p>
<p>At <a href="http://www.euroscipy.org/conference/euroscipy2011" onclick="pageTracker._trackPageview('/outgoing/www.euroscipy.org/conference/euroscipy2011?referer=');">EuroSciPy</a> last week I demo&#8217;d using O.C.R. to extract the words from plant labels at Wakehurst Place gardens so you can lookup the plant on Wikipedia once you&#8217;ve taken a photo like this one:</p>
<div id="attachment_1229" class="wp-caption aligncenter" style="width: 310px"><a href="http://ianozsvald.com/wp-content/uploads/2011/08/09.jpg"><img class="size-medium wp-image-1229" title="Ostrich Plume Fern - Matteuccia Struthiopteris" src="http://ianozsvald.com/wp-content/uploads/2011/08/09-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Plant label for Ostrich Plume Fern at Wakehurst Place (Sussex)</p></div>
<p>Now we&#8217;re looking at applying O.C.R. to conference name-badges, this will be a bit of a mash-up from data used in our <a href="http://socialtiesapp.com/" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a> conference app and <a href="http://lanyrd.com/" onclick="pageTracker._trackPageview('/outgoing/lanyrd.com/?referer=');">Lanyrd.com</a>&#8216;s data. Next we&#8217;ll look at image matching and some text processing tools.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2011/08/31/strongsteam-an-appstore-for-a-i-and-data-mining-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High Performance Python tutorial v0.2 (from EuroPython 2011)</title>
		<link>http://ianozsvald.com/2011/07/25/high-performance-python-tutorial-v0-2-from-europython-2011/</link>
		<comments>http://ianozsvald.com/2011/07/25/high-performance-python-tutorial-v0-2-from-europython-2011/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 08:42:25 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Annotation]]></category>
		<category><![CDATA[Bottlenecks]]></category>
		<category><![CDATA[Compilation]]></category>
		<category><![CDATA[Complex Number]]></category>
		<category><![CDATA[Computing Consulting]]></category>
		<category><![CDATA[Cpus]]></category>
		<category><![CDATA[Creative Commons]]></category>
		<category><![CDATA[Florence]]></category>
		<category><![CDATA[Gpu]]></category>
		<category><![CDATA[Graphics Processing Unit]]></category>
		<category><![CDATA[High Performance]]></category>
		<category><![CDATA[Journeys]]></category>
		<category><![CDATA[Multiple Computers]]></category>
		<category><![CDATA[Numerical Python]]></category>
		<category><![CDATA[Numpy]]></category>
		<category><![CDATA[Page Pdf]]></category>
		<category><![CDATA[Python Code]]></category>
		<category><![CDATA[Python Library]]></category>
		<category><![CDATA[Python Tutorial]]></category>
		<category><![CDATA[Slideshare]]></category>
		<category><![CDATA[Time Compiler]]></category>
		<category><![CDATA[Vector Operations]]></category>
		<category><![CDATA[Vector Units]]></category>
		<category><![CDATA[Vectors]]></category>
		<category><![CDATA[Version V0]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1190</guid>
		<description><![CDATA[My updated High Performance Python tutorial is now available as a 55 page PDF. The goal is to take you on several journeys which show you different ways of making Python code run much faster (up to 75* on the CPU, faster with a GPU). This is an update to the 49 page v0.1 I [...]]]></description>
			<content:encoded><![CDATA[<p>My updated <a title="High Speed &amp; Performance Python tutorial " href="http://ianozsvald.com/HighPerformancePythonfromTrainingatEuroPython2011_v0.2.pdf">High Performance Python tutorial</a> is now available as a 55 page PDF. The goal is to take you on several journeys which show you different ways of making Python code run much faster (up to 75* on the CPU, faster with a GPU).</p>
<p>This is an update to the 49 page <a href="http://ianozsvald.com/2011/06/29/high-performance-python-tutorial-v0-1-from-my-4-hour-tutorial-at-europython-2011/">v0.1</a> I published three weeks ago after running the tutorial at EuroPython 2011 in Florence.</p>
<p>Topics covered:</p>
<ul>
<li>Python profiling (cProfile, RunSnake, line_profiler) – find bottlenecks</li>
<li>PyPy – Python’s new Just In Time compiler, a note on the new numpy module</li>
<li>Cython – annotate your code and compile to C</li>
<li>numpy integration with Cython – fast numerical Python library wrapped by Cython</li>
<li>ShedSkin – automatic code annotation and conversion to C</li>
<li>numpy vectors – fast vector operations using numpy arrays</li>
<li>NumExpr on numpy vectors – automatic numpy compilation to multiple CPUs and vector units</li>
<li>multiprocessing – built-in module to use multiple CPUs</li>
<li>ParallelPython – run tasks on multiple computers</li>
<li>pyCUDA – run tasks on your Graphics Processing Unit</li>
<li>Other algorithmic choices and options you have</li>
</ul>
<p>The improvement over the last version (v0.1) is that I&#8217;ve filled in all the sections now including pyCUDA (there are still a few IAN_TODOs marked, I hope to finish these in a future v0.3). I&#8217;ve also added a short section on Algorithmic Choices, link to the new Cython prange operator and show the new numpy module in PyPy.</p>
<p>The source code is on my <a href="https://github.com/ianozsvald/EuroPython2011_HighPerformanceComputing" onclick="pageTracker._trackPageview('/outgoing/github.com/ianozsvald/EuroPython2011_HighPerformanceComputing?referer=');">github</a> page. The original slides are on <a href="http://www.slideshare.net/IanOzsvald/euro-python2011-high-performance-python" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/IanOzsvald/euro-python2011-high-performance-python?referer=');">slideshare</a> too. If you&#8217;re after a challenge then at the end of the report I suggest some ported versions of the code that I&#8217;d like to see.</p>
<p>The report is licensed Creative Commons by Attribution (please link back here) &#8211; I&#8217;ll also happily accept a beer if you meet me in person! If you&#8217;re curious about this sort of work then note that I offer A.I. and high performance computing consulting and training via my <a href="http://morconsulting.com/" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com/?referer=');">Mor Consulting</a>.</p>
<p><strong>Update</strong> &#8211; ShedSkin 0.9 adds faster complex number support. I haven&#8217;t added it to the report yet, evidence in the <a href="http://groups.google.com/group/shedskin-discuss/browse_thread/thread/aab757f6fb282794#" onclick="pageTracker._trackPageview('/outgoing/groups.google.com/group/shedskin-discuss/browse_thread/thread/aab757f6fb282794?referer=');">ShedSkin Group</a> suggests it gets closer to the non-complex-number version (i.e. you don&#8217;t have to do more work but you get a nice speed boost whilst still using complex numbers).</p>
<p><strong>Update (Nov 2011)</strong> &#8211; Antonio and Armin posted a <a href="http://mail.libexpat.org/pipermail/pypy-dev/2011-November/008726.html" onclick="pageTracker._trackPageview('/outgoing/mail.libexpat.org/pipermail/pypy-dev/2011-November/008726.html?referer=');">note</a> which explains some of the slowness in PyPy and show how it is competitive, under the right conditions. Armin also contributed a C version which shows PyPy to run as fast as C (for their chosen configuration).</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2011/07/25/high-performance-python-tutorial-v0-2-from-europython-2011/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>High Performance Python Tutorial v0.1 (from my 4 hour tutorial at EuroPython 2011)</title>
		<link>http://ianozsvald.com/2011/06/29/high-performance-python-tutorial-v0-1-from-my-4-hour-tutorial-at-europython-2011/</link>
		<comments>http://ianozsvald.com/2011/06/29/high-performance-python-tutorial-v0-1-from-my-4-hour-tutorial-at-europython-2011/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 06:49:37 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Annotation]]></category>
		<category><![CDATA[Attribution]]></category>
		<category><![CDATA[Bottlenecks]]></category>
		<category><![CDATA[Compilation]]></category>
		<category><![CDATA[Cpus]]></category>
		<category><![CDATA[Creative Commons]]></category>
		<category><![CDATA[Graphics Processing Unit]]></category>
		<category><![CDATA[High Performance]]></category>
		<category><![CDATA[Lovely City]]></category>
		<category><![CDATA[Multiple Computers]]></category>
		<category><![CDATA[Numerical Python]]></category>
		<category><![CDATA[Numpy]]></category>
		<category><![CDATA[Page Pdf]]></category>
		<category><![CDATA[Page Topics]]></category>
		<category><![CDATA[Python Library]]></category>
		<category><![CDATA[Python Tutorial]]></category>
		<category><![CDATA[Slideshare]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Sphinx]]></category>
		<category><![CDATA[Time Compiler]]></category>
		<category><![CDATA[Tutorial Slides]]></category>
		<category><![CDATA[V0]]></category>
		<category><![CDATA[Vector Operations]]></category>
		<category><![CDATA[Vector Units]]></category>
		<category><![CDATA[Vectors]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1159</guid>
		<description><![CDATA[UPDATE &#8211; the v0.2 High Performance Python tutorial is now available. I enjoyed running a 4 hour tutorial on High Performance Python at EuroPython last week (great event guys!). The class was limited to 40 people and I&#8217;d love for more people to benefit from the several weeks of work that went into it so [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE</strong> &#8211; the v0.2 <a href="http://ianozsvald.com/2011/07/25/high-performance-python-tutorial-v0-2-from-europython-2011/">High Performance Python tutorial</a> is now available.</p>
<p>I enjoyed running a 4 hour tutorial on <a href="http://ep2011.europython.eu/conference/talks/experiences-making-cpu-bound-tasks-run-much-faster" onclick="pageTracker._trackPageview('/outgoing/ep2011.europython.eu/conference/talks/experiences-making-cpu-bound-tasks-run-much-faster?referer=');">High Performance Python at EuroPython</a> last week (great event guys!). The class was limited to 40 people and I&#8217;d love for more people to benefit from the several weeks of work that went into it so I&#8217;ve written it up as a 49 page PDF (license: Creative Commons By Attribution).</p>
<p>This is v0.1, please take a look and give me feedback so I can release an improved v0.2 within a few weeks. Is anything missing? Sure! A couple of sections just have src (no write-up) and there&#8217;s a bunch of IAN_TODO markers for me to complete for the next revision. The 49 pages should have something useful for you to chew on though.</p>
<p><span style="text-decoration: line-through;">Download &#8220;<a title="High Performance Python v0.1 (pdf)" href="http://ianozsvald.com/HighPerformancePythonfromTrainingatEuroPython2011_v0.1.pdf">High Performance Python v0.1 (pdf)</a>&#8221; and send me your feedback! The source code for the examples is on this <a href="https://github.com/ianozsvald/EuroPython2011_HighPerformanceComputing" onclick="pageTracker._trackPageview('/outgoing/github.com/ianozsvald/EuroPython2011_HighPerformanceComputing?referer=');">github page</a> (including the Sphinx src for the pdf).</span> Get the updated v0.2 <a href="http://ianozsvald.com/2011/07/25/high-performance-python-tutorial-v0-2-from-europython-2011/">High Performance Python tutorial</a> now.</p>
<p>The EuroPython tutorial slides are on slideshare as the <a href="http://www.slideshare.net/IanOzsvald/euro-python2011-high-performance-python" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/IanOzsvald/euro-python2011-high-performance-python?referer=');">High Performance Python tutorial</a>.</p>
<p>Topics covered:</p>
<ul>
<li>Python profiling (cProfile, RunSnake, line_profiler) &#8211; find bottlenecks</li>
<li>PyPy &#8211; Python&#8217;s new Just In Time compiler</li>
<li>Cython &#8211; annotate your code and compile to C</li>
<li>numpy integration with Cython &#8211; fast numerical Python library wrapped by Cython</li>
<li>ShedSkin &#8211; automatic code annotation and conversion to C</li>
<li>numpy vectors &#8211; fast vector operations using numpy arrays</li>
<li>NumExpr on numpy vectors &#8211; automatic numpy compilation to multiple CPUs and vector units</li>
<li>multiprocessing &#8211; built-in module to use multiple CPUs</li>
<li>ParallelPython &#8211; run tasks on multiple computers</li>
<li>pyCUDA &#8211; run tasks on your Graphics Processing Unit</li>
</ul>
<p>If you haven&#8217;t been to a EuroPython &#8211; I definitely recommend them. Next year&#8217;s will also be in Florence (a lovely city with lovely people), the science/HPC tracks were very interesting to me and I hope to see more of the same next year.</p>
<p>&nbsp;</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2011/06/29/high-performance-python-tutorial-v0-1-from-my-4-hour-tutorial-at-europython-2011/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Review for Python Text Processing with NLTK 2.0 Cookbook (Packt, 2010)</title>
		<link>http://ianozsvald.com/2011/01/30/review-for-python-text-processing-with-nltk-2-0-cookbook-packt-2010/</link>
		<comments>http://ianozsvald.com/2011/01/30/review-for-python-text-processing-with-nltk-2-0-cookbook-packt-2010/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 18:49:21 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Amazon Uk]]></category>
		<category><![CDATA[Antonyms]]></category>
		<category><![CDATA[Babelfish]]></category>
		<category><![CDATA[Chapter 3]]></category>
		<category><![CDATA[Common Root Words]]></category>
		<category><![CDATA[Cookbook]]></category>
		<category><![CDATA[Document Store]]></category>
		<category><![CDATA[Input Text]]></category>
		<category><![CDATA[Jacob Perkins]]></category>
		<category><![CDATA[Natural Language Processing]]></category>
		<category><![CDATA[Nltk]]></category>
		<category><![CDATA[Nuggets]]></category>
		<category><![CDATA[O Reilly]]></category>
		<category><![CDATA[Reilly Book]]></category>
		<category><![CDATA[Sample Articles]]></category>
		<category><![CDATA[Similarity Measure]]></category>
		<category><![CDATA[Spellchecker]]></category>
		<category><![CDATA[Synonym]]></category>
		<category><![CDATA[Text Processing]]></category>
		<category><![CDATA[Word Similarity]]></category>
		<category><![CDATA[Wordnet]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1116</guid>
		<description><![CDATA[Python Text Processing with NLTK 2.0 Cookbook (Amazon US, UK) is a cookbook for Python&#8217;s Natural Language Processing Toolkit. I&#8217;d suggest that this book is seen as a companion for O&#8217;Reilly&#8217;s Natural Language Processing with Python (available for free at nltk.org). The older O&#8217;Reilly book gives a lot of explanation for how to use NLTK&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.packtpub.com/python-text-processing-with-nltk-2-0-cookbook/book" onclick="pageTracker._trackPageview('/outgoing/www.packtpub.com/python-text-processing-with-nltk-2-0-cookbook/book?referer=');">Python Text Processing with NLTK 2.0 Cookbook</a> (Amazon <a href="http://www.amazon.com/gp/product/1849513600?ie=UTF8&amp;tag=entrepregeeki-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1849513600" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/gp/product/1849513600?ie=UTF8_amp_tag=entrepregeeki-20_amp_linkCode=as2_amp_camp=1789_amp_creative=390957_amp_creativeASIN=1849513600&amp;referer=');">US</a>, <a href="http://www.amazon.co.uk/gp/product/1849513600?ie=UTF8&amp;tag=entrepreneuri-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1849513600" onclick="pageTracker._trackPageview('/outgoing/www.amazon.co.uk/gp/product/1849513600?ie=UTF8_amp_tag=entrepreneuri-21_amp_linkCode=as2_amp_camp=1634_amp_creative=19450_amp_creativeASIN=1849513600&amp;referer=');">UK</a>) is a cookbook for Python&#8217;s <a href="http://www.nltk.org/" onclick="pageTracker._trackPageview('/outgoing/www.nltk.org/?referer=');">Natural Language Processing Toolkit</a>. I&#8217;d suggest that this book is seen as a companion for O&#8217;Reilly&#8217;s Natural Language Processing with Python (available <a href="http://www.nltk.org/book" onclick="pageTracker._trackPageview('/outgoing/www.nltk.org/book?referer=');">for free</a> at nltk.org). The older O&#8217;Reilly book gives a lot of explanation for how to use NLTK&#8217;s component, Packt&#8217;s new book shows you lots of little recipes which build to larger projects giving you a great hands-on toolkit.</p>
<p>Overall the book is easy to read, has a huge set of sample recipes and feels very useful. I&#8217;ll be referring to it for our upcoming <a href="http://twitter.com/socialtiesapp" onclick="pageTracker._trackPageview('/outgoing/twitter.com/socialtiesapp?referer=');">@socialties</a> mobile app.</p>
<p>You&#8217;ll need to <a href="http://www.nltk.org/download" onclick="pageTracker._trackPageview('/outgoing/www.nltk.org/download?referer=');">download</a> NLTK, you can also refer to some <a href="http://www.packtpub.com/article/python-text-processing-nltk-storing-frequency-distributions-redis" onclick="pageTracker._trackPageview('/outgoing/www.packtpub.com/article/python-text-processing-nltk-storing-frequency-distributions-redis?referer=');">sample articles</a> at Packt&#8217;s site and get Chapter 3 as a free PDF (see below). The author is Jacob Perkins, his <a href="http://streamhacker.com/2010/11/10/python-text-processing-nltk-cookbook/" onclick="pageTracker._trackPageview('/outgoing/streamhacker.com/2010/11/10/python-text-processing-nltk-cookbook/?referer=');">blog</a> links to many related articles, he also has a nice &#8216;<a href="http://streamhacker.com/2010/11/15/beginning-python-text-processing-nltk-cookbook/" onclick="pageTracker._trackPageview('/outgoing/streamhacker.com/2010/11/15/beginning-python-text-processing-nltk-cookbook/?referer=');">how it started</a>&#8216; article.</p>
<p>Here are my thoughts on the book. Disclosure &#8211; I was sent a free copy of the book by Packt for review, the thoughts below are entirely my own.</p>
<p><strong>Chapter 1: Tokenizing Text and WordNet Basics</strong></p>
<p>If you haven&#8217;t tried tokenising text before you may not realise how complicated it can be (expressing even basic rules for English is jolly hard!). This chapter has a good overview of tokenisation and the excellent <a href="http://en.wikipedia.org/wiki/Wordnet" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Wordnet?referer=');">WordNet</a> library. Filtering stopwords (low value words like &#8216;the&#8217;, &#8216;of&#8217;) and synsets approaches (synonym groups in WordNet) are also covered. The word similarity measure was new to me, the book certainly throws up nice nuggets.</p>
<p><strong>Chapter 2: Replacing and Correcting Words</strong></p>
<p>Stemming approaches are covered, the goal is to find common root words (e.g. &#8220;running&#8221;, &#8220;runs&#8221; and &#8220;run&#8221; can each have &#8220;run&#8221; as their stem) to simplify your input text. Synonym replacement (e.g. converting &#8220;bday&#8221; to &#8220;birthday&#8221;) and negating words using <a href="http://en.wikipedia.org/wiki/Antonyms" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Antonyms?referer=');">antonyms</a> are nicely treated. Babelfish is provided through NLTK for translation and the <a href="http://www.rfk.id.au/software/pyenchant/" onclick="pageTracker._trackPageview('/outgoing/www.rfk.id.au/software/pyenchant/?referer=');">PyEnchant</a> spellchecker is introduced.</p>
<p><strong>Chapter 3: Creating Custom Corpora</strong> (sample <a href="https://www.packtpub.com/sites/default/files/3609-chapter-3-creating-custom-corpora.pdf" onclick="pageTracker._trackPageview('/outgoing/www.packtpub.com/sites/default/files/3609-chapter-3-creating-custom-corpora.pdf?referer=');">PDF chapter</a>)</p>
<p>This chapter discusses MongoDB (a NoSQL document store) as a way to store your own corpora in NLTK&#8217;s format, it also introduces <a href="http://en.wikipedia.org/wiki/Part_of_speech_tagging" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Part_of_speech_tagging?referer=');">part of speech tagging</a>. File locking using <a href="http://pypi.python.org/pypi/lockfile/0.9.1" onclick="pageTracker._trackPageview('/outgoing/pypi.python.org/pypi/lockfile/0.9.1?referer=');">lockfile</a> is mentioned in case you&#8217;re using multiple processes (discussed later).</p>
<p><strong>Chapter 4: Part-of-Speech Tagging and Chapter 5: Extracting Chunks</strong></p>
<p>I was less interested in this part, I&#8217;ve had to extract Named Entities before and there&#8217;s a nice discussion in Chapter 5.</p>
<p><strong>Chapter 6: Transforming Chunks and Trees</strong></p>
<p>The section on filtering out insignificant words using part of speech tags was interesting (i.e. using the Determiner tag DT to filter words like &#8220;a&#8221;, &#8220;all&#8221;, &#8220;an&#8221;, &#8220;that&#8221;, &#8220;that&#8221;). Cardinals (numbers) are discussed, I liked the recipe for swapping noun cardinal phrases so e.g. &#8220;Dec 10&#8243; becomes &#8220;10 Dec&#8221; (whilst &#8220;10 Dec&#8221; doesn&#8217;t change).</p>
<p><strong>Chapter 7: Text Classification</strong></p>
<p>This feels like it will be useful &#8211; bag of words classification and the Naive Bayes Classifier are discussed (along with some other classifiers). Here the author starts to build a movie rating classifier. <a href="http://en.wikipedia.org/wiki/Precision_and_recall" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Precision_and_recall?referer=');">Precision and Recall</a> are explained nicely. A high-information classifier is built, this is useful as we can then remove low-information words (those that aren&#8217;t biased to a single class in the classifier) which can improve classification results. Combining classifiers to further improve results is also covered.</p>
<p><strong>Chapter 8: Distributed Processing and Handling Large Datasets</strong></p>
<p>This chapter has promise &#8211; I wasn&#8217;t aware of the share-nothing distributed execution engine <a href="http://codespeak.net/execnet/" onclick="pageTracker._trackPageview('/outgoing/codespeak.net/execnet/?referer=');">execnet</a>. Redis is also used, Jacob builds towards a distributed word scoring engine which uses Redis as a single storage system. I&#8217;ve yet to use Redis but really want to hook it into our future <a href="http://twitter.com/socialtiesapp" onclick="pageTracker._trackPageview('/outgoing/twitter.com/socialtiesapp?referer=');">@socialtiesapp</a>, distributed processing will definitely be on the agenda too.</p>
<p><strong>Chapter 9: Parsing Specific Data</strong></p>
<p>This is a little gem, tucked at the end of the book. Ages ago I&#8217;d come across a date parsing module (which I then forgot about), having needed it recently I was super-happy to see <a href="http://niemeyer.net/python-dateutil" onclick="pageTracker._trackPageview('/outgoing/niemeyer.net/python-dateutil?referer=');">dateutil</a> discussed. It makes the parsing of different date formats incredibly easy and also handles timezones.</p>
<p>The timex module in NLTK is introduced (I&#8217;d never heard of it before) &#8211; it takes a fuzzy reference to a date or time and marks it up. An example would be &#8220;let&#8217;s go sometime &lt;TIMEX2&gt;this week&lt;/TIMEX2&gt;&#8221;, you can then extract the fuzzy reference and decide how to interpret it in your application.</p>
<p><a href="http://codespeak.net/lxml/" onclick="pageTracker._trackPageview('/outgoing/codespeak.net/lxml/?referer=');">lxml</a>, <a href="http://www.crummy.com/software/BeautifulSoup/" onclick="pageTracker._trackPageview('/outgoing/www.crummy.com/software/BeautifulSoup/?referer=');">Beautiful Soup</a> and <a href="http://chardet.feedparser.org/" onclick="pageTracker._trackPageview('/outgoing/chardet.feedparser.org/?referer=');">chardet</a> (another gem) are used to write a web page scraper.</p>
<p>Overall I recommend this book, if you have the original O&#8217;Reilly book (and you really ought to) then this makes for a great companion. I also spotted these <a href="http://jaganadhg.freeflux.net/blog/archive/2010/12/14/book-review.html" onclick="pageTracker._trackPageview('/outgoing/jaganadhg.freeflux.net/blog/archive/2010/12/14/book-review.html?referer=');">two</a> <a href="http://tipstank.com/2010/12/04/python-text-processing-with-nltk-2-0-cookbook-review/" onclick="pageTracker._trackPageview('/outgoing/tipstank.com/2010/12/04/python-text-processing-with-nltk-2-0-cookbook-review/?referer=');">other</a> reviews.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2011/01/30/review-for-python-text-processing-with-nltk-2-0-cookbook-packt-2010/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Packt&#8217;s new &#8220;Python Text Processing with NLTK 2.0 Cookbook&#8221;</title>
		<link>http://ianozsvald.com/2010/11/20/packts-new-python-text-processing-with-nltk-2-0-cookbook/</link>
		<comments>http://ianozsvald.com/2010/11/20/packts-new-python-text-processing-with-nltk-2-0-cookbook/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 13:49:00 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Cookbook]]></category>
		<category><![CDATA[Natural Language Processing]]></category>
		<category><![CDATA[Nlp Book]]></category>
		<category><![CDATA[O Reilly]]></category>
		<category><![CDATA[Packt]]></category>
		<category><![CDATA[Reilly Book]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1105</guid>
		<description><![CDATA[I&#8217;m rather excited to have received a review copy of Packt&#8217;s new NLP book &#8220;Python Text Processing with NLTK 2.0 Cookbook&#8220;, it is based around Python&#8217;s Natural Language Processing toolkit. I&#8217;ve been using the O&#8217;Reilly book for over a year, I&#8217;m curious to see what&#8217;s different between the two. I&#8217;ll post a full review once [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m rather excited to have received a review copy of Packt&#8217;s new NLP book &#8220;<a href="http://link.packtpub.com/xgISsp" onclick="pageTracker._trackPageview('/outgoing/link.packtpub.com/xgISsp?referer=');">Python Text Processing with NLTK 2.0 Cookbook</a>&#8220;, it is based around  Python&#8217;s <a href="http://www.nltk.org/" onclick="pageTracker._trackPageview('/outgoing/www.nltk.org/?referer=');">Natural Language Processing toolkit</a>.</p>
<p>I&#8217;ve been using the O&#8217;Reilly book for over a year, I&#8217;m curious to see what&#8217;s different between the two. I&#8217;ll post a full review once I&#8217;ve been through it.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2010/11/20/packts-new-python-text-processing-with-nltk-2-0-cookbook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building a Social Microprinter</title>
		<link>http://ianozsvald.com/2010/11/06/building-a-social-microprinter/</link>
		<comments>http://ianozsvald.com/2010/11/06/building-a-social-microprinter/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 15:04:09 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[projectbrightonblogs]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Brighton]]></category>
		<category><![CDATA[British Computer Society]]></category>
		<category><![CDATA[Cafes]]></category>
		<category><![CDATA[Current Version]]></category>
		<category><![CDATA[Ebay]]></category>
		<category><![CDATA[Friday Morning]]></category>
		<category><![CDATA[Guardian]]></category>
		<category><![CDATA[Ins]]></category>
		<category><![CDATA[Internet Folk]]></category>
		<category><![CDATA[Letterbox]]></category>
		<category><![CDATA[Local News Headlines]]></category>
		<category><![CDATA[Matt Webb]]></category>
		<category><![CDATA[Original Intent]]></category>
		<category><![CDATA[Postcard]]></category>
		<category><![CDATA[Printing Receipts]]></category>
		<category><![CDATA[Receipt Printer]]></category>
		<category><![CDATA[Site Server]]></category>
		<category><![CDATA[Skiff]]></category>
		<category><![CDATA[Social Environment]]></category>
		<category><![CDATA[Tom Taylor]]></category>
		<category><![CDATA[Uk Projects]]></category>
		<category><![CDATA[Wall Space]]></category>
		<category><![CDATA[Weather]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1052</guid>
		<description><![CDATA[Over the last couple of months I&#8217;ve been building up a social microprinter (inspired by Tom Taylor&#8216;s implementation and Matt Webb&#8216;s original idea). Here&#8217;s the current version &#8211; Arduino+WiShield+CBM231+off-site server (powered partly by BenOSteen&#8217;s Python driver): There&#8217;s a second quick video and talk for the £5 App event I ran earlier in the week. The [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last couple of months I&#8217;ve been building up a social microprinter (inspired by <a href="http://tomtaylor.co.uk/projects/microprinter" onclick="pageTracker._trackPageview('/outgoing/tomtaylor.co.uk/projects/microprinter?referer=');">Tom Taylor</a>&#8216;s implementation and <a href="http://berglondon.com/blog/2006/10/06/my-printer-my-social-letterbox/" onclick="pageTracker._trackPageview('/outgoing/berglondon.com/blog/2006/10/06/my-printer-my-social-letterbox/?referer=');">Matt Webb</a>&#8216;s original idea). Here&#8217;s the current version &#8211; Arduino+<a href="http://github.com/asynclabs/WiShield" onclick="pageTracker._trackPageview('/outgoing/github.com/asynclabs/WiShield?referer=');">WiShield</a>+CBM231+off-site server (powered partly by <a href="http://github.com/benosteen/microprinter" onclick="pageTracker._trackPageview('/outgoing/github.com/benosteen/microprinter?referer=');">BenOSteen&#8217;s Python driver</a>):</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ZOHKGp1RjW0?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/ZOHKGp1RjW0?fs=1&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>There&#8217;s a <a href="http://ianozsvald.com/2010/11/07/5-app-23-things-we-built-this-summer/">second quick video and talk</a> for the £5 App event I ran earlier in the week.</p>
<p>The goal is to build a <em>social</em> microprinter &#8211; a printer that&#8217;d live in a social environment (currently <a href="http://theskiff.org/" onclick="pageTracker._trackPageview('/outgoing/theskiff.org/?referer=');">The Skiff</a> co-working office in Brighton) which would help bring people a little bit closer. Currently it prints tweets (for &#8216;theskiff&#8217;) and shows events, later it&#8217;ll show recent Gowalla check-ins and maybe some local news headlines or the weather (but there&#8217;s got to be better stuff to show, right?&#8230;ideas on a postcard please).</p>
<p>My original intent was to build a device that could be stuck on the wall in a cafe, it would show tweets on a screen (probably under the cafe&#8217;s or Brighton&#8217;s hashtag) and let non-Internet folk post their own messages back. Doing this nicely would have needed a screen, machine, wall space etc &#8211; using a receipt printer seemed like an easy way to prototype the idea.</p>
<p>Jumping forward, here&#8217;s an early version &#8211; this is a CBM231 connected to my Ubuntu laptop via a <a href="http://www.amazon.co.uk/gp/product/B000Z3MBG8?ie=UTF8&amp;tag=entrepreneuri-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B000Z3MBG8" onclick="pageTracker._trackPageview('/outgoing/www.amazon.co.uk/gp/product/B000Z3MBG8?ie=UTF8_amp_tag=entrepreneuri-21_amp_linkCode=as2_amp_camp=1634_amp_creative=19450_amp_creativeASIN=B000Z3MBG8&amp;referer=');">USB-&gt;RS232</a> lead (note &#8211; this lead is good, the cheap ones on eBay can be <em>bad</em> &#8211; see below). Here I&#8217;m using BenOSteen&#8217;s Python driver to send tweets via serial to the printer.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5150572127/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5150572127/?referer=');"><img class="aligncenter" title="CBM231 and laptop connected via USB-&gt;RS232 lead" src="http://farm2.static.flickr.com/1079/5150572127_a844e4a6d2_m.jpg" alt="" width="240" height="180" /></a></p>
<p>This device has done the rounds, here it is on display at BuildBrighton&#8217;s talk to the British Computer Society:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151268288/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151268288/?referer=');"><img class="aligncenter" title="Social Microprinter at British Computer Society talk" src="http://farm2.static.flickr.com/1137/5151268288_e1981e3b4e_m.jpg" alt="" width="180" height="240" /></a></p>
<p>Here it is in use at Likemind Brighton showing international #likemind tweets as other groups meet around the world on Friday morning (note &#8211; unicode converted to &#8216;?&#8217; as I haven&#8217;t figured out if/how to get international characters out of the printer yet!):</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151130138/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151130138/?referer=');"><img class="aligncenter" title="Social Microprinter at Likemind Brighton" src="http://farm2.static.flickr.com/1356/5151130138_0cb64d1c0c_m.jpg" alt="" width="180" height="240" /></a></p>
<p>It ran during the weekend of <a href="http://www.barcampbrighton.org/" onclick="pageTracker._trackPageview('/outgoing/www.barcampbrighton.org/?referer=');">Barcamp Brighton</a> and printed out barcampy stuff, I added some notes about local cafes and a job ad for one of the companies:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5150591947/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5150591947/?referer=');"><img class="aligncenter" title="Jay reading tweet receipts at Barcamp Brighton" src="http://farm2.static.flickr.com/1360/5150591947_2413d059ff_m.jpg" alt="" width="180" height="240" /></a></p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5051300862/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5051300862/?referer=');"><img class="aligncenter" title="Barcamp Brighton tweets via Social Microprinter" src="http://farm5.static.flickr.com/4109/5051300862_21fd821d9c_m.jpg" alt="" width="180" height="240" /></a></p>
<p>The goal all along was to build an independent controller (so removing the laptop from the equation). For this I coupled an Arduino with a WiShield 1.0. The WiShield libraries are easy enough to work with, after an hour&#8217;s experimentation I got WPA2 working (it takes 25 seconds to negotiate the connection on each attempt), we use WPA2 at home and in The Skiff.</p>
<p>Coupling the Arduino to the printer was easy enough, I have been trying (and so far failing) to get a Max233 chip acting as a voltage level converter so for now I&#8217;m using a pre-built <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=449" onclick="pageTracker._trackPageview('/outgoing/www.sparkfun.com/commerce/product_info.php?products_id=449&amp;referer=');">RS232 Level Shifter</a>. This converts the Arduino&#8217;s 0V/5V TTL to +12V/-12V RS232 levels (powered from the Aruino&#8217;s 5V out). To output text I&#8217;m using Roo Reynold&#8217;s Aduino sketch, this handily includes some control codes to cut the receipt after printing.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151266396/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151266396/?referer=');"><img class="aligncenter" title="Arduino with Serial Out to CBM 231" src="http://farm5.static.flickr.com/4144/5151266396_d65e4110bf_m.jpg" alt="" width="180" height="240" /></a></p>
<p>Next I wanted live data. At first I simply put a short plain text file on a web site, used the WiShield to fetch it and Roo&#8217;s code to print it. Now I&#8217;m using a hacked version of Ben&#8217;s code to write tweets (including bold and underline control codes) to a text file which is stored online (<a href="http://microprinter.ianozsvald.com/" onclick="pageTracker._trackPageview('/outgoing/microprinter.ianozsvald.com/?referer=');">microprinter.ianozsvald.com</a>), this ready-to-print file is grabbed over the WiShield, printed and then cut. The online file is updated every 2 minutes.</p>
<p>The final tweak was to add a button to the printer. Using the Arduino&#8217;s demo button sketch I hooked up a big thumb-sized button. The Arduino&#8217;s main loop is looking for a combination of &#8216;at least 5 seconds have passed since the last print&#8217; and &#8216;button pressed&#8217;, then it&#8217;ll kick off the web request for new data. Once this request returns it prints out the text.</p>
<p>I look for the pattern &#8220;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221; (14 dashes) to start and end the message, before this we get HTTP headers (from the WiShield) that I didn&#8217;t want to print.</p>
<p>Here&#8217;s the finished hardware:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5150766995/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5150766995/?referer=');"><img class="aligncenter" title="CBM 231 serial cable" src="http://farm2.static.flickr.com/1220/5150766995_7540fe2650_m.jpg" alt="" width="240" height="180" /></a></p>
<p>This is a WiShield 1.0. The button (shown just out of shot top-left) is connected 3.3V-&gt;button, button-&gt;Pin 6 AND Ground (via a 15k resistor). For the printer I&#8217;m using Pin 8 for tx (blue lead on the RS232 level converter) and Ground, the level converter is powered by the 5V out.</p>
<p>Here&#8217;s the connector:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5150767681/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5150767681/?referer=');"><img class="aligncenter" title="Serial connector for Social Microprinter" src="http://farm5.static.flickr.com/4055/5150767681_e629030a4f_m.jpg" alt="" width="240" height="180" /></a></p>
<p>The connector is overly-connected in this image. I think all you actually need is Pin 2 from the RS232 Level Converter to Pin 3 on the 25 pin connector along with Pin 5 (GND) to Pin 7 (GND on 25 pin connector). With yellow wires I&#8217;ve shorted Pins 4&amp;5 and 8&amp;20 but I think this is overkill (they&#8217;re used for bus control but they&#8217;re probably ignored in this configuration).  Here&#8217;s a <a href="http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html" onclick="pageTracker._trackPageview('/outgoing/www.camiresearch.com/Data_Com_Basics/RS232_standard.html?referer=');">full pinout</a>.</p>
<p>During all the hacking our faithful cat Mia has attempted to assist whenever she could. Here she&#8217;s taken ownership of the bag used to transport the early versions:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151158980/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151158980/?referer=');"><img class="aligncenter" title="Mia helping to build the Microprinter by p0wning the transport bag" src="http://farm2.static.flickr.com/1056/5151158980_7da8c12164_m.jpg" alt="" width="180" height="240" /></a></p>
<p style="text-align: left;">Along the way I also acquired an Epson TM T88 II receipt printer, it is &#8216;just another serial printer&#8217; but takes different control codes (and it looks like it might have a smaller character set than the CBM 231). As yet I&#8217;ve only tried printing plain ASCII, I&#8217;d like to investigate further and build a library that supports this printer too.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151170838/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151170838/?referer=');"><img class="aligncenter" title="Epson TM T88 II and CBM 231 receipt printers" src="http://farm5.static.flickr.com/4036/5151170838_136daf26a6_m.jpg" alt="" width="180" height="240" /></a></p>
<p>Note on <em>buying leads from eBay</em>! be aware that if you buy cheap leads from eBay (e.g. £2 silver/blue leads) then you might end up with a pack of 5 (because if you buy 5 and one breaks, you&#8217;ve got 4 more that work, right?), you might have 5 dead-on-arrival leads. You could then report the problem and the nice people could then ship you a replacement set, but then you might discover that you&#8217;ve got another 5 DOA leads. You have been warned.</p>
<p>If you&#8217;re buying your first microprinter do try to buy a working serial lead with it (it&#8217;ll probably be a 9 pin to 25 pin converter lead) &#8211; if you get the wrong lead (null modem vs straight serial &#8211; I forget which you need!) then you won&#8217;t get anything (the bane of my first few week&#8217;s of testing). Buy a printer+lead that&#8217;s known to work and you won&#8217;t go wrong.</p>
<p>Spend the £8 per lead and <a href="http://www.amazon.co.uk/gp/product/B000Z3MBG8?ie=UTF8&amp;tag=entrepreneuri-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B000Z3MBG8" onclick="pageTracker._trackPageview('/outgoing/www.amazon.co.uk/gp/product/B000Z3MBG8?ie=UTF8_amp_tag=entrepreneuri-21_amp_linkCode=as2_amp_camp=1634_amp_creative=19450_amp_creativeASIN=B000Z3MBG8&amp;referer=');">buy from Amazon</a> if you don&#8217;t want to waste hours wondering why your printer is just printing out reams of &#8216;?&#8217; rubbish:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151267648/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151267648/?referer=');"><img class="aligncenter" title="Bad micrprinter (dodgy USB RS232 lead!)" src="http://farm2.static.flickr.com/1212/5151267648_e9dda00431_m.jpg" alt="" width="180" height="240" /></a></p>
<p>If you want to build your own then the first best source of info is the <a href="http://microprinter.pbworks.com/" onclick="pageTracker._trackPageview('/outgoing/microprinter.pbworks.com/?referer=');">microprinter wiki</a>. <a href="http://rooreynolds.com/category/microprinter/" onclick="pageTracker._trackPageview('/outgoing/rooreynolds.com/category/microprinter/?referer=');">Roo Reynolds</a> has Arduino drivers (which I hacked a bit for my implementation) that don&#8217;t depend on external data sources.</p>
<p>You&#8217;ll find my Python server source and Arduino sketch (which assumes you&#8217;ve got a WiShield 1.0) here: <a href="https://github.com/ianozsvald/SocialMicroprinter" onclick="pageTracker._trackPageview('/outgoing/github.com/ianozsvald/SocialMicroprinter?referer=');">social_microprinter</a>. Note that the code is <em>horribly hacky</em>, it was written over many short sessions when I could steal an hour or two from other projects.</p>
<p>It could do with being straightened out and commented and a few nice new features would include Gowalla check-in notifications, event RSS reading and weather printing.</p>
<p>Many thanks to my fellow hackers at <a href="http://www.buildbrighton.com/" onclick="pageTracker._trackPageview('/outgoing/www.buildbrighton.com/?referer=');">BuildBrighton</a> for help debugging my early serial problems and to <a href="https://twitter.com/barnoid" onclick="pageTracker._trackPageview('/outgoing/twitter.com/barnoid?referer=');">Barney</a> for the lend of his <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=449" onclick="pageTracker._trackPageview('/outgoing/www.sparkfun.com/commerce/product_info.php?products_id=449&amp;referer=');">RS232 Shifter</a> (I&#8217;ll soon get this Max233 working, promise!).</p>
<p>Here&#8217;s the finished, installed unit on the work bench at BuildBrighton in The Skiff (just by the social kitchen space). Once it is a bit more robust it&#8217;ll move to the front of the building:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/54145418@N00/5151464944/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/54145418_N00/5151464944/?referer=');"><img class="aligncenter" title="Social Microprinter on BuildBrighton's Bench at TheSkiff" src="http://farm2.static.flickr.com/1049/5151464944_43e35d7020_m.jpg" alt="" width="240" height="180" /></a></p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2010/11/06/building-a-social-microprinter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Visualising Lanyrd&#8217;s social connectivity graph</title>
		<link>http://ianozsvald.com/2010/10/05/visualising-lanyrds-social-connectivity-graph/</link>
		<comments>http://ianozsvald.com/2010/10/05/visualising-lanyrds-social-connectivity-graph/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 11:55:23 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[BNM]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[sussexdigital]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[Attendee]]></category>
		<category><![CDATA[Circles]]></category>
		<category><![CDATA[Dictionary]]></category>
		<category><![CDATA[Energy Configuration]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Graph]]></category>
		<category><![CDATA[Image Sizes]]></category>
		<category><![CDATA[Iphone]]></category>
		<category><![CDATA[Jot]]></category>
		<category><![CDATA[Kyran]]></category>
		<category><![CDATA[Last Friday]]></category>
		<category><![CDATA[Low Energy]]></category>
		<category><![CDATA[Ly]]></category>
		<category><![CDATA[Mobile Device]]></category>
		<category><![CDATA[Python Source Code]]></category>
		<category><![CDATA[Screen Names]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Visualisation]]></category>
		<category><![CDATA[Visualising]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1042</guid>
		<description><![CDATA[Over the weekend at BarCampBrighton5 I demonstrated a quick visualisation that Kyran and I built over breakfast in Berlin last Friday. It looks like: To see it yourself open Bar Camp Brighton 5 Visualisation using Chrome or WebKit (it&#8217;ll work in Firefox but might be rather slow). It is interactive so it is worth opening, [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend at <a href="http://lanyrd.com/2010/barcamp-brighton/" onclick="pageTracker._trackPageview('/outgoing/lanyrd.com/2010/barcamp-brighton/?referer=');">BarCampBrighton5</a> I demonstrated a quick visualisation that <a href="http://showmedo.com/about" onclick="pageTracker._trackPageview('/outgoing/showmedo.com/about?referer=');">Kyran</a> and I built over breakfast in Berlin last Friday. It looks like:</p>
<p style="text-align: center;"><a href="http://ianozsvald.com/wp-content/uploads/2010/10/LanyrdBCB5.png"><img class="size-medium wp-image-1043  aligncenter" title="Lanyrd social graph visualisation of Bar Camp Brighton 5" src="http://ianozsvald.com/wp-content/uploads/2010/10/LanyrdBCB5-300x241.png" alt="" width="300" height="241" /></a></p>
<p>To see it yourself open <a href=" http://ianozsvald.com/wp-content/uploads/2010/10/SocialGraphVis_BarCampBrighton5/lanyard.html">Bar Camp Brighton 5 Visualisation</a> using Chrome or WebKit (it&#8217;ll work in Firefox but might be rather slow). It is interactive so it is worth opening, about 60 people are shown here.</p>
<p>If you reload the page you&#8217;ll see the force directed graph bouncing around as it settles into a low energy configuration. The nodes are people attending the event, edges are friend links to other people at the event. The image sizes for the nodes reflect the number of links a person has at that event.</p>
<p>As you can see above <a href="http://twitter.com/jot" onclick="pageTracker._trackPageview('/outgoing/twitter.com/jot?referer=');">Jot</a> (the main host and co-organiser) is most connected at the event. Two people aren&#8217;t following anyone at the event, they&#8217;ve been pushed to the bottom left of the window.</p>
<p>You can drag nodes using the grab-handles (blue circles) or move the entire graph by dragging the image.</p>
<p>For a larger example (80 people) see the <a href=" http://ianozsvald.com/wp-content/uploads/2010/10/SocialGraphVis_FlashOnTheBeach2010/lanyard.html">Flash on the Beach 2010 Visualisation</a>:</p>
<p style="text-align: center;"><a href="http://ianozsvald.com/wp-content/uploads/2010/10/SocialGraphVis_FlashOnTheBeach2010/lanyard.html"><img class="size-medium wp-image-1044  aligncenter" title="Lanyrd social graph visualisation for Flash on the Beach 2010" src="http://ianozsvald.com/wp-content/uploads/2010/10/LanyrdFOTB-300x241.png" alt="" width="300" height="241" /></a></p>
<p>Here you can see that <a href="http://twitter.com/seb_ly" onclick="pageTracker._trackPageview('/outgoing/twitter.com/seb_ly?referer=');">seb_ly</a> is the most connected, closely followed by <a href="http://twitter.com/niqui" onclick="pageTracker._trackPageview('/outgoing/twitter.com/niqui?referer=');">niqui</a> and <a href="http://twitter.com/bitchwhocodes" onclick="pageTracker._trackPageview('/outgoing/twitter.com/bitchwhocodes?referer=');">bitchwhocodes</a>. At the bottom left is a sub graph of two nodes &#8211; these two people follow each other but don&#8217;t follow anyone in the main graph.</p>
<p>In both cases the data is extracted from the relevant Lanyrd pages (<a href="http://lanyrd.com/2010/barcamp-brighton" onclick="pageTracker._trackPageview('/outgoing/lanyrd.com/2010/barcamp-brighton?referer=');">BCB5</a>, <a href="http://lanyrd.com/2010/fotb/" onclick="pageTracker._trackPageview('/outgoing/lanyrd.com/2010/fotb/?referer=');">FOTB</a>), friends for each attendee are read from Twitter and then a graph is built as a JSON dictionary which links nodes (screen_names) to friends (lists of screen_names). Ready to run Python source code is at github: <a href="http://github.com/ianozsvald/LanyrdViewerUsingProtoVis" onclick="pageTracker._trackPageview('/outgoing/github.com/ianozsvald/LanyrdViewerUsingProtoVis?referer=');">LanyrdViewerUsingProtoVis</a>.</p>
<p>Both of these links <em>should</em> work on a mobile device but they&#8217;ll be awfully slow (they&#8217;re useless on my iPhone 3G!) <img src='http://ianozsvald.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Kyran used <a href="http://vis.stanford.edu/protovis/" onclick="pageTracker._trackPageview('/outgoing/vis.stanford.edu/protovis/?referer=');">ProtoVis</a> to build the force directed graph, it includes a bit of a hack to make images work on the nodes.</p>
<p>If you&#8217;re interested in seeing more of this stuff then Kyran will have more to demo at our upcoming <a href="http://fivepoundapp.com/meetup/23/" onclick="pageTracker._trackPageview('/outgoing/fivepoundapp.com/meetup/23/?referer=');">£5 App show and tell</a>.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2010/10/05/visualising-lanyrds-social-connectivity-graph/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrapy, libxml + libxslt, Mac, &#8220;checking for libxml libraries &gt;= 2.6.8&#8230; configure: error:&#8221;</title>
		<link>http://ianozsvald.com/2010/09/21/scrapy-libxml-libxslt-mac-checking-for-libxml-libraries-2-6-8-configure-error/</link>
		<comments>http://ianozsvald.com/2010/09/21/scrapy-libxml-libxslt-mac-checking-for-libxml-libraries-2-6-8-configure-error/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 11:01:16 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Consequence]]></category>
		<category><![CDATA[Default Output Directory]]></category>
		<category><![CDATA[Directory Export]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Lib]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Libs]]></category>
		<category><![CDATA[Libxml]]></category>
		<category><![CDATA[Libxml2]]></category>
		<category><![CDATA[Libxslt]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Moving]]></category>
		<category><![CDATA[Python Library]]></category>
		<category><![CDATA[Scrapy]]></category>
		<category><![CDATA[Single User Mode]]></category>
		<category><![CDATA[System Tools]]></category>
		<category><![CDATA[Watters]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1038</guid>
		<description><![CDATA[In the hope that this&#8217;ll save someone else the bother&#8230;if you&#8217;re installing the web scraping Python library scrapy on your Mac (I&#8217;m on Leopard 10.5.8) and you come across an error like: checking for libxml libraries &#62;= 2.6.8... configure: error: Version 2.6.7 found. You need at least libxml2 2.6.8 for this version of libxslt then [...]]]></description>
			<content:encoded><![CDATA[<p>In the hope that this&#8217;ll save someone else the bother&#8230;if you&#8217;re installing the web scraping Python library <a href="http://scrapy.org/" onclick="pageTracker._trackPageview('/outgoing/scrapy.org/?referer=');">scrapy</a> on your Mac (I&#8217;m on Leopard 10.5.8) and you come across an error like:</p>
<pre><code>checking for libxml libraries &gt;= 2.6.8... configure: error:
Version 2.6.7 found. You need at least libxml2 2.6.8 for this
version of libxslt
</code></pre>
<p>then here&#8217;s the solution.</p>
<p>Presumably you&#8217;ll be following the <a href="http://doc.scrapy.org/intro/install.html" onclick="pageTracker._trackPageview('/outgoing/doc.scrapy.org/intro/install.html?referer=');">Scrapy install</a> instructions. I used the supplied links for libxml2-2.7.3 and libxslt-1.1.24. libxml built and installed to /usr/local/lib just fine. libxslt wouldn&#8217;t ./configure &#8211; it kept reporting that it could only see the older libxml from /usr/lib, not the newer one in /usr/local/lib.</p>
<p>The fix is <a href="http://jamesclarke.net/notes/libxml2" onclick="pageTracker._trackPageview('/outgoing/jamesclarke.net/notes/libxml2?referer=');">here</a>, and this is my configure line:</p>
<pre><code> $ ./configure
    --with-python=/Library/Frameworks/Python.framework/Versions/2.5/
    --prefix=/usr/local
    --with-libxml-prefix=/usr/local
    --with-libxml-include-prefix=/usr/local/include
    --with-libxml-libs-prefix=/usr/local/lib
</code></pre>
<p>At this point libxslt configured, built and installed just fine. To make python see it I had to update my .bash_profile so PYTHONPATH linked to the default output directory:</p>
<pre>export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.5/site-packages</pre>
<p>Side note &#8211; whatever you do, don&#8217;t mess with /usr/lib. I tried moving the default libxml and libxslt libraries and I had the same consequence mentioned by Kevin Watters &#8211; lots of system tools (including su!) depend on libxslt to be in /usr/lib. I had to boot to Single User Mode to copy the files back before the system would work again.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2010/09/21/scrapy-libxml-libxslt-mac-checking-for-libxml-libraries-2-6-8-configure-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demoing pyCUDA at the London Financial Python User Group</title>
		<link>http://ianozsvald.com/2010/09/17/demoing-pycuda-at-the-london-financial-python-user-group/</link>
		<comments>http://ianozsvald.com/2010/09/17/demoing-pycuda-at-the-london-financial-python-user-group/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 09:52:50 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Consultancy]]></category>
		<category><![CDATA[Cores]]></category>
		<category><![CDATA[Count Graph]]></category>
		<category><![CDATA[Cpus]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Didrik]]></category>
		<category><![CDATA[Finance]]></category>
		<category><![CDATA[Free Lunch]]></category>
		<category><![CDATA[Giles]]></category>
		<category><![CDATA[Gpgpu]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Naming Names]]></category>
		<category><![CDATA[Narayanan]]></category>
		<category><![CDATA[New Faces]]></category>
		<category><![CDATA[Physics]]></category>
		<category><![CDATA[Power Speed]]></category>
		<category><![CDATA[Real World]]></category>
		<category><![CDATA[Speed Ups]]></category>
		<category><![CDATA[Train]]></category>
		<category><![CDATA[Transistor Count]]></category>
		<category><![CDATA[Ups]]></category>
		<category><![CDATA[User Group]]></category>
		<category><![CDATA[Visit London]]></category>
		<category><![CDATA[Wednesday Night]]></category>
		<category><![CDATA[World Performance]]></category>

		<guid isPermaLink="false">http://ianozsvald.com/?p=1030</guid>
		<description><![CDATA[On Wednesday night I jumped on a train up to London to visit the London Financial Python User Group to give a short demo of pyCUDA. I&#8217;m using CUDA heavily for my physics consultancy and I figured the finance guys would be interested in 10-1000* speed-ups for their calculations. The raw figures and the Mandelbrot [...]]]></description>
			<content:encoded><![CDATA[<p>On Wednesday night I jumped on a train up to London to visit the <a href="http://wiki.python.org/moin/LondonFinancialPythonUserGroup" onclick="pageTracker._trackPageview('/outgoing/wiki.python.org/moin/LondonFinancialPythonUserGroup?referer=');">London Financial Python User Group</a> to give a short demo of <a href="http://mathema.tician.de/software/pycuda" onclick="pageTracker._trackPageview('/outgoing/mathema.tician.de/software/pycuda?referer=');">pyCUDA</a>. I&#8217;m using CUDA heavily for my physics consultancy and I figured the finance guys would be interested in 10-1000* speed-ups for their calculations.</p>
<p>The raw figures and the Mandelbrot demo that I gave are already covered in my earlier blog post: <a href="http://ianozsvald.com/2010/07/14/22937-faster-python-math-using-pycuda/">22,937* faster Python math using pyCUDA</a>.</p>
<p>To introduce pyCUDA I used P. Narayanan&#8217;s <a href="http://www.tcs.tifr.res.in/~igga/lectureslides/iiscTalkPJN.pdf" onclick="pageTracker._trackPageview('/outgoing/www.tcs.tifr.res.in/_igga/lectureslides/iiscTalkPJN.pdf?referer=');">GPUs: For Graphics and Beyond</a> PDF presentation (the first 13 pages), his explanation and diagrams are very clear.</p>
<p>To put CUDA in context against regular CPUs I used the recent <a href="http://www.orangecone.com/archives/2010/07/peak_mhz.html" onclick="pageTracker._trackPageview('/outgoing/www.orangecone.com/archives/2010/07/peak_mhz.html?referer=');">Peak MHz</a> graph and the main power/speed/transistor count graph in <a href="http://www.gotw.ca/publications/concurrency-ddj.htm" onclick="pageTracker._trackPageview('/outgoing/www.gotw.ca/publications/concurrency-ddj.htm?referer=');">The Free Lunch is Over: A Fundamental Turn to Concurrency in Software</a>. The main point here is that we&#8217;ve topped out at 2-3GHz CPUs and now we <em>have</em> to parallelise our code. Doing so on CPUs means we get 4, 8, 16 (and soon 24 then 32) cores to play with&#8230;but with CUDA if the problem is mathematics based we have 480 cores to use!</p>
<p>If you&#8217;re interested in the general use of CUDA and GPUs then check out the excellent <a href="http://gpgpu.org/" onclick="pageTracker._trackPageview('/outgoing/gpgpu.org/?referer=');">gpgpu.org</a>.</p>
<p>You may wonder about real-world performance with CUDA. Without naming names I can say that I&#8217;m now delivering a 115* speed-up on a particularly gnarly problem (I mentioned during the talk that I&#8217;d reached 80* &#8211; I&#8217;ve managed to improve that in the last 2 days). On an earlier problem when I knew far less about CUDA I delivered a 100* speed-up for the same company.</p>
<p>It was grand to meet a lot of new faces at the group, a few people I&#8217;ve met before at PyCons (hi Ben! Giles!). Making a contact with Didrik of Enthought was rather grand too. I hope to visit again.</p>
<hr>
Ian applies Artificial Intelligence as an Artificial Intelligence Researcher for companies (<a href="http://morconsulting.com" title="Artificial Intelligence consultant" onclick="pageTracker._trackPageview('/outgoing/morconsulting.com?referer=');pageTracker._trackPageview('/outgoing/morconsulting.com?referer=http://ianozsvald.com/wp-admin/users.php?page=ft_signature_manager.php');">Mor Consulting</a>), co-founded the <a href="http://strongsteam.com" title="Artificial Intelligence toolkit" onclick="pageTracker._trackPageview('/outgoing/strongsteam.com?referer=');">StrongSteam</a> A.I. datamining toolkit, co-authored <a href="http://socialtiesapp.com/" title = "Social Ties social discovery tool for conferences and events" onclick="pageTracker._trackPageview('/outgoing/socialtiesapp.com/?referer=');">SocialTies</a>, programs Python, writes <a href="http://TheScreencastingHandbook.com" title="Screencasting Tutorial eBook" onclick="pageTracker._trackPageview('/outgoing/TheScreencastingHandbook.com?referer=');">The Screencasting Handbook</a> and is also a sea-side dweller and consumer of fine coffees.
]]></content:encoded>
			<wfw:commentRss>http://ianozsvald.com/2010/09/17/demoing-pycuda-at-the-london-financial-python-user-group/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

