<?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>Matt Thorne</title>
	<atom:link href="http://mattythorne.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattythorne.wordpress.com</link>
	<description>Control Engineering Manager</description>
	<lastBuildDate>Sun, 10 Jul 2011 18:27:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mattythorne.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/ed4cc034a04e96b69f544bbba358929f?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Matt Thorne</title>
		<link>http://mattythorne.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mattythorne.wordpress.com/osd.xml" title="Matt Thorne" />
	<atom:link rel='hub' href='http://mattythorne.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Scribblybot the Full Story</title>
		<link>http://mattythorne.wordpress.com/2010/09/18/scribblybot-the-full-story/</link>
		<comments>http://mattythorne.wordpress.com/2010/09/18/scribblybot-the-full-story/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 08:18:34 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[Oxford]]></category>
		<category><![CDATA[Oxford Geek Night]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[scribblybot]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mattythorne.com/?p=54</guid>
		<description><![CDATA[OK, in my earlier post I promised a full write-up of how scribblybot came to be. What a journey and what hard work! The Conception I first conceived of the idea way back in 1999. I was setting up some robotic training cells as a contractor for Ford Motor Company and I thought how cool [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=54&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OK, in my earlier post I promised a full write-up of how scribblybot came to be. What a journey and what hard work!</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/img_4742.jpg"><img class="alignleft size-medium wp-image-80" title="img_4742" src="http://mattythorne.files.wordpress.com/2010/09/img_4742.jpg?w=300&#038;h=225" alt="The exhibition" width="300" height="225" /></a></p>
<p><strong>The Conception</strong></p>
<p>I first conceived of the idea way back in 1999. I was setting up some robotic training cells as a contractor for Ford Motor Company and I thought how cool it would be to get a robot to write some user entered text to a whiteboard. As any robot programmer will tell you, it is trivial to get an industrial robot to write and draw on a whiteboard, in fact it is a very common exercise when learning to teach a robot positional data. To get it to write a string of text however is a just a bit more tricky. For a start you need a way of getting the text into the robot and secondly you need to find a way of dealing with actually writing it to the board. So the idea sat in the back of my mind for about a decade or so during which time happened the whole web 2.0 /social media evolution. I met a lot of stalwarts of the whole social media scene when I moved to Oxford and a friend suggested I went to <a title="OGN" href="http://oxford.geeknights.net">Oxford Geek Nights</a>, a local meetup of web/IT specialists combined with a jolly good piss-up at the same time! Then the idea came rushing back to me. My idea about a message writing industrial robot would make an excellent user of Twitter! In this way, you are globalising the whole message entry system and Twitter are even kind enough to provide an API to bring you the entire functionality of their service to your own applications.</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/img_4740.jpg"><img class="alignright size-medium wp-image-81" title="img_4740" src="http://mattythorne.files.wordpress.com/2010/09/img_4740-e1284797824312.jpg?w=225&#038;h=300" alt="Toddler vs. Robot" width="225" height="300" /></a></p>
<p>To set the scene, I have the idea, I&#8217;m working at BMW and my friend has a workshop full of robots destined to be used as replacements for faulty units on the line. But it would be pointless to develop something this big without a forum to display it right? Thats when BMW 2010 open day came along! I developed a prototype of just a few letters in my own time and also a software interface to actually send some letters to the robot and showed it to guy at BMW who loved the concept. That was the beginning of scribblybot!</p>
<p><strong>The Challenges</strong></p>
<p>Sending the Text</p>
<p>The first hurdle to overcome in a system like this is how to actually get the text into the robot controller. Various options are open to you&#8230;</p>
<ul>
<li>Connect an input device via a bus system to the robot controller</li>
<li>Enter the text via the robot teaching device (teach pendant)</li>
<li>Have the text sent to the robot via a controlling device such as a PLC</li>
</ul>
<p>Writing the text</p>
<p>Once you&#8217;ve figured out a way to actually get text to the robot the next hurdle to think about is how it should offset each character of the string. It would be possible of course to program each character of the alphabet at every possible position on the board and just send the robot a row, column and character. This approach is way too time consuming given that each character probably takes on average 5-10 minutes to program. Multiply that by the number of printable ascii characters and then multiply again by the number of characters on the board. You&#8217;re going to have to trust me (and Mark Lennon) when I tell you that programming the characters once, is completely soul destroying let alone hundreds of times! We ended up using pair programming just to break the monotony and errors which creep in when doing something repetitive like this!</p>
<p>The best way is to program one set of characters and then offset them to the relevant position on the board. This method ensures consistent lettering and reduces the programming time by a factor of the number of letters achievable on the board!</p>
<p>There is also a mechanical difficulty to overcome here. I order to write on a board a pen must apply enough pressure for the ink to flow but not so much as to damage the nib. You can&#8217;t have even a small payload industrial robot bearing down on a whiteboard with a pen without pretty much destroying both! Thus a way for the robot to actually hold the pen at a consistent pressure to the board is needed.</p>
<p>Erasing the previous message</p>
<p>Similar to the challenge of holding the pen is how and when to erase the message that is already present on the board. Do you wipe the board with the robot which involves adding a board erase to the pen holder or do you use another method such as feeding the board fabric through an eraser? Should it be a dry wipe or wet wipe which may prevent the pen writing on the board?</p>
<p>Getting messages from twitter</p>
<p>Purely a software challenge this. And to be honest one of the more trivial challenges of the system given the amount of twitter clients out there and the sophisticated twitter API.</p>
<p><strong>The Design</strong></p>
<p>I take the liberty of calling it a design here, it was actually a hack, a long series of trial and error experiments against the constraints of the system!</p>
<p>I had lots of different robots to choose from, Kuka KRC1, KRC2, ABBs etc.. But the robot that I chose to work with was a brand new, small payload ABB IRC5 fitted with a very capable industrial ethernet interface (Profinet to be exact) and a secondary NIC for remote programming and archiving etc. This second NIC (called the service port) also has DHCP and will assign an IP address to any device connected to it. Another nice feature of the new ABB IRC5 range is the number of libraries and functions built into the robot. There is even a ready made socket library for TCP/IP.</p>
<p>I knew all along that I would need a way of manually sending the letters to the robot. It is essential for testing of the various offsets and characters. So to begin with I knocked up a client/server model where my laptop was connected to the robot&#8217;s service port via ethernet.</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/proto.jpg"><img class="alignleft size-medium wp-image-69" title="prototype client/server" src="http://mattythorne.files.wordpress.com/2010/09/proto.jpg?w=300&#038;h=187" alt="Diagram of prototype system" width="300" height="187" /></a></p>
<p>I programmed into the robot a simple server with a protocol which would accept a TCP/IP telegram consisting of the longitudinal and latitudinal offsets and the ascii code for the character to be printed, separated with commas. The robot would wait for a telegram, parse it into the required data-types, offset the robot and write the character to the board. When it was finished it would echo the telegram back to the sender and wait for the next one.</p>
<p>For the laptop test client I wrote a GUI with all of the major parameters in text boxes and with a send functionality to actually send the telegram. The parameters available to experiment with were as follows&#8230;</p>
<ul>
<li>width and height of each character</li>
<li>number of characters per line (columns)</li>
<li>number of lines (rows)</li>
<li>message to send</li>
</ul>
<p>This allowed me to experiment with the robot without having to dive back into the code all the time. Eventually of course the GUI disappeared altogether for the final client.</p>
<p>So now I had a computer connected which could control the robot over ethernet, the next step was the actual programming of the characters.</p>
<p>The Mechanical Pen Holder</p>
<p>Originally I had a pen holder which I knocked up out of old bits of pipe I had lying around. This worked OK for the prototype but looked utter garbage and was pretty unreliable. I tried various options for the pen holder before Sergio Ayres stepped up and offered to build a real solution. Sergio is one of those guys who can make absolutely anything, perfectly. Within a day he had made about 5 different versions of the holder and finally settled on the one which we used on the day.</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/penholder.jpg"><img class="alignleft size-medium wp-image-70" title="Prototype Pen Holder" src="http://mattythorne.files.wordpress.com/2010/09/penholder.jpg?w=300&#038;h=212" alt="Prototype Pen Holder" width="300" height="212" /></a></p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/newpenholder.jpg"><img class="size-medium wp-image-71 alignnone" title="Final Pen Holder" src="http://mattythorne.files.wordpress.com/2010/09/newpenholder.jpg?w=300&#038;h=225" alt="Final Pen Holder" width="300" height="225" /></a></p>
<p>The Robot Positional Data</p>
<p>The first step was to define a work object which described the position of the whiteboard in space relative to the robot. By programming a work object you are basically telling the robot &#8220;forget about what direction you think your x,y and z coordinates are, I&#8217;ll tell you what they are&#8221;. It then means that by offsetting the coordinates in the x and y direction you are following exactly perpendicular to the whiteboard. Without this functionality even with the board mounted exactly in front of the robot you would get discrepancies from one end of the board to the other. This topic would consume an entire book on it&#8217;s own so if you want more information about work objects then have a look <a title="Robot Base Frames" href="http://commons.bcit.ca/math/examples/robotics/linear_algebra/index.html">here</a>.</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/base.jpg"><img class="alignnone size-full wp-image-72" title="Coordinate" src="http://mattythorne.files.wordpress.com/2010/09/base.jpg?w=480&#038;h=204" alt="Robot Coordinate System" width="480" height="204" /></a></p>
<p>The robot also has to have a tool centre point (TCP) which tells it where the tip of the pen is in space. Again this is quite a detailed topic and would detract from this writeup, have a look <a title="Tool Centre Points" href="http://www.wordiq.com/definition/Robot_control">here</a> if you want an explanation.</p>
<p>So I set up the coordinate system for the work object to have it&#8217;s origin at the top left of the board with positive x going right and positive y going down. I did this so that it would match a computer screen coordinate system. I actually had a few issues with the work object. The whiteboard was quite large and unless the work object coordinate frame was exactly right the letters tended to slant downwards towards the end of a line of text. This was ultimately solved by Mark Lennon who set the coordinates up with a lazer level.</p>
<p>Once you have the coordinates set up for the work object and TCP all you have to do is figure out a a best fit size for the letters on the board. In our case that was 90mm by 90mm. All the characters are then programmed into a 90mm by 90mm space from the origin of the work object. The client running on the computer calculates all the offsets when it sends each letter based on this 90&#215;90 dimension. so the first letter would be sent with a 0,0 offset the next with 90,0 and so on. All the characters where programmed using linear motions so that we could be sure that the robot would travel one to the other without fouling the whiteboard.</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/prog.jpg"><img class="alignnone size-full wp-image-73" title="Letter Programming" src="http://mattythorne.files.wordpress.com/2010/09/prog.jpg?w=349&#038;h=284" alt="Letter Programming System" width="349" height="284" /></a></p>
<p>I&#8217;ve got to say again that programming each character of printable ascii is an absolute pain. Although each letter doesn&#8217;t take long the sheer monotony of doing this makes it seem like an eternity. Mark and I together spent about 2 to 3 days just on this task alone!</p>
<p><strong>The Final Presentation</strong></p>
<p>Once we had the test client running and the robot writing messages, it was time to clean up the whole interface to the thing. The system was getting it&#8217;s first outing at BMW open day so we needed to keep the manual input for visitors to write messages on the day. I had a Siemens touch screen PC lying around which I rigged up to robot in place of my laptop test client. At the last minute after a recommendation from a friend (@RadioKate), I decided to moderate all incoming twitter messages. The Siemens touch panel had a dual NIC so I used the second one with an ad-hoc connection to a netbook for moderating the twitter feed. I wrote an application in Java which pulled in messages via <a title="Command Line Twitter Client" href="http://wiki.github.com/jgoerzen/twidge/">twidge</a> and asked for a simple yes/no before sending them on to the robot. I also had it retweet when the message had been written. Incoming messages from both the manual interface and twitter would be queued and written when the robot had finished it&#8217;s current message. We also added a webcam to automatically photograph the resulting output from the robot.</p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/final-system.jpg"><img class="alignnone size-full wp-image-74" title="final system" src="http://mattythorne.files.wordpress.com/2010/09/final-system.jpg?w=480&#038;h=225" alt="Final System Overview" width="480" height="225" /></a></p>
<p><a href="http://mattythorne.files.wordpress.com/2010/09/nb.jpg"><img class="alignnone size-full wp-image-75" title="netbook" src="http://mattythorne.files.wordpress.com/2010/09/nb.jpg?w=480&#038;h=360" alt="Netbook Moderation Interface" width="480" height="360" /></a><a href="http://mattythorne.files.wordpress.com/2010/09/tp.jpg"><img class="alignnone size-full wp-image-76" title="Touch Panel" src="http://mattythorne.files.wordpress.com/2010/09/tp.jpg?w=480&#038;h=360" alt="Siemens Touch Panel" width="480" height="360" /></a></p>
<p><strong>The First Outing</strong></p>
<p>On Saturday night, we moved the bot into position at the exhibit and bolted it down. We had to reprogram the work object to overcome inconsistancies which occurred after we had moved it.</p>
<p>About 12000 people came to the Open Day and the robot worked all day without stopping. I didn&#8217;t really expect that many people so unfortunately the twitter messages had to take a back seat to those messages put in on the day.</p>
<p><strong>Improvements</strong></p>
<p>The following are things which could be improved given the more time and inclination&#8230;</p>
<ul>
<li>The message doesn&#8217;t wrap properly a word which comes at the end of a line is split in half</li>
<li>It only does upper-case ascii characters, no unicode or non capital letters</li>
<li>It doesn&#8217;t automatically upload the resulting photo of the message</li>
<li>When it erases it cleans the whole board, not just what has been previously written</li>
</ul>
<p><strong>The End</strong></p>
<p>What now for scribblybot? We are going to organise a twitter only day for the bot so that everyone who missed out sending a message on the day can have a go! Hopefully we&#8217;ll sort out the webcam to auto upload and tweet the photo back to the message sender. After that scribblybot is going to left waiting in the workshop until he is needed to replace a faulty unit out on the the production line. He&#8217;s had his five minutes of fame now!</p>
<p>Thanks to all those people who helped and supported me during this project, most of all&#8230;</p>
<ul>
<li>My wife and children</li>
<li>My parents</li>
<li>@RadioKate for her social media advice</li>
<li>Mark Lennon for the programming</li>
<li>Paul Baker for his robot experience and advice</li>
</ul>
<p>Thank guys!</p>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=1.161" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="photo_id=4995409828&amp;photo_secret=585ac9c3e3&amp;flickr_show_info_box=true"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=1.161"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><param name="wmode" value="opaque"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=1.161" bgcolor="#000000" allowfullscreen="true" flashvars="photo_id=4995409828&amp;photo_secret=585ac9c3e3&amp;flickr_show_info_box=true" wmode="opaque" height="300" width="400"></embed></object>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=54&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2010/09/18/scribblybot-the-full-story/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/img_4742.jpg?w=300" medium="image">
			<media:title type="html">img_4742</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/img_4740-e1284797824312.jpg?w=225" medium="image">
			<media:title type="html">img_4740</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/proto.jpg?w=300" medium="image">
			<media:title type="html">prototype client/server</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/penholder.jpg?w=300" medium="image">
			<media:title type="html">Prototype Pen Holder</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/newpenholder.jpg?w=300" medium="image">
			<media:title type="html">Final Pen Holder</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/base.jpg" medium="image">
			<media:title type="html">Coordinate</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/prog.jpg" medium="image">
			<media:title type="html">Letter Programming</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/final-system.jpg" medium="image">
			<media:title type="html">final system</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/nb.jpg" medium="image">
			<media:title type="html">netbook</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/tp.jpg" medium="image">
			<media:title type="html">Touch Panel</media:title>
		</media:content>
	</item>
		<item>
		<title>Three days and counting for scribblybot</title>
		<link>http://mattythorne.wordpress.com/2010/09/10/three-days-and-counting-for-scribblybot/</link>
		<comments>http://mattythorne.wordpress.com/2010/09/10/three-days-and-counting-for-scribblybot/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 06:40:13 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[robot]]></category>
		<category><![CDATA[scribblybot]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.mattythorne.com/?p=50</guid>
		<description><![CDATA[Just a quick update on my earlier post about my industrial robot which writes twiiter messages on a whiteboard, then you may. scribblybot is all packed up now ready to be set up for the open day on Sunday! Remember, you can DM it on the day between 10.30am and 4pm GMT and it will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=50&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just a quick update on my earlier <a href="http://blog.mattythorne.com/2010/09/06/industrial-twitter-robot/">post</a> about my industrial robot which writes twiiter messages on a whiteboard, then you may.</p>
<p><a href="http://twitter.com/scribblybot">scribblybot</a> is all packed up now ready to be set up for the open day on Sunday! Remember, you can DM it on the day between 10.30am and 4pm GMT and it will write your message onto a whiteboard At BMW Plant Oxford open day!</p>
<p>In the meantime here are some reactions&#8230;</p>
<p>Hack A Day &#8211; <a href="http://hackaday.com/2010/09/07/re-purpose-industrial-robotic-arms/">http://hackaday.com/2010/09/07/re-purpose-industrial-robotic-arms/</a></p>
<p><a href="http://hackaday.com/2010/09/07/re-purpose-industrial-robotic-arms/"></a>Tar Heel Mini Club &#8211; <a href="http://www.tarheelminis.org/showthread.php?4870-The-robot-that-painted-your-car-MINI-retired-him-into-a-twitter-robot.-scribblybot">http://www.tarheelminis.org/showthread.php?4870-The-robot-that-painted-your-car-MINI-retired-him-into-a-twitter-robot.-scribblybot</a></p>
<p><a href="http://www.tarheelminis.org/showthread.php?4870-The-robot-that-painted-your-car-MINI-retired-him-into-a-twitter-robot.-scribblybot"></a>Mini Forum &#8211; <a href="http://www.miniforum.com/forums/showthread.php?t=922">http://www.miniforum.com/forums/showthread.php?t=922</a></p>
<p><a href="http://www.miniforum.com/forums/showthread.php?t=922"></a>Motoring File &#8211; <a href="http://www.motoringfile.com/2010/09/09/twitter-robot-tweets-at-bmw-plant-oxford/">http://www.motoringfile.com/2010/09/09/twitter-robot-tweets-at-bmw-plant-oxford/</a></p>
<p><a href="http://www.motoringfile.com/2010/09/09/twitter-robot-tweets-at-bmw-plant-oxford/"></a>Robotistas blog - <a href="http://robotistas.blogspot.com/2010_09_01_archive.html">http://robotistas.blogspot.com/2010_09_01_archive.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=50&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2010/09/10/three-days-and-counting-for-scribblybot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>
	</item>
		<item>
		<title>Industrial Twitter Robot</title>
		<link>http://mattythorne.wordpress.com/2010/09/06/industrial-twitter-robot/</link>
		<comments>http://mattythorne.wordpress.com/2010/09/06/industrial-twitter-robot/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 18:17:01 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[robot]]></category>
		<category><![CDATA[scribblybot]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.mattythorne.com/?p=44</guid>
		<description><![CDATA[On Sunday 12th September 2010 for one day only (between 10am and 4pm) any Twitter direct messages sent to scribblybot will be read by an industrial robot and written out freestyle on a whiteboard in front of hundreds of visitors to BMW&#8217;s Mini Factory in Oxford! I know that this is a completely useless and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=44&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On Sunday 12th September 2010 for one day only (between 10am and 4pm) any Twitter direct messages sent to<a title="scribblybot on twitter" href="https://twitter.com/scribblybot"> scribblybot </a>will be read by an industrial robot and written out freestyle on a whiteboard in front of hundreds of visitors to BMW&#8217;s Mini Factory in Oxford!</p>
<p>I know that this is a completely useless and redundant thing to spend time developing but it&#8217;s my way of bringing Twitter to real life! For once you can post on Twitter and know that people will be watching!</p>
<p>Any messages that are written on the whiteboard will then be re-tweeted to all followers of <a title="scribblybot on Twitter" href="https://twitter.com/scribblybot">scribblybot</a>.</p>
<p>A full technical write up will appear here after the event but until then, here is a couple of sneak photo&#8217;s of the development! There&#8217;s more over at flickr <a href="http://flickr.com/gp/mattythorne/f9kY3a">http://flickr.com/gp/mattythorne/f9kY3a</a>.</p>

<a href='http://mattythorne.wordpress.com/2010/09/06/industrial-twitter-robot/106057-050-5fabad7d/' title='106057-050-5FABAD7D'><img width="150" height="112" src="http://mattythorne.files.wordpress.com/2010/09/106057-050-5fabad7d.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="106057-050-5FABAD7D" title="106057-050-5FABAD7D" /></a>
<a href='http://mattythorne.wordpress.com/2010/09/06/industrial-twitter-robot/4626364720_5cd71c875d_b/' title='4626364720_5cd71c875d_b'><img width="150" height="112" src="http://mattythorne.files.wordpress.com/2010/09/4626364720_5cd71c875d_b.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="4626364720_5cd71c875d_b" title="4626364720_5cd71c875d_b" /></a>

<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=44&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2010/09/06/industrial-twitter-robot/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/106057-050-5fabad7d.jpg?w=150" medium="image">
			<media:title type="html">106057-050-5FABAD7D</media:title>
		</media:content>

		<media:content url="http://mattythorne.files.wordpress.com/2010/09/4626364720_5cd71c875d_b.jpg?w=150" medium="image">
			<media:title type="html">4626364720_5cd71c875d_b</media:title>
		</media:content>
	</item>
		<item>
		<title>Google App Engine (for Java) Rundown</title>
		<link>http://mattythorne.wordpress.com/2009/07/05/google-app-engine-for-java-rundown/</link>
		<comments>http://mattythorne.wordpress.com/2009/07/05/google-app-engine-for-java-rundown/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 23:52:21 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Opensolaris]]></category>
		<category><![CDATA[App Engine]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://mattythorne.com/?p=32</guid>
		<description><![CDATA[I&#8217;ve recently got myself a Java app engine account from google but have held out about reviewing the various features until I had tested it in anger. Well, now I have! Background Details I have two applications running on app engine, one is a jsp based website www.oxfordgeekjam.net, which is no more than a static [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=32&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 152px"><a href="http://code.google.com/appengine"><img title="app engine logo" src="http://code.google.com/appengine/images/appengine_lowres.gif" alt="Google App Engine" width="142" height="109" /></a><p class="wp-caption-text">Google App Engine</p></div>
<p>I&#8217;ve recently got myself a Java <a href="http://code.google.com/appengine/">app engine</a> account from google but have held out about reviewing the various features until I had tested it in anger. Well, now I have!</p>
<p><strong>Background Details</strong></p>
<p>I have two applications running on app engine, one is a jsp based website <a title="Oxford Geek Jam" href="http://www.oxfordgeekjam.net">www.oxfordgeekjam.net</a>, which is no more than a static site with a bit of generated markup and one Java servlet application which makes use of several other google APIs. All my development work is done using the opensolaris operating system from Sun (now part of oracle).</p>
<p><strong>What You Get</strong></p>
<p>When you register for a google app engine account (python or java) you get space to host ten applications. Once they are gone you&#8217;re on your own! Each one of your apps has a quota which is reset every 24 hours, this quota includes factors such as CPU load, bandwidth etc. Once you breach these, you are on your own again unless you have signed up for googles pay as you go type service, which automatically charges for anything above the standard quotas.</p>
<p>When you register one of your ten applications, you must give it a unique name which becomes it&#8217;s application ID. To access your app you can use the URI [applicationID].appspot.com and also your own domain as well if you choose (see below). Its worth noting that once an app has been registered it can not be deleted to make room for another app!</p>
<p>Your application also comes with a &#8220;dashboard&#8221; which is kind of like a control panel for your app. It gives you information about how much of your quota you are using as well as providing an interface to your server logs. This second point is crucial because one thing you don&#8217;t get with the app engine is direct access to the file system space of your application (see deployment below).</p>
<p><strong>Using Your Own Domain Name</strong></p>
<p>The first site is hosted using its own domain name (rather than the default *.appspot.com).  To use my own registered domain name, which I bought through a third party vendor rather than google, was a bit fiddly to begin with but now I know the process should be a cinch. To use your own domain you must have the ability to change your own DNS settings, in particular the CNAME records. Most domain vendors will allow you to do this as did <a href="http://eurodns.com">eurodns</a> with whom mine was registered with. You also have to register with <a href="http://www.google.com/apps/intl/en/business/index.html">google apps</a> (yes, another google service to register with) to prove domain ownership and link your domain to your google &#8220;web master tools&#8221;. After that you simply need to click on versions in you app dashboard and link the domain to your app.</p>
<p>One downside of the process, and one that is causing quite a stir with other app engine developers, is that you cannot have a naked domain resolve to your application. That is to say, if I registered thebestdomainever.com the URI as it stands can NOT resolve to your app! www.thebestdomainever.com or anything.thebestdomainever.com would be fine though! Of course the way to get around this is to redirect the naked domain to the google acceptable domain, but I understand some registrars don&#8217;t allow this, again I was lucky, mine did!</p>
<p><strong>Coding the Application</strong></p>
<p>For vanilla jsp applications this is no more difficult than coding the pages and bundling them with the xml deployment descriptor and a couple of settings files in <a href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html">standard WAR format</a>. The process is somewhat more difficult when it comes to writing servlets and using regular java classes.</p>
<p>There is a plugin for the eclipse IDE which is supposed to mange the coding and build process for you but I haven&#8217;t used it therefore cannot comment! I used netbeans (as I always do) and managed to configure the IDE relatively easily with a bit of  help from the documentation, and using <a href="http://code.google.com/appengine/docs/java/tools/ant.html">apache ant</a> to manage the build. I won&#8217;t go into too many details unless somebody asks for it but it basically involves downloading the app engine SDK in zip format (which rolls in at a hefty 20Mb)  and importing the com.google.appengine libraries. App engine applications use the <a href="http://java.sun.com/products/servlet/">Java Servlet Standard</a> so most developers should feel right at home.</p>
<p>The only thing to watch out while coding is that all applications run in a sand box with a restricted <a href="http://code.google.com/appengine/docs/java/jrewhitelist.html">white-list</a> of java classes which are allowed to be used, so you may want to check the dependencies of your favorite libraries before using them!</p>
<p><strong>Deploying the Application</strong></p>
<p>This is the part of the process which I found really pleasantly surprising. The testing and deployment process worked (for me) straight out of the box!</p>
<p>Given the following constraints I really appreciate this level of detail&#8230;</p>
<ol>
<li>I&#8217;m using opensolaris</li>
<li>I was using a really early version of the app engine API</li>
<li>The SDK is a single download regardless of whether you use a mac, linux or windoze</li>
</ol>
<p>To run the app using the localhost as a testing server was as simple as issuing the command&#8230;</p>
<pre>dev_appserver.sh <em>[war-location]</em></pre>
<p>to the shell.</p>
<p>Uploading the app to your app engine space is similarly easy&#8230;</p>
<pre>appcfg.sh update <em><em>[war-location]</em></em></pre>
<p>One thing to note is that you must make sure that the settings file appengine-web.xml is in the WEB-INF folder and points to your application ID.</p>
<p>Once your app has uploaded, it has gone. You have no way of retrieving it back as there is no access to your application&#8217;s file space. This even includes access by the app itself (for obvious reasons).  If you do need persistence and serialisation then you are encouraged to use google&#8217;s datastore, but this comes with quota limits.</p>
<p><strong>Quotas</strong></p>
<p>Each application has quotas which are reset every 24 hours. These quotas include CPU time, bandwidth (both ways), Mail and deployments, among others. If you go for google&#8217;s premium service then once you reach these quota limits then anything above the quota is charged for, if you don&#8217;t then app will not function for the part which requires the quota. There are also hard limits which even premium customers can&#8217;t breach. The ten application limit per app engine account is one.</p>
<p>Two of the quota limits are for google datastore api usage and URLFetch usage. So even if your app is only making use of google provided services then you are still limited to amount of traffic you are allowed.</p>
<p><strong>Conclusions</strong></p>
<p><strong>Things I like</strong></p>
<ul>
<li>The testing and uploading process is a doddle to use</li>
<li>Once you&#8217;ve set up your IDE coding and deploying is also easy</li>
<li>The service is free which makes the quotas quite generous</li>
<li>Using you own domain is relatively easy and can be done any time before or after the app is finished</li>
</ul>
<p><strong>Things I Dislike</strong></p>
<ul>
<li>Why oh why can&#8217;t I delete an application once I am done with it?</li>
<li>Why can I only have ten applications, especially considering the above?</li>
<li>Why am I penalised by quota limits for google&#8217;s own services? Shouldn&#8217;t they encourage use of their own services rather than those of third parties?</li>
</ul>
<p>I hope this post is of some value to some of you, please feel free to comment and if you would like me to send you my netbeans and/or jsp development templates, I am more than happy to do so!</p>
<p>Cheers,</p>
<p>Matty</p>
<p><strong>Resources</strong></p>
<p><a href="http://code.google.com/appengine/">http://code.google.com/appengine/</a> &#8211; The Google App Engine</p>
<p><a href="http://www.google.com/apps/intl/en/business/index.html">http://www.google.com/apps/intl/en/business/index.html</a> &#8211; Google apps for business</p>
<p><a href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html">http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html</a> &#8211; The WAR packaging standard</p>
<p><a href="http://ant.apache.org/">http://ant.apache.org/</a> &#8211; Apache ANT</p>
<p><a href="http://java.sun.com/products/servlet/">http://java.sun.com/products/servlet/</a> &#8211; The Java servlet standard</p>
<p><a href="http://code.google.com/appengine/docs/java/jrewhitelist.html">http://code.google.com/appengine/docs/java/jrewhitelist.html</a> &#8211; The Java class app-engine white-list</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=32&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2009/07/05/google-app-engine-for-java-rundown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>

		<media:content url="http://code.google.com/appengine/images/appengine_lowres.gif" medium="image">
			<media:title type="html">app engine logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Oxford Geek Jam</title>
		<link>http://mattythorne.wordpress.com/2009/06/02/oxford-geek-jam/</link>
		<comments>http://mattythorne.wordpress.com/2009/06/02/oxford-geek-jam/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 05:46:00 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[Oxford Geek Jam]]></category>
		<category><![CDATA[Oxford Geek Night]]></category>

		<guid isPermaLink="false">http://mattythorne.com/?p=25</guid>
		<description><![CDATA[So the first Oxford Geek Jam is fast approaching with just five days to go until the event! Had loads of great feedback from folks especially following my rather poor pitch at Oxford Geek Night 12! In many ways my low standard of my pitch served me well because it meant that people made the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=25&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://oxfordgeekjam.net"><img class="alignright" style="border:0 none;margin:2px;" title="Oxford Geek Jam logo" src="http://blog.chilisoft.co.uk/shares/ogj-logo-small.png" alt="Oxford Geek Jam logo" width="200" height="104" /></a></p>
<p>So the first Oxford Geek Jam is fast approaching with just five days to go until the event! Had loads of great feedback from folks especially following my rather poor pitch at Oxford Geek Night 12!</p>
<p>In many ways my low standard of my pitch served me well because it meant that people made the effort to come and speak to me in person to get more details about the event and take away a moo mini card!</p>
<p>So far people have kept their coding ideas and potential projects close to their chest although I have heard a few ideas that people will be bringing along! Plus I have one or two of my own.</p>
<p>Not sure how many people are coming yet, we have twelve confirmed, but we really need to keep this first Geek Jam as informal as possible to minimise the impact to our hosts the Jam Factory. Maybe if it&#8217;s a roaring success we can go more organised with the next one and provide a private venue/catering etc..</p>
<p>I&#8217;m hoping to see a good mix of people and skills for this event and I will reiterate, truly everybody is welcome.</p>
<p>All that remains now is to say, see you on the day!</p>
<p><a href="http://oxfordgeekjam.net">Oxford Geek Jam</a>, 10:30am, Sunday 7th June, Jam Factory, Oxford</p>
<blockquote><p>Without the wind, the grass does not move. Without software, hardware is useless &#8211; Geoffrey James, The Tao of Programming</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=25&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2009/06/02/oxford-geek-jam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>

		<media:content url="http://blog.chilisoft.co.uk/shares/ogj-logo-small.png" medium="image">
			<media:title type="html">Oxford Geek Jam logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Old meets New!</title>
		<link>http://mattythorne.wordpress.com/2009/05/20/old-meets-new/</link>
		<comments>http://mattythorne.wordpress.com/2009/05/20/old-meets-new/#comments</comments>
		<pubDate>Wed, 20 May 2009 02:54:03 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[DDE]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://mattythorne.com/?p=20</guid>
		<description><![CDATA[Ok, I just finished an unusual project for a client today. Specs were roughly as follows&#8230; collect data daily from an embedded computer legacy interface of computer is DDE via a propriatory gateway app running on a windoze box Take said data and visualise it on the company intranet in the form of a graph [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=20&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ok, I just finished an unusual project for a client today. Specs were roughly as follows&#8230;</p>
<ol>
<li>collect data daily from an embedded computer</li>
<li>legacy interface of computer is DDE via a propriatory gateway app running on a windoze box</li>
<li>Take said data and visualise it on the company intranet in the form of a graph</li>
</ol>
<p>This really is old meets new here as I have no choice but to use the legacy DDE link but then it needs visualising on the net! There are several ways to do this and I know I will get shouted at by someone, but this is the way I opted for given the time constraints!</p>
<p><strong>The Daemon Process</strong></p>
<p>I created a daemon process in c++ which parses an XML configuration file containing the the DDE topic and the various data to be collected (re-usable of course by changing only the XML). Once a day the data is collected via DDE via the gateway app and is dropped into a SQL database instance. The daemon process lives and breathes on the same windoze box as the gateway app.</p>
<p><strong>The Webserver</strong></p>
<p>This is the easy bit! A quick Java class to run in Tomcat 6 to pick up the data from the database and visualise it in a graph applet!<strong> </strong>Incidentally, if you need a simple, does-what-it-says-on-the-tin, open source Java graph library, then look no further than the JavaTao, <a href="http://www.javatao.com/content/view/14/13/">Java Charts</a> library!<br />
Dont you just love hacking together systems to include legacy gear? It&#8217;s not forward thinking, but it does make you think, dde has after all been with us since windows 2.0 way back in 1987!</p>
<p>All in all I spent about 10 hours designing, coding and testing this solution, that doesn&#8217;t include my midnight chinese takeaway though!</p>
<p>Cheers,</p>
<p>Matt</p>
<p><strong>Resources</strong><a href="http://www.javatao.com/content/view/14/13/"></a></p>
<p><a href="http://www.javatao.com/content/view/14/13/">Java Charts</a> JavaTao Charts Library</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=20&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2009/05/20/old-meets-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>
	</item>
		<item>
		<title>Oxford Geek Jam 7th June 2009</title>
		<link>http://mattythorne.wordpress.com/2009/05/10/oxford-geek-jam-7th-june-2009/</link>
		<comments>http://mattythorne.wordpress.com/2009/05/10/oxford-geek-jam-7th-june-2009/#comments</comments>
		<pubDate>Sun, 10 May 2009 15:45:02 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[Barcamp]]></category>
		<category><![CDATA[Oxford]]></category>
		<category><![CDATA[Oxford Geek Jam]]></category>
		<category><![CDATA[Oxford Geek Night]]></category>
		<category><![CDATA[BarcampApacheOxford]]></category>
		<category><![CDATA[Code Jam]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Geek Jam]]></category>
		<category><![CDATA[Jam Factory]]></category>
		<category><![CDATA[OxfordGeekJam]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Social]]></category>

		<guid isPermaLink="false">http://mattythorne.com/?p=12</guid>
		<description><![CDATA[Getting excited now! We&#8217;re less than a month away from the very first Oxford Geek Jam! So what is Oxford Geek Jam? It&#8217;s an event where like minded professionals (and interested parties) get together socially and put their collaborative thinking caps on to design write or discuss new coding ideas/projects. We came up with the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=12&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;"><a href="http://oxfordgeekjam.net"><img class="alignright" src="http://blog.chilisoft.co.uk/shares/ogj-logo-small.png" alt="OGJ Logo" /></a><br />
Getting excited now! We&#8217;re less than a month away from the very first <a title="Oxford Geek Jam" href="http://oxfordgeekjam.net">Oxford Geek Jam</a>!</p>
<p style="text-align:left;">So what is Oxford Geek Jam? It&#8217;s an event where like minded professionals (and interested parties) get together socially and put their collaborative thinking caps on to design write or discuss new coding ideas/projects. We came up with the idea after <a href="http://www.barcamp.org/BarCampApacheOxford">BarcampApacheOxford</a> as the few remaining stragglers sat, chatted and listened to the incredibly talented offbeat song smith <a href="http://ihatemornings.com/">Ben Walker</a>!</p>
<p style="text-align:left;">We have a great pool of talent attending and the event is generating a lot of interest. Coming along are <strong>Oleg Lavrovsky</strong> from Cisco, <strong>Ben Werdmuller</strong> of Elgg and Curverider fame as well as <strong>Matt Westcott</strong> the unofficial king of Javascript, amongst many notable others!</p>
<p style="text-align:left;">We have a date (7 June) and a place (<a title="Oxford Jam Factory" href="http://thejamfactoryoxford.com">Oxford Jam Factory</a>) all that remains now is for me to pitch the event at <a href="http://oxford.geeknights.net/2009/may-27th/">Oxford Geek Night 12</a>, armed with my <a title="moo.com" href="http://moo.com">moo.com</a> mini cards promoting the event! Then just sit back and see who arrives on the day!</p>
<p style="text-align:left;">Looking forward to seeing you there!</p>
<p style="text-align:left;">Matt</p>
<p style="text-align:left;"><strong>Resources :</strong><a title="Oxford Geek Jam" href="http://oxfordgeekjam.net/"></a></p>
<p style="text-align:left;"><a title="Oxford Geek Jam" href="http://oxfordgeekjam.net/">Oxford Geek Jam</a></p>
<p style="text-align:left;"><a href="http://www.barcamp.org/BarCampApacheOxford">BarcampApacheOxford</a></p>
<p style="text-align:left;"><a href="http://ihatemornings.com/">Ben Walker</a> Ben Walker / I hate mornings<a title="Oxford Jam Factory" href="http://thejamfactoryoxford.com/"></a></p>
<p style="text-align:left;"><a title="Oxford Jam Factory" href="http://thejamfactoryoxford.com/">Oxford Jam Factory</a></p>
<p style="text-align:left;"><a href="http://oxford.geeknights.net/2009/may-27th/">Oxford Geek Night 12</a></p>
<p style="text-align:left;"><a title="moo.com" href="http://moo.com/">moo.com</a> online printing company</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=12&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2009/05/10/oxford-geek-jam-7th-june-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>

		<media:content url="http://blog.chilisoft.co.uk/shares/ogj-logo-small.png" medium="image">
			<media:title type="html">OGJ Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Compiling the UNP Libs Under Opensolaris</title>
		<link>http://mattythorne.wordpress.com/2009/05/09/compiling-the-unp-libs-under-opensolaris/</link>
		<comments>http://mattythorne.wordpress.com/2009/05/09/compiling-the-unp-libs-under-opensolaris/#comments</comments>
		<pubDate>Sat, 09 May 2009 18:04:59 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[Opensolaris]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Unix Network Programming]]></category>
		<category><![CDATA[unp.h]]></category>
		<category><![CDATA[W. Richard Stevens]]></category>

		<guid isPermaLink="false">http://mattythorne.wordpress.com/?p=6</guid>
		<description><![CDATA[[REPOST FROM DECEMBER 2008] Having recently changed my changed my operating system to Opensolaris I had to re-compile the unp library from (sadly the late) Richard Stevens definitive text Unix Network Programming. Following the instructions provided with the library source, resulted in various compilation errors rendering the library impossible to compile. I have seen many [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=6&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[REPOST FROM DECEMBER 2008]</p>
<p>Having recently changed my changed my operating system to Opensolaris I had to re-compile the unp library from (sadly the late) <strong>Richard Stevens</strong> definitive text <strong>Unix Network Programming</strong>.<br />
Following the instructions provided with the library source, resulted in various compilation errors rendering the library impossible to compile. I have seen many posts on this subject but no definitive how-to to fix the problem. As Stevens himself points out&#8230;</p>
<blockquote><p>&#8220;[He does] *NOT* have time to help everyone port the code to different environments&#8221;.</p></blockquote>
<p>I can however help when it comes to <strong>Opensolaris build 2008.11</strong>!</p>
<p>To compile the library take the following steps (the steps in <strong>bold</strong> are the extra bits you need for Opensolaris)&#8230;</p>
<ol>
<li>Get the file unpv12e.tar.gz (which is the source distribution of the library)</li>
<li>gunzip -c unpv12e.tar.gz | tar xvf &#8211; # Unpack the archive into a location of your choice</li>
<li>cd unpv12e</li>
<li><strong>Open the file &#8216;configure&#8217; in the text editor of your choice and change line 4374 to be the same as line 4372 (overwrite the existing line)</strong></li>
<li>./configure    # which should sort out the implementation differences</li>
<li>cd lib         # build the basic library that all programs need</li>
<li><strong>Open the file &#8216;unp.h&#8217; in the text editor of your choice and comment out lines 114 to 117</strong></li>
<li>make</li>
<li>cd ../libfree  # continue building the basic library</li>
<li>make</li>
<li>cd ../libgai   # the getaddrinfo() and getnameinfo() functions</li>
<li>make</li>
<li>cd ../libxti   # opensolaris supports XTI</li>
<li>make           # opensolaris supports XTI</li>
</ol>
<p>You should now be good to go! Just to make sure, try to build and run the intro project from the book&#8230;</p>
<p>cd ../intro    # build and test a basic client program<br />
make daytimetcpcli<br />
./daytimetcpcli 127.0.0.1 # run the program</p>
<p>I must say that this book is the definitive text on the subject and I can&#8217;t recommend it heartily enough.</p>
<p>Happy hacking,</p>
<p>Matt</p>
<p><strong>Resources&#8230;</strong><br />
Read more about the author  <a href="http://en.wikipedia.org/wiki/W._Richard_Stevens" target="_blank">Richard Stevens</a>.<br />
<a href="http://blog.chilisoft.co.uk/shares/unpv12e.tar.gz">unpv12e.tar.gz</a> &#8211; The original file from the book<br />
<a href="http://blog.chilisoft.co.uk/shares/unpprecomp.tar.gz">unpprecomp.tar.gz</a> &#8211; My precompiled library based on the instructions above for Opensolaris build 2008.11 for those who cant be arsed to do it themselves!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=6&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2009/05/09/compiling-the-unp-libs-under-opensolaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello Everybody!</title>
		<link>http://mattythorne.wordpress.com/2009/05/09/hello-everybody/</link>
		<comments>http://mattythorne.wordpress.com/2009/05/09/hello-everybody/#comments</comments>
		<pubDate>Sat, 09 May 2009 17:44:19 +0000</pubDate>
		<dc:creator>mattythorne</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattythorne.wordpress.com/?p=3</guid>
		<description><![CDATA[Hello everyone! I&#8217;ve abandoned my old blog because it became stagnent, mostly due to my idleness! This new blog here at word press is my attempt to start afresh! Having in said that, some of my instructional posts from my original blog will be ported over here for new readers, so there may be a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=3&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Hello everyone!</strong></p>
<p>I&#8217;ve abandoned my old blog because it became stagnent, mostly due to my idleness! This new blog here at word press is my attempt to start afresh!</p>
<p>Having in said that, some of my instructional posts from my original blog will be ported over here for new readers, so there may be a flurry of activity to begin with!</p>
<p>I always welcome comments and suggestions.</p>
<p>Cheers,</p>
<p>Matt</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattythorne.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattythorne.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattythorne.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattythorne.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattythorne.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattythorne.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattythorne.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattythorne.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattythorne.wordpress.com&amp;blog=7684793&amp;post=3&amp;subd=mattythorne&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://mattythorne.wordpress.com/2009/05/09/hello-everybody/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edcc2cca340e84b99cde293a5215eb6f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mattythorne</media:title>
		</media:content>
	</item>
	</channel>
</rss>
