<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Once and Only Once : Category Software dev</title>
    <link>http://www.tarbard.co.uk/articles/category/software-dev</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Darren Tarbard's ramblings</description>
    <item>
      <title>I released an android game!</title>
      <description>Thought i'd have a stab so here's my initial offering

https://market.android.com/details?id=uk.co.tarbard.thrills</description>
      <pubDate>Fri, 06 Jan 2012 23:41:44 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:5f10d9e4-6921-4a62-a121-d8af4731af38</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2012/01/06/i-released-an-android-game</link>
      <category>Games</category>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>Eureka moment</title>
      <description>It seems difficult to align what you want to do for a living with what you can practically. I've realised what I've always wanted to do is write computer games, that's in fact the reason I got into software development in the first place. &lt;p /&gt;The rise of  digital distribution makes it more achievable to start very small as a sideline with relatively little overhead or risk. I love it when a plan comes together.</description>
      <pubDate>Thu, 29 Oct 2009 00:50:51 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:27ca5541-fc12-473e-8164-ad886e07fe39</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2009/10/29/eureka-moment</link>
      <category>Games</category>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>Accessing constants in JSF</title>
      <description>

&lt;pre&gt;

marker interface:

package uk.co.tarbard.wfd;

public interface BackingPage {

}

custom property resolver:

package uk.co.tarbard.wfd;

import java.lang.reflect.Field;

import javax.faces.el.EvaluationException;
import javax.faces.el.PropertyNotFoundException;
import javax.faces.el.PropertyResolver;

public class ConstantPropertyResolver extends PropertyResolver {

	private PropertyResolver original;

	public ConstantPropertyResolver(PropertyResolver original) {
		this.original = original;
	}

	@Override
	public Class getType(Object arg0, int arg1) throws EvaluationException,
			PropertyNotFoundException {

		return original.getType(arg0, arg1);
	}

	@Override
	public Class getType(Object arg0, Object arg1) throws EvaluationException,
			PropertyNotFoundException {

		return original.getType(arg0, arg1);
	}

	@Override
	public Object getValue(Object arg0, int arg1) throws EvaluationException,
			PropertyNotFoundException {
		return original.getValue(arg0, arg1);
	}

	@Override
	public Object getValue(Object base, Object property)
			throws EvaluationException, PropertyNotFoundException {
		Object value = null;
		try {
			value = original.getValue(base, property);

		} catch (PropertyNotFoundException e) {

		}

		if (null != value) {
			return value;
		}
		if (null == base) {
			return null;
		}
		if (base instanceof BackingPage) {
			Field[] declaredFields = base.getClass().getDeclaredFields();
			for (int i = 0; i &lt; declaredFields.length; i++) {
				Field x = declaredFields[i];
				Object constantValue = null;
				if (property.equals(x.getName())){
					try {
						constantValue =  x.get(x);
					} catch (IllegalArgumentException e) {
						throw new PropertyNotFoundException("unable to access property " + property) ;
					} catch (IllegalAccessException e) {
						throw new PropertyNotFoundException("unable to access property " + property + " check that it is public") ;
					}
					return constantValue;
				}
				
			}
			throw new PropertyNotFoundException("unable to locate constant with name " + property + " perhaps you made a typo.");
		}

		return null;

	}

	@Override
	public boolean isReadOnly(Object arg0, int arg1)
			throws EvaluationException, PropertyNotFoundException {
		return original.isReadOnly(arg0, arg1);
	}

	@Override
	public boolean isReadOnly(Object arg0, Object arg1)
			throws EvaluationException, PropertyNotFoundException {
		return original.isReadOnly(arg0, arg1);
	}

	@Override
	public void setValue(Object arg0, int arg1, Object arg2)
			throws EvaluationException, PropertyNotFoundException {
		original.setValue(arg0, arg1, arg2);
	}

	@Override
	public void setValue(Object arg0, Object arg1, Object arg2)
			throws EvaluationException, PropertyNotFoundException {
		original.setValue(arg0, arg1, arg2);
	}

}

