<?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>atc &#187; Technology</title>
	<atom:link href="http://blog.beplacid.net/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.beplacid.net</link>
	<description>Musings of technology, sport, life et al</description>
	<lastBuildDate>Thu, 10 Jun 2010 10:24:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Weblogic Errors</title>
		<link>http://blog.beplacid.net/2010/03/22/weblogic-errors/</link>
		<comments>http://blog.beplacid.net/2010/03/22/weblogic-errors/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 17:27:35 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=141</guid>
		<description><![CDATA[I&#8217;ve been plowing through Maven2 &#38; Weblogic at work recently, in an attempt to get an EJB/MDB &#38; EAR deployed for testing out JMS. I would often hit the following errors when deploying an App in Weblogic 9.2:

Unable to access the selected application.
Exception in AppMerge flows&#8217; progression

Baffled, I almost gave up &#8211; the errors mean [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been plowing through Maven2 &amp; Weblogic at work recently, in an attempt to get an EJB/MDB &amp; EAR deployed for testing out JMS. I would often hit the following errors when deploying an App in Weblogic 9.2:</p>
<ul>
<li>Unable to access the selected application.</li>
<li>Exception in AppMerge flows&#8217; progression</li>
</ul>
<p>Baffled, I almost gave up &#8211; the errors mean <em>nothing</em>.</p>
<p>Thankfully trial and error (and plenty of web searching) I have discovered that the errors are caused by invalid deployment descriptors or invalid WAR/EARs (an empty WAR or EAR will cause these errors immediately). So don&#8217;t fret, it&#8217;s not the end of the world!</p>
<p>First check your web.xml, application.xml and then ensure the contents of the WAR/EAR are as expected &#8211; APP-INF, META-INF only for the latter!</p>
<p>Hope that helps someone, it annoyed me for a while!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2010%2F03%2F22%2Fweblogic-errors%2F';
  addthis_title  = 'Weblogic+Errors';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2010/03/22/weblogic-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Battlefield Bad Company 2 (Xbox 360) first impressions</title>
		<link>http://blog.beplacid.net/2010/03/08/battlefield-bad-company-2-xbox-360-first-impressions/</link>
		<comments>http://blog.beplacid.net/2010/03/08/battlefield-bad-company-2-xbox-360-first-impressions/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 08:57:55 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[XBox 360]]></category>
		<category><![CDATA[xbox]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=116</guid>
		<description><![CDATA[Some initial thoughts halfway through my most anticipated sequel this year&#8230;
The story’s poor. What am I doing really? You find this guy, now this guy, oh here’s something different: find this place! Whilst you’re doing that random people will pop up like something out of Time Crisis 2 and try and kill you. Oh and [...]]]></description>
			<content:encoded><![CDATA[<p>Some initial thoughts halfway through my most anticipated sequel this year&#8230;</p>
<p>The story’s poor. What am I doing really? You find this guy, now this guy, oh here’s something different: find this place! Whilst you’re doing that random people will pop up like something out of Time Crisis 2 and try and kill you. Oh and to do all that you go through a million different checkpoints. That’s what MW2 did and it f-cking sucks. It feels really scripted to me and I hate it for that. The ‘level’ interaction seems unfinished. For instance when you run into the castle-esque areas on the desert map (de targo or something?) you affectively initiate a mission or new sub-story sequence that ends in a boss (i.e. a f-cking great big Apache helicopter). Once you’re done, the screen fades to black, you see a random cinematic sequence where Haggard says something odd or funny, and suddenly you’re outside with your vehicle and squad (which, by the way, are popping into view from top to bottom like something out of a tech demo). Christ.</p>
<p>Oh, and that annoying bug with the loading screen: you’re reading the tip text then it fades to black. You think “great, the level’s starting” and suddenly the text’s back and you’re loading again. Huh?</p>
<p>The action is outstanding, second to none. The gadgets, guns and vehicles are much better than before; they feel more realistic and reactive. The destructive environment is also an improvement on the first (which wasn’t bad in the first place!). The textures look amazing and the game looks ever-so realistic. The Brazilian jungle was actually beautiful.</p>
<p>It’s a good, fun game, but the thing that made the first Bad Company instalment so good was its open-ended gameplay and well-polished storytelling, both of which have taken a back seat in #2 to do what seems like its competitor does: all looks and no substance. Grr!</p>
<p>That said, I&#8217;ve yet to play multiplayer which is where Bad Company 1 really got going.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2010%2F03%2F08%2Fbattlefield-bad-company-2-xbox-360-first-impressions%2F';
  addthis_title  = 'Battlefield+Bad+Company+2+%28Xbox+360%29+first+impressions';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2010/03/08/battlefield-bad-company-2-xbox-360-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ant TODO Update</title>
		<link>http://blog.beplacid.net/2010/01/02/ant-todo-update/</link>
		<comments>http://blog.beplacid.net/2010/01/02/ant-todo-update/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 21:34:38 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=111</guid>
		<description><![CDATA[Quick update regarding Ant TODO: there&#8217;s now a JAR available for download, so you can get it running even quicker!

  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2010%2F01%2F02%2Fant-todo-update%2F';
  addthis_title  = 'Ant+TODO+Update';
  addthis_pub    = '';

]]></description>
			<content:encoded><![CDATA[<p>Quick update regarding <a title="Ant TODO" href="http://code.google.com/p/ant-todo/" target="_blank">Ant TODO</a>: there&#8217;s now a <a title="Ant TODO downloads" href="http://code.google.com/p/ant-todo/downloads/list" target="_blank">JAR available for download</a>, so you can get it running even quicker!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2010%2F01%2F02%2Fant-todo-update%2F';
  addthis_title  = 'Ant+TODO+Update';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2010/01/02/ant-todo-update/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ant Task for TODOs</title>
		<link>http://blog.beplacid.net/2009/12/31/apache-ant-task-todo/</link>
		<comments>http://blog.beplacid.net/2009/12/31/apache-ant-task-todo/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 15:58:35 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[todo]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=108</guid>
		<description><![CDATA[I often felt the need to scratch an itch when it comes to source code and a little fragment called //TODO. It&#8217;s scattered everywhere; I&#8217;m sure you&#8217;ve seen it. Yet no matter what codebase you&#8217;re looking at, there&#8217;s never any real exposure to them.
I therefore decided to implement an Ant Task for parsing TODOs in [...]]]></description>
			<content:encoded><![CDATA[<p>I often felt the need to scratch an itch when it comes to source code and a little fragment called //TODO. It&#8217;s scattered everywhere; I&#8217;m sure you&#8217;ve seen it. Yet no matter what codebase you&#8217;re looking at, there&#8217;s never any real exposure to them.</p>
<p>I therefore decided to implement an Ant Task for parsing TODOs in source code. You can read more about it over on the <a href="http://code.google.com/p/ant-todo/" target="_blank">Google Code project</a>. Please feel free to review code, <a title="Ant TODO requirements" href="http://code.google.com/p/ant-todo/" target="_blank">suggest features</a> or <a title="Getting started with Ant TODO" href="http://code.google.com/p/ant-todo/wiki/GettingStarted">try it out</a> and <a href="http://code.google.com/p/ant-todo/issues/list">report a bug</a>.</p>
<p>Happy new year to all; many happy returns.</p>
<p>See you in 2010!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F12%2F31%2Fapache-ant-task-todo%2F';
  addthis_title  = 'Ant+Task+for+TODOs';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/12/31/apache-ant-task-todo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sky Songs and Linux</title>
		<link>http://blog.beplacid.net/2009/12/15/sky-songs-and-linux/</link>
		<comments>http://blog.beplacid.net/2009/12/15/sky-songs-and-linux/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 22:55:02 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NoNeedForWindows]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[sky]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=104</guid>
		<description><![CDATA[If you want to use the Sky Songs download client in Linux (say Ubuntu or Debian), just paste the following into a file called skysongs in $HOME/bin and then chmod a+x it:
cd $SKY_SONGS_DIR; /usr/bin/java -cp . -jar downloader.jar $*
Note, $SKY_SONGS_DIR should be changed to your installation directory. If you used wine to install Sky Songs, [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to use the <strong>Sky Songs download client in Linux</strong> (say Ubuntu or Debian), just paste the following into a file called skysongs in $HOME/bin and then chmod a+x it:<br />
<code>cd $SKY_SONGS_DIR; /usr/bin/java -cp . -jar downloader.jar $*</code></p>
<p><span style="text-decoration: underline;"><strong>Note</strong></span>, $SKY_SONGS_DIR should be changed to your installation directory. If you used <strong>wine</strong> to install Sky Songs, have a look under <strong>/home/YOURUSERNAME/.wine/drive_c/windows/profiles/YOURUSERNAME/Local Settings/Application Data/Sky  Songs/</strong>.</p>
<p>Sky Songs works by giving you &#8220;SKS&#8221; files that describe to its client (&#8220;<strong>Sky Songs MP3 Downloader</strong>&#8220;) what and how to download; i.e. your songs. Once you&#8217;ve downloaded one (say Renegades.sks; the &#8220;Renegades&#8221; album by Rage Against the Machine), just execute the skysongs script as follows:<br />
<code>alex@prometheus:~/Music$ skysongs Renegades.sks</code></p>
<p>Thankfully the Sky Songs download client is written in Java so it&#8217;s not only cross-platform but its structure is obvious.</p>
<p>Please note that these instructions are absolutely not intended for circumventing Sky&#8217;s download procedure, nor are they to be used to break the Terms of Service you&#8217;re most likely bound to by law. This information is purely for educational purposes and to assist those who are new to Linux get to grips with their everyday software in a new environment.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F12%2F15%2Fsky-songs-and-linux%2F';
  addthis_title  = 'Sky+Songs+and+Linux';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/12/15/sky-songs-and-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave Extensions Python API &#8211; Annotation Documentation</title>
		<link>http://blog.beplacid.net/2009/10/19/google-wave-extensions-python-api-annotation-documentation/</link>
		<comments>http://blog.beplacid.net/2009/10/19/google-wave-extensions-python-api-annotation-documentation/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 06:57:53 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=93</guid>
		<description><![CDATA[Quick post documenting the much-sought-after structure of the Python API&#8217;s Annotation name/value pairing. If you want to annotate a blip&#8217;s content, you&#8217;ll need to utilise the values below:

conv/title
 lang = en
 style/fontWeight = bold
 style/fontStyle = italic
 style/textDecoration = underline
 style/textDecoration = line-through
 style/fontSize = 2em
 style/color =r gb(229, 51, 51)
 style/backgroundColor = rgb(51, 127, [...]]]></description>
			<content:encoded><![CDATA[<p>Quick post documenting the much-sought-after structure of the Python API&#8217;s Annotation name/value pairing. If you want to annotate a blip&#8217;s content, you&#8217;ll need to utilise the values below:</p>
<ul>
<li>conv/title</li>
<li> lang = en</li>
<li> style/fontWeight = bold</li>
<li> style/fontStyle = italic</li>
<li> style/textDecoration = underline</li>
<li> style/textDecoration = line-through</li>
<li> style/fontSize = 2em</li>
<li> style/color =r gb(229, 51, 51)</li>
<li> style/backgroundColor = rgb(51, 127, 229)</li>
<li> link/manual = <a rel="nofollow" href="http://example.com/" target="_blank">http://example.com/</a></li>
</ul>
<p>A Python example of using the above:</p>
<p><code><br />
msg = "This is a message for you"<br />
doc = wavelet.GetDocument()<br />
doc.SetText(msg)<br />
doc.SetAnnotation(Range(msg[-4:], len(msg) - 1), "style/fontStyle", "italic")</code></p>
<p>The above should italicise the word &#8220;you&#8221; in the variable &#8220;msg&#8221;.</p>
<p><a href="http://groups.google.com/group/google-wave-api/browse_thread/thread/e313db4ff118907a" target="_blank">According to Google employee</a> &#8216;Pamela&#8217;, this isn&#8217;t set in stone &#8220;as we aren&#8217;t  confident in their stability&#8221;. Thanks to Dave of the same Google Group thread for documenting and posting the styling annotation name and value pairs.</p>
<p>Hope that helps someone ;)</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F10%2F19%2Fgoogle-wave-extensions-python-api-annotation-documentation%2F';
  addthis_title  = 'Google+Wave+Extensions+Python+API+%26%238211%3B+Annotation+Documentation';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/10/19/google-wave-extensions-python-api-annotation-documentation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Wave Python API and Annotations</title>
		<link>http://blog.beplacid.net/2009/10/19/google-wave-python-api-and-annotations/</link>
		<comments>http://blog.beplacid.net/2009/10/19/google-wave-python-api-and-annotations/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 01:08:53 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=90</guid>
		<description><![CDATA[I spent a considerable amount of time this weekend hacking away at my Google Wave robot, Wave Toolkit. It&#8217;s a lot of fun and I&#8217;ve managed to write something that allows for quick implementation of &#8216;commands&#8217; from initial idea to &#8216;live&#8217;.
One of the frustrating things about developing Google Wave extensions is the poor documentation. It [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a considerable amount of time this weekend hacking away at my Google Wave robot, <a title="Wave Toolkit" href="http://wave-toolkit.appspot.com/" target="_blank">Wave Toolkit</a>. It&#8217;s a lot of fun and I&#8217;ve managed to write something that allows for quick implementation of &#8216;commands&#8217; from initial idea to &#8216;live&#8217;.</p>
<p>One of the frustrating things about developing Google Wave extensions is the poor documentation. It starts out great: lovely overview documentation and tutorial, with plenty of insight and step-by-step instructions; and then nothing. It stops there. Apart from reading the API documentation which can be cumbersome, you&#8217;re left alone in the dark, weeping like a sad puppy after meeting its new owners.</p>
<p>An example of this is using Annotations within Google Wave; formatting text for bold or italics,  providing nicely worded hyperlinks or embedding images is governed by inserting annotations that &#8216;explain&#8217; how the text should look. If you try to find out <em>how</em> to use these objects within the Python API you&#8217;ll see it&#8217;s nearly impossible. I got my answer only from guessing and scouring the Google Group and reading and example in Java, then posting when that didn&#8217;t work and finally getting some helpful advice. Please Google, document this protocol more!</p>
<p>So, to save an further frustration, <strong>here&#8217;s how to use Annotations in the Google Wave python API for robots</strong>:<br />
<code> doc = wavelet.CreateBlip().GetDocument()<br />
doc.SetText("THIS IS ANNOTATED TEXT")<br />
doc.SetAnnotation(Range(2, 12), "link/manual", "http://www.google.com")</code></p>
<p>I hope to hell that helps someone and saves the pain I underwent to work it out! Buggered if I know how to bold text though&#8230;Happy hacking!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F10%2F19%2Fgoogle-wave-python-api-and-annotations%2F';
  addthis_title  = 'Google+Wave+Python+API+and+Annotations';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/10/19/google-wave-python-api-and-annotations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Wave Extensions &#8211; Wave Toolkit</title>
		<link>http://blog.beplacid.net/2009/10/17/wave-toolkit-google-wave-extensions/</link>
		<comments>http://blog.beplacid.net/2009/10/17/wave-toolkit-google-wave-extensions/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 22:38:36 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=82</guid>
		<description><![CDATA[Update: You might find my latest posts on Google Wave helpful.
So I managed to join the select elite bandwagon that is the Google Wave preview, which entitled me to early access to Google&#8217;s new masterpiece and 8 invites to bribe friends with (although I only have a few, so the whole eight might not stretch [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> You might find my <a href="http://blog.beplacid.net/tag/google-wave/" target="_blank">latest posts on Google Wave</a> helpful.</p>
<p>So I managed to join the select elite bandwagon that is the<strong> Google Wave preview</strong>, which entitled me to early access to Google&#8217;s new masterpiece and 8 invites to bribe friends with (although I only have a few, so the whole eight might not stretch too far&#8230;). I have to admit, I&#8217;m not sure what the fuss is about. It&#8217;s clever, really clever; but there&#8217;s <em>not much to it yet</em>. It is, for all intents and purposes, a well-marketed collaboration tool, or put simply: a clever chatroom. Time will tell though. Perhaps its usefulness is yet to be seen.</p>
<p>Being a devout geek, and a sucker for anything Google, I was led to explore the programming possibilities behind Wave. Rather brilliantly Google have created an API that will allow you to do one of two things: create a &#8216;Robot&#8217; &#8211; an automated participant programmed by you &#8211; or embed your own &#8216;gadget&#8217; in a wave (think a Google map, but your content). The API is rich, if its documentation can be a bit light in some respects (where the hell are the CreateBlip() and such methods documented?! All you get in the API docs are &#8216;Get*&#8217; methods&#8230;pointless!).</p>
<h2>Introducing Wave Toolkit</h2>
<p>Having programmed plenty of bots for IRC and Eternal Lands over the years I had the experience and ideas behind creating an automated character that can be used to aid users, or simply provide a bit of light entertainment. So after plenty of reading and hacking, I managed to come up with <strong><a title="Wave Toolkit" href="http://wave-toolkit.appspot.com/" target="_blank">Wave Toolkit</a></strong>; a simple Python robot for wave that provides <a title="Wave Toolkit Help" href="http://wave-toolkit.appspot.com/help" target="_blank">features</a> that are either lacking or a little tool that might aid your chatroom&#8230;err I mean collaborative-blue-sky-thinking&#8230;yeah.</p>
<p>To get a bot running you do need a Google App Engine account, which allowed me to explore this little world offered by Google. It&#8217;s cleverly done and nicely polished. Still think it&#8217;s just cleverly managed free-hosting though ;)</p>
<p>The capabilities of robots within the Google Wave extension API are pretty much exactly what a human participant can do: edit, post, delete and edit &#8216;<strong>blips</strong>&#8216;, create waves, see who&#8217;s participating and apparently manipulate playback. It&#8217;s very fun writing something that can do all this too; that wonderful satisfying feeling of achievement when you spam &#8220;hello world&#8221; to a wave&#8230;</p>
<p><strong>Wave Toolkit</strong>&#8217;s in constant development so it might be a little ropey, but please <strong>feel free to add wave-toolkit@appspot.com as a contact and invite it to a wave</strong>, and feel free to suggest new things, report bugs or even tell me you love it. ;)</p>
<p>So back to coding more lovely Python, and perhaps writing something useful for all the wavers out there. Right? ;)</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F10%2F17%2Fwave-toolkit-google-wave-extensions%2F';
  addthis_title  = 'Google+Wave+Extensions+%26%238211%3B+Wave+Toolkit';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/10/17/wave-toolkit-google-wave-extensions/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Learning Scala &#8211; first impressions</title>
		<link>http://blog.beplacid.net/2009/09/03/learning-scala-first-impressions/</link>
		<comments>http://blog.beplacid.net/2009/09/03/learning-scala-first-impressions/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 18:45:08 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick post]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jre]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=74</guid>
		<description><![CDATA[So every year I learn a new language. It&#8217;s fun, insightful and leaves me feelin&#8217; a fresh for new challenges in my new found religion.
This time round I&#8217;ve been learning Common LISP and now Scala. Being a Java programmer professionally it makes sense to try the latter. I love the idea of it being its [...]]]></description>
			<content:encoded><![CDATA[<p>So every year I learn a new language. It&#8217;s fun, insightful and leaves me feelin&#8217; a fresh for new challenges in my new found religion.</p>
<p>This time round I&#8217;ve been learning Common LISP and now Scala. Being a Java programmer professionally it makes sense to try the latter. I love the idea of it being its own language &#8211; for scripting as well as fully-fledged development &#8211; that can run inside the JVM (or if you&#8217;re evil, the .NET CLR).</p>
<p>First impressions are that it&#8217;s exciting to learn. I love its simplicity, and its productivity. One thing I do hate: the syntax of array indexes. I can&#8217;t for the life of me think why it&#8217;s a good idea. I like the [] syntax because it makes it explicit as to what you&#8217;re working with. Doing array(1) looks like a method call, not great. Sure I&#8217;ll find out soon enough as to why it&#8217;s done that way.</p>
<p>I wrote the following today whilst waiting for my Grilled Mackerel to finish soaking :)</p>
<p><code>#!/bin/sh<br />
exec scala $0 $@<br />
!#<br />
args.foreach(arg =&gt; for (c &lt;- arg) println(c))</code></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F09%2F03%2Flearning-scala-first-impressions%2F';
  addthis_title  = 'Learning+Scala+%26%238211%3B+first+impressions';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/09/03/learning-scala-first-impressions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Joy of Spotify</title>
		<link>http://blog.beplacid.net/2009/06/27/the-joy-of-spotify/</link>
		<comments>http://blog.beplacid.net/2009/06/27/the-joy-of-spotify/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 14:06:08 +0000</pubDate>
		<dc:creator>atc</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NoNeedForWindows]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://blog.beplacid.net/?p=73</guid>
		<description><![CDATA[When it comes to music distribution, we&#8217;re in slightly controversial times. You&#8217;re deemed a criminal if you copy your CD to your PC or portable media device so you can listen on the train. You&#8217;re &#8212; rightly or wrongly &#8212; breaking the law when you download your favourite track from the various distribution methods such [...]]]></description>
			<content:encoded><![CDATA[<p>When it comes to music distribution, we&#8217;re in slightly controversial times. You&#8217;re deemed a criminal if you copy your CD to your PC or portable media device so you can listen on the train. You&#8217;re &#8212; rightly or wrongly &#8212; breaking the law when you download your favourite track from the various distribution methods such as Bit Torrent et al.</p>
<p>Various efforts have come about attempting to cash in on this phenomenon; Last.fm to Napster, they&#8217;ve all got their merits. Somewhat under the radar is Spotify, an iTunes-esque attempt at bridging the gap between the stubborn fat-cats running the music industry and the slick distribution medium that is the internet. Spotify has some great features, from playlists to quick but advanced search (which includes a command-like interface such as &#8216;genre:blues&#8217;). Spotify also <a title="Running Spotify under wine [new window]" href="http://www.spotify.com/en/help/faq/wine/" target="_blank">runs very well under Wine</a> non-natively; it&#8217;s completely free (ad-supported) and doesn&#8217;t seem to waste too much bandwidth.</p>
<p>Spotify is split into free and premium services. The former having audio ads every 50 or so minutes and banner ads throughout the GUI, the latter having no ads and higher-quality music.</p>
<p>It&#8217;s different to alternatives like Last.Fm. Spotify doesn&#8217;t run with the idea of suggesting music for you. You put in an artist and it&#8217;ll list all it has. It&#8217;s up to you to build your own playlists. Without knowing the advanced search feature like &#8216;genre:blues&#8217; you might get frustrated, but I&#8217;ve found that the freedom to build my own playlists leaves me with the music I love, and not the tripe that Last.fm thinks I&#8217;ll like (nor it&#8217;s crappy &#8216;loved tracks&#8217; idea).</p>
<p>A feature I&#8217;d love to have is the ability to purchase the playlists as CDs; that is, I click &#8216;burn to CD&#8217; and Spotify mails me a burnt copy of my playlists. Bit of a nice to have, though :)</p>
<p>Check <a title="Spotify [new window]" href="http://www.spotify.com" target="_self">Spotify</a> out. Well worth it, in my most humble opinion.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.beplacid.net%2F2009%2F06%2F27%2Fthe-joy-of-spotify%2F';
  addthis_title  = 'The+Joy+of+Spotify';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.beplacid.net/2009/06/27/the-joy-of-spotify/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