&lt;/pre&gt;
</description>
      <pubDate>Fri, 28 Aug 2009 00:11:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:150d3b00-7086-4b3f-9022-3bd281b8448c</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2009/08/28/accessing-constants-in-jsf</link>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>Feeling constrained.</title>
      <description>Despite Android being much more open than iPhone there is still a lot of "Sorry, you can't do this. " and "it is not possible" on the android developer group.</description>
      <pubDate>Fri, 07 Aug 2009 21:02:02 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:a5605279-f5f4-44f7-928c-18bc69e32213</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2009/08/07/feeling-constrained</link>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>Mylyn Xplanner connector, now with context</title>
      <description>I've installed &lt;a href="http://www.xplanner.org/"&gt;XPlanner &lt;/a&gt; again at work recently and even started using it for my own projects. It's a nice structured way of keeping track of work but it's even nicer combined with &lt;a href="http://www.eclipse.org/mylyn/"&gt;Mylyn&lt;/a&gt; thanks to the people who developed the XPlanner connector for it.  One of the useful features of Mylyn wasn't there though &lt;a href=https://bugs.eclipse.org/bugs/show_bug.cgi?id=243645&gt;until now &lt;/a&gt;
- the ability to &lt;a href="http://www.podtech.net/home/3514/europa-mylyn-demo-task-management-and-context-filtering-for-teams"&gt;share contexts&lt;/a&gt; with  others (or your future self).</description>
      <pubDate>Tue, 16 Jun 2009 20:29:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:1ab3e8cb-59b7-4848-aefc-7c7bb8f28cb4</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2009/06/16/mylyn-xplanner-connector-now-with-context</link>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>view subversion commits on a timeline</title>
      <description>Here's something I wrote a while ago and never got round to finding hosting for.   
&lt;a href="http://code.google.com/p/svnreporter/"&gt;view subversion commits on a javascript timeline.&lt;/a&gt;&lt;p/&gt;</description>
      <pubDate>Sun, 05 Apr 2009 11:53:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:bcb170a6-75a0-4432-91a9-ebdc481e234f</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2009/04/05/view-subversion-commits-on-a-timeline</link>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>My Opinion of Broadvision</title>
      <description>A while ago I had the misfortune of working with a product called BroadVision that was sold to the IT Director. Information on the internet about it was pretty sparse so we knew nothing about how it actually worked until we recieved the discs, I vowed to contribute back to the internet to give my own personal opinion of it sometime, I forgot until I was reminded today by looking at some BPM diagrams.You should do your own research if you are likely to be interested in buying any of it, but beware a company that doesn't want your developers to see their framework until you've signed a contract.&lt;p/&gt;&lt;p/&gt;

It was a sign of things to come that they had sent us discs for the wrong OS so we had to wait even longer for the correct ones to arrive.  It was a stack of open source products together (The editor was based on Eclipse, but an oldish version!) with the work they had done in a kind of BPM type of way. From what I could tell from the internet and one of their consultants Broadvision started out as some kind of TV/internet concept but it didn't do that well so they reused code for the new model of selling self service e-commerce apps. If you use it and you wonder why some of the naming is a bit odd ("channels" for example) that's why! &lt;p/&gt;&lt;p/&gt;

We had no end of problems, it was buggy and i'm not even sure it was finished (you had to write a custom java class to be able to persist a checkbox as a boolean!).  It was sold to the IT Director with tales of how you can just draw these flow charts connect up the boxes, click a button and your application is done. From the start we needed the consultants for practically everything even during our supposed training course - at one point something wasn't working and we couldn't figure out why. He couldn't figure out why either. Eventually he decompiled a class (which we weren't allowed to do) and discovered a catch block swallowing the Exception.... I asked the consultant (his desktop wallpaper was his red sports car in front of his nice house) how often he expected we'd need to have a consultant come visit and he said something like "2 days every fortnight", a cost my company had never expected - this was supposed to be a system that almost didn't need developers!  We also found that we would have to buy more modules than we expected to just be able to do a fairly simple shopping cart.&lt;p/&gt;&lt;p/&gt;

I will spare you the rest of the messy tale but lets just say it got much worse and dragged out for a few months. They never did fix the checkbox bug I raised a ticket for, and then we were back to normal java - ahhhh.&lt;p/&gt;&lt;p/&gt;


They may have totally changed, their website looks different now - but despite it saying "View demos and download free software" under the "Attention Developers!" banner I couldn't find anything to download except marketing media that seems to still be claiming that you much less developer resource.&lt;p/&gt;&lt;p/&gt;</description>
      <pubDate>Fri, 05 Sep 2008 18:02:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:fb9e5c20-0c8c-4eeb-b22c-2b8cfb4d3895</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2008/09/05/my-opinion-of-broadvision</link>
      <category>software</category>
      <category>Software dev</category>
    </item>
    <item>
      <title>Would be a cool game :-)</title>
      <description>Am I the only one who thought &lt;a href="http://www.vimeo.com/1081680"&gt;this&lt;/a&gt; would be even cooler if the dots were sheilds/bullets and the developer was a ship - like a 2D shoot em up :-)</description>
      <pubDate>Mon, 16 Jun 2008 20:33:05 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:8dac780f-dcd4-4180-943b-7d81ec7e7958</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2008/06/16/would-be-a-cool-game</link>
      <category>Software dev</category>
    </item>
    <item>
      <title>Exposing MythTVs telnet control over HTTP</title>
      <description>I've been setting up remote controls on mythtv recently but one of them is a bit old and clunky. It occurred to me that it would be nice to use my smartphone to control mythtv instead.  I found an existing app for smartphones but installing the .net libraries onto my phone and compiling a C program for the server too seemed a little too much when I don't even have activesync installed.  What I do have on my phone already though is a web browser. &lt;p/&gt;
I wrote this ruby script to create a web interface, it generates a page and translates the links into telnet commands that are passed to mythtv.&lt;p /&gt;  Because it simply translates the urls you can use pretty much any of the mythtv telnet commands by just inserting a slash where there would normally be a space.  It's been a nice application of Ruby, it was quick to write (in fact an attempt at KISS) and is self contained apart from needing Ruby of course.
&lt;p /&gt;
&lt;p /&gt;

&lt;a href="http://www.tarbard.co.uk/files/mythcontrol.rb"&gt;mythcontrol.rb&lt;/a&gt;
&lt;p /&gt;
&lt;p /&gt;

Change 192.168.1.6 to the ip address of the frontend you want to control&lt;p /&gt;
run by typing mythcontrol.rb&lt;p /&gt;
&lt;p /&gt;
point your browser at :&lt;p /&gt;
http://127.0.0.1/&lt;p /&gt;
&lt;p /&gt;
You can do everything you need with the buttons i've exposed but all you need to do to add/change them is change the URLs in the code - check out mythtvs docs for a list of possible commands&lt;p /&gt;&lt;p /&gt;

&lt;a href="http://www.mythtv.org/wiki/index.php/Telnet_socket"&gt;http://www.mythtv.org/wiki/index.php/Telnet_socket&lt;/a&gt;&lt;p /&gt;&lt;p /&gt;



</description>
      <pubDate>Tue, 13 May 2008 18:52:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:3e4e09e0-2ea3-4343-b75e-6e2d3bea77e1</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2008/05/13/exposing-mythtvs-telnet-control-over-http</link>
      <category>Software dev</category>
    </item>
    <item>
      <title>A nice piece of nerdy art</title>
      <description>&lt;a href="http://blog.whatfettle.com/2007/10/31/the_web_is_agreement/"&gt;The web is agreement&lt;/a&gt;&lt;p /&gt; Except, presumably, web based forums :-)</description>
      <pubDate>Thu, 01 Nov 2007 15:04:59 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:e6265f37-6986-41b8-a734-0149d870e55e</guid>
      <author>Daz</author>
      <link>http://www.tarbard.co.uk/articles/2007/11/01/a-nice-piece-of-nerdy-art</link>
      <category>Software dev</category>
    </item>
  </channel>
</rss>

