<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
	<channel>
<title>Wired Up And Fired Up Blog</title><link>http://wiredupandfiredup.co.uk/index.html</link><description>News and Stuff</description><dc:language>en</dc:language><dc:creator>richy@wiredupandfiredup.com</dc:creator><dc:rights>Copyright 2006 Wired Up And Fired Up Ltd</dc:rights><dc:date>2008-02-27T15:47:26+01:00</dc:date><admin:generatorAgent rdf:resource="http://www.realmacsoftware.com/" />
<admin:errorReportsTo rdf:resource="mailto:richy@wiredupandfiredup.com" /><sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
<lastBuildDate>Wed, 27 Feb 2008 15:50:20 +0100</lastBuildDate><item><title>301 Redirect</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2008-02-27T15:47:26+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/d8330c6a350456ee14db9bca11615585-57.html#unique-entry-id-57</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/d8330c6a350456ee14db9bca11615585-57.html#unique-entry-id-57</guid><content:encoded><![CDATA[For reasons that'll be explained when you get there, the blog has moved to <a href="http://wiredupandfiredup.blogspot.com/" rel="self">http://wiredupandfiredup.blogspot.com/</a>  These posts will stay here like and the permanent urls will continue to work, if you're subscribing to the feed you'll need to re-subscribe to the new one.  Sorry for any inconvenience, but I seriously believe it will make for a much, much better blog.  Thanks!]]></content:encoded></item><item><title>Leopard Support</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2007-11-08T09:13:25+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/56a71b955377bd0a5ee06884344c26c0-56.html#unique-entry-id-56</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/56a71b955377bd0a5ee06884344c26c0-56.html#unique-entry-id-56</guid><content:encoded><![CDATA[There was a slight issue with Relaunch 1.3.8 and Leopard, this has been fixed and if you automatic updates set to on you should already have the fix.  If you don't, you can <a href="http://web.mac.com/richyrichracing/iWeb/WiredUpAndFiredUp/Relaunch_1.3.9.dmg" rel="self">download the latest version 1.3.9</a> which will bring you crashing and banging into the world of Leopard.<br /><br /><a href="../products/cornerweight.html" rel="self" title="CornerWeight">CornerWeight</a> and <a href="http://noodleboard.com" rel="self">Noodleboard</a>, being widgets will both work in Leopard.   And <a href="../Ninjar/index.html" rel="self" title="Ninjar">Ninjar</a>, our ever popular spotlight .jar file importer has been tested to work against the Lep.<br /><br />]]></content:encoded></item><item><title>Woah&#x21; </title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2007-10-08T15:39:19+02:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/90ac7938fbbbe537fbf3ad87fb9119fe-55.html#unique-entry-id-55</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/90ac7938fbbbe537fbf3ad87fb9119fe-55.html#unique-entry-id-55</guid><content:encoded><![CDATA[It's been months since I last did a post, needless to say things have been a little busy.   Firstly, I finally made it over to France so it's farewell cheerless marshes and bonjour Europe.  I've spent the last little while (er, six months) settling in and working on a couple of ongoing contracts, things are going well and I've pretty much sorted out everything that I needed to sort out (banks/utilities/taxes/welfare etc.) so I'm back at the coal face cutting Cocoa code once more (and updating this site).<br /><br />Today though, I'd like to talk about <a href="../products/cornerweight.html" rel="self" title="CornerWeight">CornerWeight</a>, the free and handy car weight calculator.  On the suggestion of one of it's users, John Thawley I've updated it and added a cross weight calculation.  Now, the cross weight calculation is right hand drive oriented, which means that if you want it the other way you need to subtract the figure from 100.  The new 'facelift' widget looks like this, I hope that you find it an improvement.<br /><br /><center><a href="http://homepage.mac.com/richyrichracing/wufu/CornerWeight.wdgt.zip" rel="self" title="Download Now">Click here to download and install CornerWeight</a><br /><br /><img class="imageStyle" alt="Picture 1" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry55_1.png"width="235" height="261"/><br /></center><br /><br />I have a few planned updates to the remainder of the existing products and two new products in the pipeline, so stay tuned...<br />]]></content:encoded></item><item><title>The oddest prime</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2007-04-27T09:18:03+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/a7b4e1396de6e38ca36e1d3ec86a1091-54.html#unique-entry-id-54</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/a7b4e1396de6e38ca36e1d3ec86a1091-54.html#unique-entry-id-54</guid><content:encoded><![CDATA[Hot on the heels of the <a href="http://blog.soapyfrog.com/2007/04/23/oooh-its-also/" rel="self" title="Spectrum is 25">25th anniversary of the ZX Spectrum</a> I'm pleased to announce that Wired Up and Fired Up are two years old.  <br /><br />I'd like to thank all our clients and customers past and present for their support.  <br /><br />Over the next couple of days I'll try to blog about what's happened in the past couple of years and anything I may have learned along the way...]]></content:encoded></item><item><title>Tumblelogs</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Blogging</category><dc:date>2007-04-16T18:49:22+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/ff3fccb7c8cd16a4c63ce0e165a9d409-53.html#unique-entry-id-53</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/ff3fccb7c8cd16a4c63ce0e165a9d409-53.html#unique-entry-id-53</guid><content:encoded><![CDATA[As you may have noticed, I've added tumblelog to the top of this page.  For those of you who've not seen <a href="http://tumblr.com" rel="self" title="tumblr - like blogs with less fuss">tumblr</a> it is, in essence, a lightweight blogging tool.  I'm planning on using it to highlight things of interest that pop up during the day but I don't have time to look at or write about and also things I think people will find interesting or amusing but that don't really belong on here or require no further comment (after all there's a very high editorial standard to maintain :)<br /><br />Hope you like it.]]></content:encoded></item><item><title>5 reasons why Wired Up And Fired Up develop for (and on) Macs</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2007-04-14T10:01:45+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/5_reasons_why_Wired_Up_And_Fired_Up_develop_for_(and_on)_Macs.html#unique-entry-id-51</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/5_reasons_why_Wired_Up_And_Fired_Up_develop_for_(and_on)_Macs.html#unique-entry-id-51</guid><content:encoded><![CDATA[There's been a couple <a href="http://theappleblog.com/2007/04/09/why-do-software-companies-support-the-mac" rel="self" title="The Apple Blog">of</a> <a href="http://fastforwardsw.com/people/jcblog/?p=40" rel="self" title="Joshua Coventry's blog">posts</a> recently about why software companies support the mac and I thought I'd throw my hat into the ring and try to explain why Wired Up and Fired Up are so mac-centric.<br /><br /><strong>1) Macs are my tool of choice.  </strong> As well as building <a href="../index.html" rel="self" title="Products">Macintosh applications</a> I do a lot of Java development and without a doubt Macs are the best platform for this work. I've occasionally had to work on client sites which give their developers Windows machines and it's really, really painful.  <br />My main gripes with Windows (aside from usability issues) are related to things that any operating system should be able to do out of the box but windows can't, such as - SSH onto a server, find text in files (the dog doesn't work, I have tested it thoroughly, many, many times), cope with spaces in directory names and so on. <br />I simply can't imagine why anyone, given the choice, wouldn't use OS X which does all of these things and more whilst maintaining a friendly, easy to use attitude. <br />The only downside to using Macs for a Java dev is that the bleeding edge Java builds aren't always available.   For example, Java 6 probably won't be around until Leopard which won't be around until October now.  I've personally never found this a problem as I'm yet to find a client who is that up to date either (most banks round here are still thinking about whether Java 5 is a good idea or not). If I did, I'd run up some linux distro or other in VMWare or parallels and compile my code in there.<br /><br /><strong>2) The developer community is, quite simply awesome.</strong>  The majority of <a href="http://www.cocoablogs.com/" rel="self" title="Cocoa Blogs">Mac developers have blogs</a> and the majority of them are excellent at imparting information.  There are also mailing lists, IRC channels and a veritable cornucopia of information available to help you get started irrespective of your abilities, choice of language or framework.  Sometimes there's almost too much information, but fear not because almost all of it is good and I'm yet to come across anyone not willing to point you in the right direction if you ask nicely. <br /><br /><strong>3) The user community is, quite simply awesome as well.  </strong> As a  consultant and I get to speak to a lot of clients and as an independent software developer I get to speak to a lot of customers and I can't think of  a bad thing to say about any of them :)  I get loads of feedback on all my apps - not all of it is positive but all of it is useful and it all gets fed back into making my current (and future) application portfolio better.   I am also constantly amazed at how many contributions I get back from the user community; extra scripts for Relaunch, offers of localization help.  It's almost as if everyone cares about making the OS X experience better for each other, which is, like, totally egalitarian and nice. Awww.<br /><br /><strong>4) The development tools are not only free but excellent to boot.</strong>   I know that XCode has it's foibles, but really they're not that bad.  The <a href="http://developer.apple.com/tools/performance/" rel="self" title="Computer Hardware Undersanding Development Tools">CHUD tools</a> are, again, invaluable and virtually anything that you cannot get for free from Apple you can get for free (or near as dammit) somewhere else.  Compared to the Java IDE's I use (Eclipse/IDEA/NetBeans) I think the Apple Developer tools stack up really well and compared to buying an MSDN Subscription there's no contest - plus you don't have to learn C# (a language so complete it doesn't even have a Set in it's collections API)<br /><br /><strong>5) Oh, right, did I mention the hardware?</strong>  It's gorgeous (and reasonably reliable).  In the bad old days I used to have a Toshiba Tecra running <a href="http://www.freebsd.org/" rel="self" title="I still miss FreeBSD a bit, sometimes..">FreeBSD</a>, I thought it was pretty cool at the time, it wasn't. It was horrible.  It's still in the loft and occasionally when I go up there I look at it and shudder...<br />With regards to reliability I find Macs a bit like car engines, you either get a good one or you get a duffer.  As a general rule of thumb, if it works when you take it out the box it'll probably be ok for quite a few years.  I've still got an old iBook G3 kicking around, I had to replace the disk after about 4 years but it was constantly on and constantly in use (it still is, just for web browsing and other light duties).  I quite often buy hardware from the Apple Refurb Store, I'm not sure I'm willing to recommend this approach, but over the years I've never had a problem with anything I've purchased this way - I like to think that it's better somehow, as it's had individual attention.<br /><br />Those then, are my main reasons for developing for, supporting and using Macintosh computers and so far it's been a good relationship. I'd like to think that it will continue to be so.]]></content:encoded></item><item><title>Lo-fi Command Line Timesheets</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Unix</category><dc:date>2007-04-12T17:37:28+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/Lo-fi_Command_Line_Timesheets.html#unique-entry-id-50</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/Lo-fi_Command_Line_Timesheets.html#unique-entry-id-50</guid><content:encoded><![CDATA[I am an avid user of the <a href="http://todotxt.com/" rel="self" title="Todo.txt task list script">Todo.txt</a> command line task list script and have been using it a lot recently <a href="files/the_wrong_decision.html" rel="self" title="Blog:The wrong decision.">since I went all freelance</a>.<br /><br />In the same vein I've been looking for something that could keep track of my time-sheets for me. Now, I know there are some <a href="http://clickablebliss.com/billable" rel="self" title="Billable: Simple service and invoice tracking ...">excellent apps</a> out there already that do this, but I wanted something an order of magnitude simpler.  In fact, all I needed to do was keep track of which days I had worked for a particular client.<br /><br />So I came up with <span style="font:12px Courier, mono; ">timesheet.sh</span>, it's a simple script that you run from a unix command line. It creates a text file named after the current month (if there isn't one already) and in the text file you'll see the month's calendar courtesy of the tool 'cal' - the current day will be replaced by a couple of # symbols (marking it as 'worked').<br /><br />All that I need to do every day when I'm doing work for this particular client is remember to type <span style="font:12px Courier, mono; ">./timesheet.sh</span> in the terminal and the text file gets updated.   When it comes to a new month the script simply creates a new file and carries on as if nothing had happened.<br /><br />Here's how the file <span style="font:12px Courier, mono; ">April</span> currently looks for me...<br /><br /><img class="imageStyle" alt="Picture 1" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry50_1.png"width="136" height="92"/><br /><br />I also added the ability to mark holidays (HH) and sick days (SS), you can see here that Good Friday and Easter Bank Holiday Monday are marked as holidays.  <br /><br />To do this you can just do <span style="font:12px Courier, mono; ">./timesheet.sh holiday</span> or <span style="font:12px Courier, mono; ">./timesheet.sh sick</span><br /><br />Of course, if you're not around to do this you can retrospectively do it in your fave text editor (which is probably called vi ;)<br /><br />I'm not sure if this is of any use to anyone, but I thought I'd throw it out there and see.  I had planned to extend it, but it does what I want for now so I haven't... If you do come up with any cool new ways of using it please let me know :)<br /><br />Some things it could easily be modified to do include; tracking multiple clients (either using different file names or a directory structure), adding extra symbols for different events (including possibly, hours worked), counting up the number of days worked per week and over the month and perhaps even generating a .txt invoice (how cool, er, I mean retro, would that be?).<br /><br />Anyway, the script is available for download below, remember you'll probably need to make it executable before you can run it.<br /><br /><span style="font-size:13px; font-weight:bold; "><a href="assets/timesheet.sh" rel="self" title="timesheet.sh - simple unix timesheet script">Download timesheet.sh</a></span><br />  ]]></content:encoded></item><item><title>Minimalist NoodleBoard</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2007-04-03T15:04:11+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/05779f9b04e64972c6eade2cc8080a33-49.html#unique-entry-id-49</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/05779f9b04e64972c6eade2cc8080a33-49.html#unique-entry-id-49</guid><content:encoded><![CDATA[Many thanks to Ian Dean who has sent me a cut down version of the <a href="http://www.noodleboard.com" rel="self" title="NoodleBoard - Collaboration Widget">NoodleBoard</a> widget.<br /><br />He writes:<br /><br /><em>"The Dashboard as an idea is already messy so I have tried to streamline the graphics slightly so it looks like a plain whiteboard. <br /></em><em>I am sending you the updated widget incase you find it useful."</em><br /><br /><img class="imageStyle" alt="Picture 1" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry49_1.png"width="326" height="262"/><br /><br />A copy of the widget he sent is <a href="assets/whiteboard.wdgt.zip" rel="self">available here (click to download)</a>.   <br /><br />If you've never used NoodleBoard before, you'll probably want to head on over to <a href="http://www.noodleboard.com" rel="self" title="Collaboration Widget">www.noodleboard.com</a> to find out more and set up an account.]]></content:encoded></item><item><title>The wrong decision.</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2007-03-21T16:29:46+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/the_wrong_decision.html#unique-entry-id-48</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/the_wrong_decision.html#unique-entry-id-48</guid><content:encoded><![CDATA[It's taken me a month to write this post. Not because I'm a particularly slow typist nor because I couldn't be bothered but because I've been very busy recently making some wrong decisions.<br /><br />Firstly, I have quit a very lucrative contract with an Investment Bank to concentrate on my freelance work and mac software development. <br /><br />Secondly, I've sold my house and it looks increasingly like (almost certain, in fact) that we're going to move to France.<br /><br />Wrong decisions are fantastics ones to make.  <br /><br />I know they're wrong decisions because when I tell people about them they look at me with a furrowed brow and they nod slowly and ask questions like - 'will you get a pension there?' and 'what if you can't find enough work?'<br /><br />To which I reply, 'I honestly have no idea.' and 'I'll just have to make sure I do.'<br /><br />There's really only one way to find out if this is really a wrong decision or not and I'd rather have a go than live with the regret of not knowing.]]></content:encoded></item><item><title>E-petitions considered pointless...</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2007-02-19T18:29:58+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/4c3e009765710449196ef3a3982b7151-47.html#unique-entry-id-47</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/4c3e009765710449196ef3a3982b7151-47.html#unique-entry-id-47</guid><content:encoded><![CDATA[<span style="font:12px Verdana, serif; color:#111111;"><br />The petition disputes the idea that ID cards will help reduce crime or terrorism. While I certainly accept that ID cards will not prevent all terrorist outrages or crime, I believe they will make an important contribution to making our borders more secure, countering fraud, and tackling international crime and terrorism. More importantly, this is also what our security services - who have the task of protecting this country - believe.<br />So I would like to explain why I think it would be foolish to ignore the opportunity to use biometrics such as fingerprints to secure our identities. I would also like to discuss some of the claims about costs - particularly the way the cost of an ID card is often inflated by including in estimates the cost of a biometric passport which, it seems certain, all those who want to travel abroad will soon need.<br />In contrast to these exaggerated figures, the real benefits for our country and its citizens from ID cards and the National Identity Register, which will contain less information on individuals than the data collected by the average store card, should be delivered for a cost of around &pound;3 a year over its ten-year life.<br />But first, it's important to set out why we need to do more to secure our identities and how I believe ID cards will help. We live in a world in which people, money and information are more mobile than ever before. Terrorists and international criminal gangs increasingly exploit this to move undetected across borders and to disappear within countries. Terrorists routinely use multiple identities - up to 50 at a time. Indeed this is an essential part of the way they operate and is specifically taught at Al-Qaeda training camps. One in four criminals also uses a false identity. ID cards which contain biometric recognition details and which are linked to a National Identity Register will make this much more difficult.<br />Secure identities will also help us counter the fast-growing problem of identity fraud. This already costs &pound;1.7 billion annually. There is no doubt that building yourself a new and false identity is all too easy at the moment. Forging an ID card and matching biometric record will be much harder.<br />I also believe that the National Identity Register will help police bring those guilty of serious crimes to justice. They will be able, for example, to compare the fingerprints found at the scene of some 900,000 unsolved crimes against the information held on the register. Another benefit from biometric technology will be to improve the flow of information between countries on the identity of offenders.<br />The National Identity Register will also help improve protection for the vulnerable, enabling more effective and quicker checks on those seeking to work, for example, with children. It should make it much more difficult, as has happened tragically in the past, for people to slip through the net.<br />Proper identity management and ID cards also have an important role to play in preventing illegal immigration and illegal working. The effectiveness on the new biometric technology is, in fact, already being seen. In trials using this technology on visa applications at just nine overseas posts, our officials have already uncovered 1,400 people trying illegally to get back into the UK.<br />Nor is Britain alone in believing that biometrics offer a massive opportunity to secure our identities. Firms across the world are already using fingerprint or iris recognition for their staff. France, Italy and Spain are among other European countries already planning to add biometrics to their ID cards. Over 50 countries across the world are developing biometric passports, and all EU countries are proposing to include fingerprint biometrics on their passports. The introduction in 2006 of British e-passports incorporating facial image biometrics has meant that British passport holders can continue to visit the United States without a visa. What the National Identity Scheme does is take this opportunity to ensure we maximise the benefits to the UK.<br />These then are the ways I believe ID cards can help cut crime and terrorism. I recognise that these arguments will not convince those who oppose a National Identity Scheme on civil liberty grounds. They will, I hope, be reassured by the strict safeguards now in place on the data held on the register and the right for each individual to check it. But I hope it might make those who believe ID cards will be ineffective reconsider their opposition.<br />If national ID cards do help us counter crime and terrorism, it is, of course, the law-abiding majority who will benefit and whose own liberties will be protected. This helps explain why, according to the recent authoritative Social Attitudes survey, the majority of people favour compulsory ID cards.<br />I am also convinced that there will also be other positive benefits. A national ID card system, for example, will prevent the need, as now, to take a whole range of documents to establish our identity. Over time, they will also help improve access to services.<br />The petition also talks about cost. It is true that individuals will have to pay a fee to meet the cost of their ID card in the same way, for example, as they now do for their passports. But I simply don't recognise most claims of the cost of ID cards. In many cases, these estimates deliberately exaggerate the cost of ID cards by adding in the cost of biometric passports. This is both unfair and inaccurate.<br />As I have said, it is clear that if we want to travel abroad, we will soon have no choice but to have a biometric passport. We estimate that the cost of biometric passports will account for 70% of the cost of the combined passports/id cards. The additional cost of the ID cards is expected to be less than &pound;30 or &pound;3 a year for their 10-year lifespan. Our aim is to ensure we also make the most of the benefits these biometric advances bring within our borders and in our everyday lives.<br />Yours sincerely,   Tony Blair</span>]]></content:encoded></item><item><title>On Ergonomic Keyboards</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2007-02-11T17:49:51+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/on_ergonomic_keyboards.html#unique-entry-id-46</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/on_ergonomic_keyboards.html#unique-entry-id-46</guid><content:encoded><![CDATA[Back at college in, oh I dunno, 1993 or so I was fortunate enough to share a flat with a Macintosh freak.  At the time I was using mostly the Sun Sparcs on the University campus for, erm, education and an old Atari-ST for music sequencing.<br /><br />I mostly used the Mac (a Quadra, I think) for playing SimCity and Maelstrom and general messing about trying to get the speech recognition working because that was way cool.  Oh, I think I wrote my final year thesis on it as well.  I guess I was a bit '<a href="http://en.wikipedia.org/wiki/Ellen_Feiss" rel="self">Ellen Fleiss</a>' about the whole thing and was just glad that it didn't 'like go beep, beep, beep at me' and I didn't have to rewrite it.<br /><br />One thing it did have that I've been idly keeping an eye out for ever since was a keyboard like this :<br /><br /><img class="imageStyle" alt="Picture 1" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry46_1.png"width="245" height="142"/><br /><br />I've never really been one for fancy, schmantzy ergonomic devices, preferring instead to numb the pain by typing harder and faster until I can't really feel my hands.  After all, have you ever noticed how, in any office environment it's always the guy or girl with all the 'ergo-gizmos' that is just the most annoying whinger?  You know the sort of person, they're the ones who are allergic to products with water in them?  Not wanting to complain I kept my chin up and headed on into the (carpal) tunnel of oblivion.<br /><br />Well, now it's 13 years or more since I left university and I've been a professional software developer for almost all of that.  I've been quite lucky really with the old aches and pains, but of late I've been hankering after that keyboard again, the one that (to my mind at least) made typing nice.  Then recently, I found this... <a href="http://www.keyovation.com/pc-63-2-goldtouch-apple-compatible-keyboard-white-usb.aspx" rel="self">The Key Ovation Gold Touch Apple Compatible Keyboard White USB </a>(snappy name, eh?)<br /><br /><img class="imageStyle" alt="Picture 2" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry46_2.png"width="300" height="122"/><br /><br />Look, it's almost the same thing!  I'm not sure why they propped it up for the photo, you'd have to have some serious problems to want to use it like that, but it's fully adjustable in both bend and splay (if that's what you call it) and is 99.9% the same experience as typing on the old Apple ergonomic keyboard.  In some respects it's better too - it has a proper escape key for a start (vi users take note).  It is also one of the few ergonomic keyboards on the market that comes with proper Apple keys, like Option and Propeller and it has all the eject, volume and power keys over to the left.<br /><br />It's lovely to type on as well, with proper clicky, clicky keys and none of the mushy softness that Apple keyboards seem to have acquired of late.  <br /><br />Oh, and the best thing about it? No freakin' number pad to get in the way.  I'm sure there's a good reason for putting number pads on keyboards, perhaps they're for people upgrading to computers from calculators or something, but really, when you're my age you really don't need to be made to stretch that extra few inches to reach your mouse...]]></content:encoded></item><item><title>TuxPuck 0.8.2 for OS X</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2007-01-29T21:29:29+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/TuxPuck_0.8.2_OS_X#unique-entry-id-45</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/TuxPuck_0.8.2_OS_X#unique-entry-id-45</guid><content:encoded><![CDATA[Today I'm releasing a little doohickey from the Open Source community.  I was looking for an up to date version of Shufflepuck Cafe, but failed miserably to find anything. <br />So, after a bit more hunting around I found TuxPuck for Linux, recompiled it on my PowerBook and bundled it up with the dependencies it needs to get running.  It's not really a finished or polished OS X game, by any means, but it's kind of cool and worked well enough to keep me amused for a while.<br /><br /><a href="../tux/tuxpuck.html" rel="self" title="TuxPuck">Download it from the product page.</a><br /><br />I hope you enjoy it :)<br /><br />postscript - It's PPC only for the time being, I didn't have the time to make a Universal Binary out of it. Although I imagine that it is very possible to do.  That said, it runs fine in Rosetta.  ]]></content:encoded></item><item><title>Relaunch 1.3.7 Released</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Relaunch</category><dc:date>2007-01-23T11:24:56+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/Relaunch_1.3.7_Released#unique-entry-id-44</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/Relaunch_1.3.7_Released#unique-entry-id-44</guid><content:encoded><![CDATA[This new version of Relaunch adds support for NoteBook from CircusPonies as well as making a best efforts attempt to remember the CWD of open Terminal sessions.<br /><br />Also, it's my birthday this week, so to celebrate I've temporarily dropped the price to $7.50 USD.  That's a saving of 25% off if you buy it now!<br /><br />Other enhancements include:<br /><br />Relaunch now only asks you once if you want to add it to the login items<br />The Preferences window focuses on open<br />A Serial Number box has been added to the preferences to allow you to re-register manually<br />Polish language support has been added<br /><br />If you're not an existing Relaunch customer you can <a href="http://web.mac.com/richyrichracing/iWeb/WiredUpAndFiredUp/Relaunch_1.3.7.dmg" rel="self">download it here</a>]]></content:encoded></item><item><title>Apropos of nothing...</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2007-01-17T21:04:24+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/f5200f0cbe17137d5bc48cd23f82152f-43.html#unique-entry-id-43</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/f5200f0cbe17137d5bc48cd23f82152f-43.html#unique-entry-id-43</guid><content:encoded><![CDATA[We've been playing with Windows PowerShell at a client site a little recently.  Largely, on my part, for amusement but also to see how 'the other half' do things.  It's an (almost) proper shell for Windows and it's not half bad, slow as Christmas, but not bad.  <br /><br />My ex-colleague Adrian, aka millinad has been doing a lot more with it than I could ever be bothered to so, if you're interested I suggest you <a href="http://ps1.soapyfrog.com/" rel="self">check out his blog about it</a>. <br /><br />We also knocked out a mostly functional <a href="http://ps1.soapyfrog.com/2007/01/02/space-invaders/" rel="self">Space Invaders clone</a>.  Hoo Hoo Ha! As Dr. Kawashima would say (repeatedly).<br /><br />My contribution to the world of computer science and powershellian advancement is a fully functional <a href="http://en.wikipedia.org/wiki/Brainfuck" rel="self">Brainf*ck</a> interpreter written in PowerShell.  For those of you who don't know brainf*ck is a minimalist programming language comprising of only 8 instructions. Yes, eight.  None the less it is Turing Complete and capable of computing any computable function of simulating any other computational model (just not very easily).<br /><br />Still, I found it an interesting exercise and  thought I'd share...<br /><br /><a href="assets/bf.ps1" rel="self">bf.ps1</a> - The PowerShell brainf*ck interpreter (thanks to <a href="http://www.prophecie.co.uk/" rel="self">Nik Crabtree</a> for speeding up the 'memory' initialization)<br /><a href="assets/add.bf" rel="self">add.bf </a>- Adds two single-digit integers together (so long as the result is < 9)<br /><a href="assets/triangle.bf" rel="self">triangle.bf </a>- Draws the Sierpinski triangle<br /><a href="assets/pi.bf" rel="self">pi.bf</a> - Calculates pi to 15 digits (if you can be bothered to wait, it took me 10 minutes to get to the 3!)<br /><br />Oh, right, and <a href="assets/helloworld.bf" rel="self">Hello World</a> which, for those of you who've yet to sample the delights of the language I've also printed below...<br /><br /><code>>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<++++++++>-]<-.--------.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.</code><br /><br />You can run the programs in PowerShell with : <code>./bf.ps1 add.bf</code><br /><br />Why am I writing about this?  I couldn't think of anything pithy to say about the iPhone other than that, yes, I want one.  And I had this kicking around for a rainy day and guess what - it's raining. <br />]]></content:encoded></item><item><title>Creating a sortable NSTableView in under five minutes.</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Cocoa</category><dc:date>2007-01-07T17:14:40+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/Creating_a_sortable_NSTableView_in_under_five_minutes.html#unique-entry-id-42</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/Creating_a_sortable_NSTableView_in_under_five_minutes.html#unique-entry-id-42</guid><content:encoded><![CDATA[<br />So, what we are going to build is a simple application that populates a table column with random numbers, the column will be sortable by clicking on the column header (default behavior for OS X).  The intention is to show how easily this can be achieved using Cocoa/Objective-C and not as an introduction to the Objective-C language or the Cocoa Frameworks.<br /><br />The first thing to do is create a new XCode Cocoa project.  So, in XCode we choose <strong>File</strong> from the menu, then <strong>New Project...</strong> and from the list pick '<strong>Cocoa Application</strong>'.   Give it a suitable name (e.g. Sort Columns).<br /><br />XCode will create most of the stuff we'll need to get going, in fact if you click on 'Build and Go' you'll see an empty window and the menu for your new application appear.  You should notice that it already has quite a bunch of functionality, try choosing <strong>Print</strong> from the <strong>File</strong> menu of your Application...<br /><br />Neat, eh?  Right, now lets get our hands dirty with some code - don't worry though there's, like, 20 lines of it.  <br /><br />We'll need to create a class that represents our data, in this case a number.  When it is created it will be populated by random and will have two methods; one to get the value of the number and one to change it.  These types of methods are commonly called accessors or mutators, as they allow you to access or change the data stored in a class. <br /><br />Create a class in XCode by chosing <strong>File</strong>-> <strong>New File...</strong> and then selecting <strong>Objective-C Class</strong> from the list of file types.  Call it TableThing.  <br /><br />You'll see XCode has created two files, <code>TableThing.h</code> the interface and <code>TableThing.m</code> the implementation.<br /><br />Change <code>TableThing.h</code> to read:<br /><span style="font:10px Verdana, Arial, Helvetica, sans-serif; "><br /></span><code>#import &lt;Cocoa/Cocoa.h&gt;<br/>#import &lt;Foundation/Foundation.h&gt;<br/><br/>@interface TableThing : NSObject {<br/>	float aNumber;<br/>}<br/><br/>-(float)aNumber;<br/>-(void)setANumber: (float)newNumber;<br/><br/>@end</p></blockquote><span style="font:10px Verdana, Arial, Helvetica, sans-serif; color:#760f50;"><br /></span>And <code>TableThing.m</code> to read:<br /><span style="font:10px Verdana, Arial, Helvetica, sans-serif; color:#760f50;"><br /></span><code>#import "TableThing.h"<br/><br/>@implementation TableThing<br/><br/>-(id)init{<br/> [super init];<br/> [self setANumber: (random() % 100) + 1];<br/> return self;<br/>}<br/><br/>-(float)aNumber;{<br/>	return aNumber;<br/>}<br/><br/>-(void)setANumber: (float)newNumber;{<br/>	aNumber = newNumber;<br/>}<br/><br/>-(void)dealloc{<br/>	[super dealloc];<br/>}<br/><br/>@end<br/></code><span style="font:10px Verdana, Arial, Helvetica, sans-serif; color:#760f50;"><br /></span>That's all the code we're going to write.  With the new properties shortcuts in Objective-C 2.0 even this will be reduced.  Next, we'll plumb in the UI, in your XCode project there will be a file called <strong>MainMenu.nib</strong>, double click it to open it in Interface Builder.<br /><br />Once in Interface Builder open the Window and add the following controls to it, an <strong>NSTableView</strong> and two <strong>NSButton </strong>instances.  (I also added a label for clarity.)<br /><br /><img class="imageStyle" alt="Picture 2" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry42_1.png"width="248" height="252"/><br /><br />Once your window looks something like this we can wire it all together.  The next thing to do is to drag an <strong>NSArrayController</strong>  into the <strong>MainMenu.nib</strong> window, as shown below.<br /><br /><img class="imageStyle" alt="Picture 3" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry42_2.png"width="356" height="242"/><br /><br />Now we'll need to set the <strong>NSArrayController</strong> up to actually control something, in our example it'll control an array of <strong>TableThing</strong> objects, so in order to set it up to do that we need to set the Class Name and Keys in the <strong>NSArrayController</strong>'s inspector.  To pull up the inspector select the controller and press Option-Shift and 'i', set the Class Name to <strong>TableThing</strong> and add a key for the <strong>aNumber</strong> property of the <strong>TableThing</strong> class as shown below.<br /><br /><img class="imageStyle" alt="Picture 4" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry42_3.png"width="485" height="552"/><br /><br />Ok, now we can wire in the buttons.  You can do this by ctrl-dragging from the button to the <strong>NSArray</strong> controller.<br /><br /><img class="imageStyle" alt="Picture 5" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry42_4.png"width="305" height="138"/><br /><br />Set the Target/Action for the 'new' button to '<code>insert</code>' and do the same for the 'remove' button but set it's target to '<code>remove</code>'.<br /><br />Next double click on the table column itself and pull up it's inspector (option-shift-i) and in the bindings pane set the value settings as below -<br /><br /><img class="imageStyle" alt="Picture 6" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry42_5.png"width="486" height="369"/><br /><br />There, nearly done.  Now there's just sorting to add, this is implemented in it's entirety in the Attributes pane of the <strong>NSTableColumn</strong> Inspector.<br /><br /><img class="imageStyle" alt="Picture 7" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry42_6.png"width="273" height="312"/><br /><br /><strong>That's it!</strong> Build and run the application, press 'new' a few times to fill up the table with random numbers and then sort them by clicking on the title bar of the column.   <br /><br />To get this working even more quickly, you can <a href="~/Dev/SiteAssets/SortColumns.zip" rel="self">download the source here.</a><br /><br />I hope this post demonstrates how easy it is to get going with Cocoa development and how much functionality you simply get 'For Free' using it. For the sake of brevity I deliberately wrote a lot on the 'how's and not much on the 'why's and 'what's of what we were doing, however, if this is something people are interested in I could quite happily write a few more in-depth tutorials.<br />]]></content:encoded></item><item><title>Uncle Mac takes a cup of cold cocoa?</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Cocoa</category><dc:date>2007-01-03T18:29:03+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/8b5c03da4c60d78b4d0859ec436dfcda-41.html#unique-entry-id-41</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/8b5c03da4c60d78b4d0859ec436dfcda-41.html#unique-entry-id-41</guid><content:encoded><![CDATA[Someone emailed me a link to this blog post today.<br /><br /><a href="http://www.regdeveloper.co.uk/2006/12/29/grumpy_old_man_on_cocoa/" rel="self">http://www.regdeveloper.co.uk/2006/12/29/grumpy_old_man_on_cocoa/</a><br /><br />Now, before I start. Fair play to the guy, he's obviously new to Mac development (so welcome) and he's trying to write something and I can't knock him for that.<br /><br />What I am somewhat nonplussed about is that he's decided to write a fairly damning blog post about the Cocoa frameworks and the XCode tools without really appearing to have taken the trouble to understand some of the basics.<br /><br />So, in the hope that he (or you) finds some of this useful, I'd like to address some of his criticisms and comments.<br /><br />Firstly, he starts by stating that <em>"Cocoa objects don&rsquo;t actually have properties"</em> but then, somewhat confusingly adds, <em>"Of course, we Delphi and C# developers understand that a property is usually just syntactic sugar-coating around a method call, right?"  </em><br /><br />Ok, I can see where you're coming from, us Java/Objective C developers also understand that. The 'syntatcic sugar coating' as he puts it is coming in Objective C 2.0, but really it's not an issue (at least for me).  Follow the same rules as you would for any other language (including C#) i.e. writing getters and setters and you'll be ok and you'll also get the many 'for free' benefits of <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/BasicPrinciples.html" rel="self">Key-Value Coding</a>. <br /><br />One such benefit is the ability to use<a href="http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/WhatAreBindings.html" rel="self"> Cocoa Bindings</a>.  I suspect that the author wasn't aware of Bindings (despite <em>"[reading] three Cocoa programming books"</em>). But really, using them would have solved a lot of his problems (writing array controllers, sorting columns in a table) <br />Plus, using Bindings you get a load of doohickeys that you can tick in the Inspector which look a whole lot like those things he was just moaning that there weren't any of (I won't call them properties, but I'm thinking of tick boxes with descriptions like 'Allows Editing Multiple Values' and so on).<br /><br /><em>"Imagine being able to drop a pushbutton control onto a form, double-click it and &ndash; bang! &ndash; there you are in the code editor, with an insertion caret inside your event handler."</em> Nooooooo! I can imagine this.  I've seen it, in Visual Basic and C#.  I've also seen 'event handlers' performing most of the application logic.  <br />Don't like it. <br />Imagine instead, a proper OO approach where you can assign selectors dynamically at runtime, use delegates to modify the behavior of the UI, send messages to any object willing to listen to them and retain the context of where they've come from.  Like it or not, the UI is kind of separate from the rest of your code if you're using the Model, View, Controller pattern which is kind of enforced by the Cocoa approach (as well as other frameworks such as Rails) and is generally considered a good thing&trade;<br /><br />The other good thing&trade; about it is that, as sometimes happens, I can send just a .NIB file away to be localized or redesigned. <br /><br />But seriously, if the VB.net/C# code/form designers are so good why are they all being replaced with WPF?  Come on, they suck, really.   <br />Oh, and <a href="http://ps1.soapyfrog.com/links/index.html" rel="self">I'm no Microsoft Hater</a> :) <br /><br /><em>"But I really think that if the average Cocoa programmer spent some time with Delphi, s/he&rsquo;d be totally blown away" </em> I've spent some time with a Delphi developer, does that count?]]></content:encoded></item><item><title>Testing xml-rpc with AppleScript</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>AppleScript</category><dc:date>2006-12-17T19:10:49+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/39ef811cb36ff908e3a8ec8405526e74-40.html#unique-entry-id-40</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/39ef811cb36ff908e3a8ec8405526e74-40.html#unique-entry-id-40</guid><content:encoded><![CDATA[Recently I was debugging an xml-rpc web service in a Java application.  It wasn't a particularly onerous task, but the compile/deploy/test loop was taking it's time and, well, I was getting bored so I decided to see if I could knock together a quick and simple test application in a scripting language.   I briefly looked at Perl and Python to see what would be involved and it looked simple enough, but I'm kind of a Mac fanboy and I wondered how hard it would be to do what I wanted in AppleScript.<br /><br />I didn't wonder for long, AppleScript turned out to be ideal for this kind of thing due to the Apple Event Manager having built in support for both xml-rpc and Soap messages (so much so that they could almost be considered first class constructs in the language).  Well, I never...<br /><br />I looked around for a public xml-rpc server to write some example code for the blog with and the most <a href="http://www.perl.com/pub/a/2001/04/24/soap.html" rel="self">commonly</a> <a href="http://www.ditchnet.org/wp/2005/07/" rel="self">used</a> <a href="http://discuss.develop.com/archives/wa.exe?A2=ind0006&L=soap&T=0&P=57880" rel="self">one</a> seems to be <span style="font:12px Verdana, serif; "><a href="http://superhonker.userland.com" rel="self">http://superhonker.userland.com</a></span><span style="font:12px Verdana, serif; "> - it's also quite a neat server as it accepts both xml-rpc and Soap.  So, without further ado onto the code...<br /><br />Calling an xml-rpc service from Applescript.<br /><br /></span><span style="font:12px Verdana, serif; font-weight:bold; color:#0000ff;">tell</span><span style="font:12px Verdana, serif; "> </span><span style="font:12px Verdana, serif; color:#0000ff;">application</span><span style="font:12px Verdana, serif; "> "http://superhonker.userland.com/rpc2"<br /></span><span style="font:12px Verdana, serif; ">	</span><span style="font:12px Verdana, serif; font-weight:bold; color:#0000ff;">return</span><span style="font:12px Verdana, serif; "> </span><span style="font:12px Verdana, serif; color:#0000ff;">call xmlrpc</span><span style="font:12px Verdana, serif; "> {</span><span style="font:12px Verdana, serif; color:#0000ff;">method name</span><span style="font:12px Verdana, serif; ">:"examples.getStateName", </span><span style="font:12px Verdana, serif; color:#0000ff;">parameters</span><span style="font:12px Verdana, serif; ">:25}<br /></span><span style="font:12px Verdana, serif; font-weight:bold; color:#0000ff;">end</span><span style="font:12px Verdana, serif; "> </span><span style="font:12px Verdana, serif; font-weight:bold; color:#0000ff;">tell<br /><br /></span>Returns "Missouri"<br /><br />That's it!  A three liner.  'parameters' is a List.  So should you need to send more it's just a matter of writing something like parameters:{25, "test", etc}<br /><br />Given that basic building block, I wrote some quick scripts to test the service I was debugging and got the job done a lot quicker than I was anticipating.  I've always had a soft spot for AppleScript, but occasionally it does something stunning that makes your day ten times better and you wonder what life would be like if you couldn't use a Mac for your development machine :)<br /><span style="font:12px Verdana, serif; font-weight:bold; color:#0000ff;"><br /><br /></span>]]></content:encoded></item><item><title>Relaunch 1.3.6 released</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Relaunch</category><dc:date>2006-12-10T17:40:55+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/604db02ea6fdca0ab96599afd5ba12f1-39.html#unique-entry-id-39</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/604db02ea6fdca0ab96599afd5ba12f1-39.html#unique-entry-id-39</guid><content:encoded><![CDATA[The latest version of Relaunch features support for a couple of new applications and a new 'close all apps' menu item.  It also rolls out of the Wired Up and Fired Up garage featuring a sporty new language - Italian.   This is the first of many languages I hope to support and I'd like to thank <a href="http://islainfinita.altervista.org" rel="self">Michele</a> for translating it for me.<br /><br />As you may have noticed, I've also increased the price to $10.  This is mainly due to the increased costs of supporting and developing Relaunch as the user base grows.  If you're an existing customer there is nothing more to pay, as it's always been my policy with Relaunch to continue giving away free upgrades.  <br /><br />I hope you continue to enjoy using Relaunch.  There's still plenty of development work underway and I'll continue to release new versions so keep your software update preference checked :)<br />]]></content:encoded></item><item><title>Get funky at the meta-level.</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-12-05T21:44:10+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/get_funky_at_the_meta_level.html#unique-entry-id-38</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/get_funky_at_the_meta_level.html#unique-entry-id-38</guid><content:encoded><![CDATA[For a long time I've had a theory that subsequent generations of programmers should (and to a large part do) stand on the shoulders of their forebears.  Each new generation of languages really being an abstraction layer on top of previous ones.<br /><br />In biblical terms it would go something like: Assembler begat Fortran; and Fortran begat Lisp; and Lisp begat COBOL and his brethren ALGOL... and so on, and lots of forking around and incest later we end up more or less where we are today.  The point is, that as we progressed complex things got abstracted away to make life easier for the next lot.  Fairly quickly, registers, interrupts and dealing with hardware became something Joe Programmer didn't have to deal with directly, later memory management and now even mind bogglingly complex concepts are a mere API call away.  <br /><br />And, that's probably right.<br /><br />Every time I see an ostensibly simple computing problem (and let's face it, the problem domain in many corporate environments is often will-shatteringly trivial) made (complex^2) by genius hero coders - well, a small piece of me dies and floats away.   You only need take an occasional gander at <a href="http://thedailywtf.com/" rel="self">The Daily WTF</a> to see real life examples of this happening on a project near you.<br /><br />There are, I think, two main profiles for the people who do this;  those who don't know any better and those who are bored and so re-invent the challenge into something more interesting to get them through the day.  And, I give a small tip of the hat to the second camp as I understand their pain.<br /><br />However...<br /><br />Have you seen those mashup sites the kids are making with Google Maps and flickr and god knows what else?   I doubt, if you looked at the code for any one of them that you'd find an optimal binary search algorithm or Euclidian approximations for pinning the cute flags in the right place.  Why?  Because they're mashups.  Google has done the hard work and they've just taken it, bent it and thrown it out to the world as fait accompli. <br /><br />People in the previous generation will mutter under their breaths about how the young whippersnappers don't truly understand what's going on - 'how could they possibly understand the fundamentals of geolocation?'  and the young whippersnappers stick two fingers up at the old guard and say, 'thanks for the tools - we're doing it our way now grandpa!' <br /><br />I know.  "How <em>Post Modern</em>!", you're thinking and you're right, I am.  I'd never heard of <a href="http://www.postmodernprogramming.org/" rel="self">Post Modern Programming</a> until recently but a lot of what they're saying rings true - to me at least.  There's been, what, 40 years of squillions of really smart people writing software and if you don't think there's anything in their output worth borrowing then I'm not sure you're in the right job.  Of course, we all reuse code all the time, right?  Well, if that's true then why do I keep stumbling across functions to determine the length of strings or sort an array?   Sure, understanding the fundamentals is important but I'd argue that it's not as important as making the best use of the tools at your disposal and no, I don't necessarily think the first implies the second.<br /><br />The reality of programming in 2006 is that you're mashing existing things together - be they 3rd party jars in your class path, web services, the Cocoa framework or even getting out a Knuth book and using his binary search algorithm rather than writing your own. <br /><br />Most of the clever stuff has been done <em>at the lower level</em> by really smart people and it's now time to get funky at the meta-level.  ]]></content:encoded></item><item><title>Fake iPods...</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-12-03T20:15:10+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/fake_ipods.html#unique-entry-id-37</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/fake_ipods.html#unique-entry-id-37</guid><content:encoded><![CDATA[<br />The counterfeiters have clearly gone to a lot of effort, copying the anodized casing, Apple logo and so on.   On closer inspection however, it doesn't look quite right and unfortunately there's no pictures of it running.  I'd love to have seen what software they've put in it... Probably some knock off 'Super Lucky Happy Music Player' junk, but it would have been cool to see it.<br /><br />I'm not really sure who the pirate copy is aimed at, coolness aside, the main reason most people buy iPods is because they're so damn nice to use.  You can guess just by the crazy layout of the scroll wheel (compare it to yours...) that this one won't be.<br /><br /><img class="imageStyle" alt="nanof2" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry37_1.jpg"width="510" height="496"/>]]></content:encoded></item><item><title>Aliens in my office...</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-11-29T18:38:12+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/cd89a2e63a2665a7c160698e7de7eca8-35.html#unique-entry-id-35</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/cd89a2e63a2665a7c160698e7de7eca8-35.html#unique-entry-id-35</guid><content:encoded><![CDATA[]]></content:encoded></item><item><title>Relaunch on MacZot</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Relaunch</category><dc:date>2006-11-20T21:23:18+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/relaunch_on_maczot.html#unique-entry-id-34</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/relaunch_on_maczot.html#unique-entry-id-34</guid><content:encoded><![CDATA[<br />I can absolutely concur with him when he says, "What I was selling before the promotion was exactly the same as afterwards."  Even on the day of the promotion I received about the same amount of sales that I'd expect on any normal, rainy, Autumn day.<br /><br />Like Steve I received a hike in the number of feature requests, bug reports and questions. Although not so many that I couldn't keep up through the day, but then Relaunch is an order of magnitude simpler than KIT, so I guess that the scope of the questions I had to answer was somewhat smaller.  I also didn't shift 1,500 copies of my app, although I was pretty pleased with the number of sales it did get.<br /><br />And I suppose that brings me onto the economics of the whole thing.  Relaunch is $5 (MacZot price was a little under $4) and John Gruber says on Daring Fireball -<br /><br /><em>"$10 is not enough money to charge for professional quality software. If you, the developer, don&rsquo;t think it&rsquo;s worth ten bucks, you really should just release it as freeware."</em><br /><br />The weird thing about this comment is that I've been having this conversation with myself for a while.  My company is, for the most part, funded by my consulting work and Relaunch was an experiment (originally priced at $10).  It quickly became $5 because initially I received some whining and negative feedback on VersionTracker about the price.  At the time, by cutting the price, I felt like I was doing everyone a favor (including me) and my logic was something like, 'Well, if ten people are prepared to pay $10 for it, I bet a hundred will pay $5'.  Was I wrong?  Probably.  <br /><br />It never occurred to me that it wasn't 'worth' $10, it just seemed like a good idea to make it, you know, cheaper.  You always assume (or at least I do) that when you see shops with big SALE notices in the window and hordes of people queuing to get in that they must be raking it in, when in reality they're probably closing down. Can you tell that I wasn't an economics student?<br /><br />I mentioned that Relaunch was an experiment. I actually wrote it to scratch an itch I had with software update rebooting the computer whilst working on another app (coming soon...)  The whole launching Snapshots of apps part came later, then the reopening documents came a bit after that.  So I guess it's grown a lot over the past couple of months and during that time I've also been working on internationalized versions and new features.  I'd never released a shareware app before (just freeware bits and pieces such as <a href="http://www.noodleboard.com" rel="self">noodleboard</a> and <a href="../Ninjar/index.html" rel="self">Ninjar</a> ) so I wanted to see how it worked and I don't think I've ever had a complaint with regards to the quality of the software (quite the opposite in fact).  So far I've learned about marketing shareware, setting up payments, software updates, roughly what level of support is required and when, how much bandwidth you need and so much more...<br /><br />And, despite my relative naivet&eacute; and the pricing faux-pas it does sell reasonably well.  <br /><br />However, in terms of a learning experience for me it's been awesome...<br /><br />p.s. from next, say, Wednesday it's going to be $89.99 a copy.  Send your complaints to Daring Fireball, I'm using the Gruber Theory of Software Pricing in lieu of having any clue what I'm doing :)]]></content:encoded></item><item><title>Amusing Wikipedia Warnings</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Humor</category><dc:date>2006-11-19T18:23:24+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/dce39d44a11d7c850aa81578037daf84-33.html#unique-entry-id-33</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/dce39d44a11d7c850aa81578037daf84-33.html#unique-entry-id-33</guid><content:encoded><![CDATA[You know those Wikipedia warnings that get in the way of a good rant?    Well, <a href="http://www.cracked.com" rel="self">Cracked.com</a> have a bunch of <a href="http://www.cracked.com/index.php?name=News&sid=1293" rel="self">more accurate wikipedia warnings.</a>  <br />Some of them are quite funny...<br /><br /><img class="imageStyle" alt="Shitty-local-band" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry33_1.jpg"width="570" height="74"/><br />]]></content:encoded></item><item><title>Take your work home with you&#x2c; with Relaunch...</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Relaunch</category><dc:date>2006-11-19T18:14:01+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/97af5be9c55feb3816bd2c9f798871f6-32.html#unique-entry-id-32</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/97af5be9c55feb3816bd2c9f798871f6-32.html#unique-entry-id-32</guid><content:encoded><![CDATA[A neat <a href="../Relaunch/index.html" rel="self">Relaunch</a> trick was pointed out to me recently by a user on <a href="http://www.maczot.com" rel="self">MacZot</a>.   Essentially, if you use Relaunch on more than one Mac say, one in the office and one at home, you can store your snapshots and documents on a USB key and carry on your work when you get home.<br /><br />The basic idea being, if you're working late on a project you can save your documents to your USB key, take a Relaunch Snapshot and save that to your key.  Unplug the key and shutdown your office mac. Go home.  Insert they key and launch everything back up where you left off.  Assuming of course, that you have all the applications you were using in the office at home as well (Relaunch isn't about you getting free copies of Photoshop from your boss :).<br /><br />It's a neat trick and one that I never actually thought of.  Thanks MK, whoever you are!]]></content:encoded></item><item><title>Make yourself heard&#x2c; nerd&#x21;</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-11-18T09:54:42+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/8c46ae8975b909feb5b39c9925caff71-31.html#unique-entry-id-31</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/8c46ae8975b909feb5b39c9925caff71-31.html#unique-entry-id-31</guid><content:encoded><![CDATA[In a move that's either crazy or inspired MySociety and the government have launched an online petitions service.  <br /><br />I've no idea what the outcome of this will be, or indeed if anyone at Whitehall will even take notice, but there's certainly some worthy causes.  <br /><br />Here's a few I've signed, there are probably more that I should - let's hope that they have some effect, eh?<br /><br /><a href="http://petitions.pm.gov.uk/IDcards/" rel="self">Scrap ID Cards</a><br /><a href="http://petitions.pm.gov.uk/No-more-fear/" rel="self">Stop using the threat of terror to pass laws that are illeberal and ineffective</a><br /><a href="http://petitions.pm.gov.uk/privatecopy/" rel="self">Create an exception to copyright law to allow for private copies of personal use, format shifting etc.</a>]]></content:encoded></item><item><title>My new Nokia 6233</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-11-12T19:23:26+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/isync_and_the_nokia_6233.html#unique-entry-id-30</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/isync_and_the_nokia_6233.html#unique-entry-id-30</guid><content:encoded><![CDATA[I broke my Motorola Razr a while back, I'm not sure what happened to it exactly but it was probably related to my habit of leaving it in my back pocket and sitting on it.  Still, I never really got on with the UI, it was pretty clunky for what looked like a phone from the future and I needed a change.  I have drawers full of old mobile phones and have been using a Nokia 6600 as my backup, but it's big and old and scratched and a bit broken from my dropping it a few times.  <br /><br />So it's down to Phones For You Are Us and see what I can get for free.  "I can't really justify spending money on mobiles when they give them away for free," I explained to the (now) somewhat crestfallen sales man. So he left me with five or six plastic models of phones to play with in the hope that I'd get bored and wander off.  I didn't.  I already had it in mind that I was probably going to get another Nokia and my price limit of free precluded most of the fancy ones. However, I liked the 6233 and after an hour of waiting for T-Mobile to give me the OK walked out of the shop with a new phone.<br /><br /><img class="imageStyle" alt="NOK6233" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry30_1.png"width="128" height="128"/><br /><span style="font-size:9px; ">A Nokia 6233, yesterday.</span><br /><br />"And is it any good?", I hear you ask.  "Yeh, s'alright", I reply.  It's got pretty much everything I've ever wanted from a phone, except...<br /><br />It doesn't sync with iSync (yet).  This has happened to me before (I'm always on the bleeding edge of free phones, it would seem) and anyway it's not normally a big deal as there's usually a work-around.  After a bit of googling I found <a href="http://web.mac.com/the_reamer/iWeb/S60/iSync.html" rel="self">http://web.mac.com/the_reamer/iWeb/S60/iSync.html</a> with instructions on syncing your Nokia 6233 with iSync. It's FREE, works perfectly, is made in the UK and it comes with a nice icon of the phone that will be more than adequate until Apple adds the required support in themselves.<br /><br />The site also had Nokia themes which you can buy to make you phone look like a mac. Given that the iSync plugin was free I figured I'd buy one and here it is (sorry it's a bit blurred but I couldn't get the autofocus to do it's thing on the phones screen...)<br /><br /><img class="imageStyle" alt="Pasted Graphic 1" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry30_2.jpg"width="160" height="216"/> <br /><br />OSXy themes for Nokia 6233, E61, N80, N73 and N93 are available here <a href="http://web.mac.com/the_reamer/iWeb/S60/Buy.html" rel="self">http://web.mac.com/the_reamer/iWeb/S60/Buy.html</a> <br />]]></content:encoded></item><item><title>w00t&#x21; TextMate fixes AppleScript</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-11-06T19:04:14+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/a2b1ba2b39fb0e4c31b85a891fccf725-29.html#unique-entry-id-29</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/a2b1ba2b39fb0e4c31b85a891fccf725-29.html#unique-entry-id-29</guid><content:encoded><![CDATA[Relaunch adds TextMate support.  I know a few people have asked for this and it's nice to be able to do things that people ask for. <br /><br />So, <a href="../Relaunch/index.html" rel="self">Relaunch 1.3.5</a> is an incremental update that adds support for TextMate. Enjoy!]]></content:encoded></item><item><title>Q. When is a review not a review?</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-11-06T18:58:38+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/b7f8d03c29725a0beb57b3fe9720862c-28.html#unique-entry-id-28</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/b7f8d03c29725a0beb57b3fe9720862c-28.html#unique-entry-id-28</guid><content:encoded><![CDATA[<a href="http://blog.dave.org.uk/archives/001133.html" rel="self">When it's two words taken out of context by Amazon to spin a fairly negative book review into a positive '...very useful.'<br /></a><br />]]></content:encoded></item><item><title>Continous Cocoa</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-10-29T16:49:07+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/continuous_cocoa.html#unique-entry-id-27</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/continuous_cocoa.html#unique-entry-id-27</guid><content:encoded><![CDATA[Here in Wired Up And Fired Up's bustling, metropolitan offices we build things - lots of things. Many of them in different technologies (although mostly Java and Cocoa these days).<br /><br />And I wanted a Continuous Integration server to build the things for me while I did more important stuff like, go to the pub or walk the dog or anything other than build things really. I only wanted the one mind (I don't want to waste time to go fiddling about setting these things up for the hell of it) and it had to be capable of building Java and Cocoa targets as well as potentially anything else I could be bothered to throw at it.<br /><br />And do you know what?  I chose <a href="http://maven.apache.org/continuum/" rel="self">Continuum</a> from the <a href="http://maven.apache.org/" rel="self">Apache Maven</a> project.<br /><br />On the face of it it may seem an odd choice but it's one that works extremely well and here are my top three reasons why.<br /><br /><strong>1. Virtually Zero Configuration</strong><br /><br />Do you know how you configure CruiseControl to build a project?  Well, you set up a work area, create some directories in it, check out a project into one of them, create another build script for it, create a config.xml, wade through pages of documentation, edit the config.xml...etc....etc.  <br /><br />Guess how you achieve the same in Continuum? You go to the web interface, click 'Add Project' and type in the Project Name, Subversion Url and your Subversion login and password (if required). Then, as if by magic, the project is all there ready to build.<br /><br /><strong>2. Builds anything</strong><br /><br />When you add a project you pick a builder from Maven, Ant or Shell Script.  If you can build it from the command line, you can build it from Continuum.  <br />Just so you know - the following cut and pasted into a file called build.xml will tell Ant to build an XCode project...<br /><br /><code>&lt;?xml version="1.0"?&gt;<br />&lt;project name="ProjectName" default="build" basedir="."&gt;<br />&nbsp;&lt;target name="build"&gt;<br />&nbsp;&nbsp;&lt;exec executable="xCodeBuild" failonerror="true"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;arg value="-alltargets"/&gt;<br />&nbsp;&nbsp;&lt;/exec&gt;<br />&nbsp;&lt;/target&gt;<br />&lt;/project&gt;</code><br /><br />That's it.  If you have that file in the same directory as your .xcodeproj check it all into Subversion and point Continuum at it, you're away.<br /><br />Of course, you can create custom targets for different build configurations such as Debug, Test (OCUnit fans, take note) and Release and build them all together or separately.<br /><br /><strong>3. The UI rocks<br /></strong><br />CruiseControl...<br /><br /><img class="imageStyle" alt="Picture 2" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry27_1.png"width="376" height="195"/><br /><br />Continuum....<br /><br /><img class="imageStyle" alt="Picture 3" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry27_2.png"width="437" height="125"/><br /><br />Hmm, pretty conclusive I'd say.  <br /><br />Of course, if you're only building Cocoa projects for OS X then I'd strongly recommend a look at <a href="http://www.bleepsoft.com/buildfactory/" rel="self">BuildFactory from BleepSoft</a>. However, if you work in a more heterogeneous or distributed environment then I think you'll find that Continuum is a lovely little app which will save you a lot of time and pain rolling your own build tools.<br /><br /><em>Need help setting up your builds?  At Wired Up and Fired Up Ltd. we understand that your developers are often too busy developing to spend time setting up configuration management systems and writing build scripts, that's why we're offering a free project health check.  Email us on </em><em><a href="mailto:info@wiredupandfiredup.com" rel="self">info@wiredupandfiredup.com</a></em><em> to see how we can help improve the quality, reliability and maintainability of your software.</em>]]></content:encoded></item><item><title>Relaunch 1.3.4</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-10-23T21:11:25+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/39c699b20920331d06b65bba0453c33c-26.html#unique-entry-id-26</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/39c699b20920331d06b65bba0453c33c-26.html#unique-entry-id-26</guid><content:encoded><![CDATA[Announcing the latest version of Relaunch. Now with added extra document app support goodness (Smultron, FlexTime, Merlin and iCalamus) and a few extra user preferences (apparently some people didn't like the launch sound... :p )<br /><br />In the pipeline:<br />* More app support (of course)<br />* Internationalisation (being international, I spell it with an 'S')<br />* I'm working on a couple of new features, but I'd rather not disclose them yet because a) they might not work and b) secret, innit.<br /><br />Oh, and to keep Technorati happy here's my <a href="http://www.technorati.com/claim/5nncu58z3j" rel="me">Technorati Profile</a>.  (Not that there's anything there).<br /><br />]]></content:encoded></item><item><title>Social App discovery?</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-10-22T14:12:23+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/d05d12df02cbb5532c531502036c031e-25.html#unique-entry-id-25</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/d05d12df02cbb5532c531502036c031e-25.html#unique-entry-id-25</guid><content:encoded><![CDATA[<br /><a href="http://osx.iusethis.com/" rel="self"><img class="imageStyle" alt="logo" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry25_1.png"width="133" height="38"/></a> is fun, it's a simple but cool (or cool but simple) social site type thing where you specify what applications you use.  It's kind of like Digg, but for apps as opposed to tech news (yes, I know there's more to Digg than tech news but, well, no there isn't.)<br /><br /> The neat thing about this is that you then form a network with people who use the similar applications and it's kind of fun to see what other people have discovered that you haven't. <br /><br /> It's full of Web 2.0 goodness, with tag clouds, AJAX and all that malarkey and <a href="http://osx.iusethis.com/app/relaunch" rel="self">Relaunch is on there</a>.  So, if you use it go click it :)]]></content:encoded></item><item><title>iShowU</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-10-16T12:17:22+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/2b38e82f45629567c8477443adb7fa06-23.html#unique-entry-id-23</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/2b38e82f45629567c8477443adb7fa06-23.html#unique-entry-id-23</guid><content:encoded><![CDATA[I just thought I'd mention that I've been creating the screen casts for Relaunch using an application called iShowU from ShinyWhiteBox.<br /><br />This is a truly ace little product and at an extremely low price.  I've been looking for something like this for a while and I'm very glad to have found it :)<br /><br />There's more info on their website - <a href="http://shinywhitebox.com/index.html" rel="self">http://shinywhitebox.com</a>  <br /><br />]]></content:encoded></item><item><title>What now?</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-10-03T22:47:52+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/e0a45d57215c7db26736bc8b68c1729c-22.html#unique-entry-id-22</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/e0a45d57215c7db26736bc8b68c1729c-22.html#unique-entry-id-22</guid><content:encoded><![CDATA[Well, I found a wee bug that caused Camino to quit unexpectedly, so I thought I'd best push out a new update.  <br /><br />What has been interesting is that people are picking up on the AppleScripting side of how Relaunch works and are sending suggestions and scripts which, as soon as they're properly tested I'll include in later releases.  One such contributer is Miles Metcalfe, who I ought to mention as it were he who put VoodooPad Pro support in version 1.3 and has sent another couple of scripts already.<br /><br />If you're interested in how this works, or just fancy a hack around have a look at the '<a href="http://wiredupandfiredup.co.uk/wiki/Wiki.jsp?page=ScriptingRelaunch" rel="self">ScriptingRelaunch</a>' page on the wiki. ]]></content:encoded></item><item><title>Relaunch 1.3</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-10-01T13:36:09+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/efee916d69ef6a9cd740acb11ac06139-21.html#unique-entry-id-21</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/efee916d69ef6a9cd740acb11ac06139-21.html#unique-entry-id-21</guid><content:encoded><![CDATA[Not wanting to rest on my laurels, a new version of <a href="../Relaunch/index.html" rel="self">Relaunch</a> is out that adds the ability to save multiple snapshots and launch them from the finder.<br /><br />I've also posted a <a href="../Relaunch/index.html" rel="self">screen-cast</a> of this so you can see exactly what it's all about.<br />]]></content:encoded></item><item><title>Quick check out Qwickr</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-09-30T13:30:00+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/543f720f5fed7c841d4d0544c61c3ce8-20.html#unique-entry-id-20</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/543f720f5fed7c841d4d0544c61c3ce8-20.html#unique-entry-id-20</guid><content:encoded><![CDATA[If you're a Java developer you ought to check out <a href="http://qwickr.com" rel="external">Qwickr</a> at your earliest convenience.<br /><br />It's a JPA (Java Persistence Architecture) tool for JEE5 applications.  It's a pretty neat piece of software engineering that essentially gives you direct access to your underlying entity model using little more than a web browser.  <br /><br />Why is this good? Well, for a start you can construct and drill down into queries against your entity model in JPQL (which to developers may be simpler than SQL), it also extends JPQL and allows for INSERT statements.  This means that you have effectively complete access to your underlying data as your applications see it.  So, no more flushing caches when you need to simply change a record.<br /><br />I can think of a whole bunch of times that this would have saved my life when working on a recent EJB3 project.]]></content:encoded></item><item><title>er&#x2c; point 1?</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-09-26T22:28:14+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/48ba5d3b6083b8090726f9b00f15c70f-19.html#unique-entry-id-19</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/48ba5d3b6083b8090726f9b00f15c70f-19.html#unique-entry-id-19</guid><content:encoded><![CDATA[Turns out there was a bug in Relaunch 1.2 with respect to it opening applications properly (which is what it's supposed to do).  So I've rushed out 1.2.1 which hopefully fixes it.]]></content:encoded></item><item><title>Launching Relaunch 1.2</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-09-25T18:51:36+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/95824dc33431f09722a774dab995435f-18.html#unique-entry-id-18</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/95824dc33431f09722a774dab995435f-18.html#unique-entry-id-18</guid><content:encoded><![CDATA[I'm happy to announce that another updated version of Relaunch is now available.<br /><br />This version adds to Relaunch the ability for it to remember not only which applications you had open but also which documents you had open in them.  Currently it supports 20 commonly used mac apps including Microsoft's <a href="http://www.microsoft.com/macoffice/" rel="self">Office</a>, Apple's <a href="http://www.apple.com/iwork/" rel="self">iWork suite</a>, <a href="http://www.omnigroup.com/applications/omnioutliner/" rel="self">Omni Outliner</a>, <a href="http://www.omnigroup.com/applications/omnigraffle/" rel="self">Omni Graffle</a>, <a href="http://www.apple.com/ilife/garageband/" rel="self">GarageBand</a>, <a href="http://www.codingmonkeys.de/subethaedit/" rel="self">Subethaedit</a> and <a href="http://www.flyingmeat.com/voodoopad/" rel="self">VoodoPad</a>.<br /><br />For more information see the <a href="../Relaunch/index.html" rel="self">Relaunch product page</a>.]]></content:encoded></item><item><title>Relaunch v1.1</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-09-19T20:40:14+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/b28964ac3584c97c39c38431583906dd-17.html#unique-entry-id-17</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/b28964ac3584c97c39c38431583906dd-17.html#unique-entry-id-17</guid><content:encoded><![CDATA[It's been a couple of days since launching Relaunch and it's had lots of downloads and a review on Softpedia which stated that it was good, but needed more features.  <br />So, we added a new feature - 'auto snapshot' - this effectively means you can run Relaunch and never have to interact with it.  <br />At all times it knows what applications you have open and should the worst happen, or you need to reboot, it will start them all back up again for you.<br />There's more coming too, so keep your eyes on our site.<br /><a href="../Relaunch/index.html" rel="self"><br />Relaunch 1.1</a>]]></content:encoded></item><item><title>Introducing Relaunch</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-09-17T18:08:01+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/8b8bbd884dfcce9466968fad86d92f09-16.html#unique-entry-id-16</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/8b8bbd884dfcce9466968fad86d92f09-16.html#unique-entry-id-16</guid><content:encoded><![CDATA[Relaunch is a small utility I've been hacking away on for a little while now and have decided to release to the world at large.  It was borne out of my frustration with Software Update (and certain other installs) increasingly requiring me to restart the machine Windows style.<br /><br />Relaunch runs as a Menu Item in OSX and on request takes a list of currently running applications which it then restarts when you next login or restart the machine.  For those of you who never reboot you can also launch the applications manually.    You get five free goes (or reboots, if you like) before it asks you to register (which only costs $5).  It's a simple little app and I hope you like it.<br /><br /><a href="../Relaunch/index.html" rel="self">Relaunch Product Page</a>]]></content:encoded></item><item><title>What&#x27;s with the new site?</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-09-10T17:38:33+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/0b29dad122f96fc9c832471738757063-15.html#unique-entry-id-15</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/0b29dad122f96fc9c832471738757063-15.html#unique-entry-id-15</guid><content:encoded><![CDATA[Well, for those of you that didn't go to <a href="files/789653ad8a9bc600bb7f4dc98a078f84-12.html" rel="self">CocoaDevHouse London</a> you missed out on some excellent gifts from the main sponsor <a href="http://realmacsoftware.com/" rel="self">RealMac Software</a>. <br />One of which was a copy of RapidWeaver, their flagship product.  I'd been looking for an alternative to iWeb for a while now as I've been having all kinds of problems trying to set up the funky stuff such as Google Ads.  I know that you can use the likes of <a href="http://web.mac.com/cbrantly/iWeb/Software/iWeb%20Enhancer.html" rel="self">iWebEnhancer</a> and I did, a couple of times, but it wasn't really what I was looking for.  <br />I had looked at RapidWeaver, but never really figured out if it would do what I wanted it to do.  Fortunately (for me) <a href="http://www.nikfletcher.com/" rel="self">Nik Fletcher</a> did an excellent short presentation on how to use it and answered all of my questions.  The long and short of it is that you have a lot more control in RapidWeaver than you do in iWeb and it's an ace little product that is manufactured in the UK.<br /><br />]]></content:encoded></item><item><title>Packaging OSX Applications Part 2</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-09-04T17:35:13+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/9fa4718c3cc265101a64acb07c58f003-14.html#unique-entry-id-14</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/9fa4718c3cc265101a64acb07c58f003-14.html#unique-entry-id-14</guid><content:encoded><![CDATA[So, some smart-arse emailed me (Hi, Ron), with a suggested improvement to the script I published yesterday, and you know, he&rsquo;s right... &nbsp;<br />His suggestion was to use a compressed .dmg as opposed to zipping the image as it creates less clutter for your users when they come to use it. &nbsp;He sent a patch, so here&rsquo;s the updated <a href="assets/package.sh" rel="self">package.sh</a><br />(Note - you can use the new -b option when finalising the image to create a bzipped image, without it you get a zlib zipped image)<br />&nbsp;<br />The next thing I wanted to get onto was how you can set the background image of your .dmg, like everyone seems to do these days. &nbsp;Well, here is the easiest way I know.<br />&nbsp;<br />1. Create your temporary DMG, open it and in it create a normal folder called hidden<br />2. Copy a suitable image into the &lsquo;hidden&rsquo; folder<br />3. Show the View Options inspector (option-j) and select &lsquo;This window only&rsquo; and change the background picture to the one in your &lsquo;hidden&rsquo; folder.<br />4. Open the Terminal.app and navigate to your mounted drive (i.e. cd /Volumes/MyApp-temp )<br />5. Rename the &lsquo;hidden&rsquo; folder to &lsquo;.hidden&rsquo; (i.e. mv hidden .hidden )<br />&nbsp;<br />Unmount and finalise your dmg &nbsp;and go to the pub..]]></content:encoded></item><item><title>Packaging OSX Applications Part 1</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-09-03T17:32:29+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/f6adcef2f8869d8e50ec61c88d65abe7-13.html#unique-entry-id-13</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/f6adcef2f8869d8e50ec61c88d65abe7-13.html#unique-entry-id-13</guid><content:encoded><![CDATA[Something new is coming soon from Wired Up and Fired Up Ltd and I&rsquo;ve been looking at packaging recently.<br />&nbsp;<br />There are two popular options for packaging an OS X application namely, a zipped package (.pkg) file or the zipped drive image (.dmg) and choosing one is really down to the type of application you are planning to unleash.<br />&nbsp;<br /><a href="../Ninjar/index.html" rel="self">Ninjar</a>, for example, uses a packaged install. &nbsp;This is because it&rsquo;s a Spotlight plugin and needs installing somewhere off the beaten track that you probably don&rsquo;t want to explain to most users. &nbsp;It also kicks off a spotlight re-index of the disk on install, again something that a managed install can do neatly without bothering anyone.<br />&nbsp;<br />Most simple applications however, are better served by distributing them as a zipped drive image. &nbsp;You know the routine - image mounts, drag the new app to the /Applications folder and trash the image. &nbsp;Sorted!<br />&nbsp;<br />So how do you go about creating the .dmg and putting your app into it? And how about getting a funky background image in there as well, like they do in that fancy Adium?<br />&nbsp;<br />Well, I&rsquo;ve put together a packaging script that simplifies this process to:<br />&nbsp;<br />1. Run script to create a temporary .dmg of a specified size and name<br />2. Mount the .dmg and copy your application (and any supporting files) into it<br />3. Unmount the application<br />4. Run the script again to finalize the .dmg and zip it up ready to distribute<br />&nbsp;<br />So, how does this work?<br />&nbsp;<br />Firstly download<a href="assets/package.sh" rel="self"> package.sh</a><br />&nbsp;<br />1. Copy it to somewhere into your home folder (easiest as you have full permissions there).<br />2. Launch Terminal.app from /Applications/Utilities<br />3. Change directory (&lsquo;cd&rsquo;) to wherever you copied the packaging script and give it execute permissions i.e.<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;chmod +x package.sh<br />4. Run the script to create a temporary .dmg of a specified size, e.g.<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;./package.sh -a AppName -m 2<br />5. This will have created an image called AppName-temp.dmg roughly 2Mb in size.<br />6. In the Finder, navigate to the AppName-temp.dmg and mount it by opening it, it should mount on your desktop with the name &lsquo;AppName&rsquo;<br />7. Drag your application (and anything else) into the AppName drive on your desktop. &nbsp;When you are finished eject the drive by dragging it into the trash.<br />8. Back in Terminal.app run the script again to finalize and zip your image, e.g.<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;./package.sh -a AppName -f<br />&nbsp;<br />Er, that&rsquo;s it! &nbsp;You should now have an AppName.dmg.zip to distribute.<br />&nbsp;<br />I&rsquo;ve been using this script to help bundle up the beta versions of &lsquo;the new thing&rsquo; and it seems to be working well. &nbsp;Feel free to distribute the script, add to it or mail me with suggestions. &nbsp;It is distributed under a Creative Commons Attribution license.<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />As for the funky background image, I&rsquo;ll cover that in a later post....]]></content:encoded></item><item><title>CocoaDevHouse Update&#xa;</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-08-23T17:31:10+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/789653ad8a9bc600bb7f4dc98a078f84-12.html#unique-entry-id-12</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/789653ad8a9bc600bb7f4dc98a078f84-12.html#unique-entry-id-12</guid><content:encoded><![CDATA[Things, on the whole, are going swimmingly. &nbsp;Thanks to our main sponsors...<br />&nbsp;<br />&nbsp;<img class="imageStyle" alt="page9_2" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry12_1.jpg"width="133" height="44"/><img class="imageStyle" alt="droppedImage" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry12_2.png"width="68" height="63"/><img class="imageStyle" alt="shapeimage_1" src="http://wiredupandfiredup.co.uk/blog/files//page6_blog_entry12_3.jpg"width="227" height="44"/><br />&nbsp;<br />&nbsp;<br />So far we&rsquo;re looking at holding the inaugural event at the Idea Store, Canary Wharf, London on the 9th Sept. &nbsp; &nbsp;The event is open to anyone from seasoned Cocoa Developers, to Macintosh newcomers and beyond, so don&rsquo;t be shy pop in and say hello!<br />&nbsp;<br />Stop by our wiki page to say hi and get the full story.<br />&nbsp;<br />For those of you that haven&rsquo;t heard of CocoaDevHouse then read on...<br />&nbsp;<br />&ldquo;CocoaDevHouse is a periodic local hackathon inspired by the Bay Area SuperHappyDevHouse. This ain&rsquo;t your regular user group meeting at the library! (not that there&rsquo;s anything wrong with that)<br />In the wiki spirit of Barcamp, this event is self-organizing, i.e., there is no permission necessary to start one in your city. Simply join a local event or start your own.<br />Whether you&rsquo;re a nOOb, haXor, web developer, etc. bring your MacBook and get your Xcode on!<br />You&rsquo;re invited to hang with other Cocoa ninjas - form green to black belt on IRC:<br />#cocoadevhouse on freenode.irc.net<br />For a glimpse of the action, joing the Flickr group.&rdquo;<br />&nbsp;<br />See you there!<br />&nbsp;<br />Richy]]></content:encoded></item><item><title>Beer money</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-08-16T17:30:31+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/b111ba9f78d9de3322d1a33e836bddc3-11.html#unique-entry-id-11</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/b111ba9f78d9de3322d1a33e836bddc3-11.html#unique-entry-id-11</guid><content:encoded><![CDATA[Well, I&rsquo;ve been really pleased with the response to the few utilities that I&rsquo;ve released through this site. &nbsp; I&rsquo;m not yet at the point where I can quit the day job or anything, but I am at the point where I can buy a few beers from the proceeds which, really, is what it&rsquo;s all about.<br />&nbsp;<br />So here&rsquo;s a big &lsquo;Cheers!&rsquo; to all of you who have supported me through your donations, kind words and feedback.<br />]]></content:encoded></item><item><title>Ninjar</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-07-09T17:29:28+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/ef58e84b08980bd0595b0bf224aa231d-10.html#unique-entry-id-10</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/ef58e84b08980bd0595b0bf224aa231d-10.html#unique-entry-id-10</guid><content:encoded><![CDATA[Spotlight seems to be one of the most widely ignored improvements in OS X 10.4 (Tiger). &nbsp;<br />However, <a href="../Ninjar/index.html" rel="self">I thought this would be a good use for it </a>(at least if you&rsquo;re a Java developer of any kind). &nbsp;<br />&nbsp;<br />Essentially, it&rsquo;s an importer that reads the content of .jar (Java Archive) files and publishes this as metadata to spotlight. &nbsp;Enabling you to search for class and package names and have spotlight do the legwork for you. &nbsp;No more renaming jars as zip files and unzipping them to rummage through them in the finder.<br />&nbsp;<br />It should also help in resolving class-path and naming conflicts. &nbsp;Anyway, it&rsquo;s free for anyone to use although donations towards it&rsquo;s upkeep are being gratefully accepted if you find it useful.]]></content:encoded></item><item><title>Consensus killed the cat</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-07-02T17:28:30+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/7ebb6137a9aaa6c5b4d10d613d04a06c-9.html#unique-entry-id-9</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/7ebb6137a9aaa6c5b4d10d613d04a06c-9.html#unique-entry-id-9</guid><content:encoded><![CDATA[This insightful blog post pretty much sums up my feelings on consensus based decision making.<br />&nbsp;<br /><a href="http://www.carte-blanche.org/issues/04/grassmann.html" rel="self">http://www.carte-blanche.org/issues/04/grassmann.html</a><br />&nbsp;<br />I shudder to think of the amount of productive time (both micro i.e. personal and macro i.e. company) &nbsp;wasted trying to get a bunch of people to come to a consensus. &nbsp;The other problem with a consensus opinion is it never reflects anyone&rsquo;s personal opinion, so no one can ever really get behind it and champion it and consequentially no one really cares.<br />&nbsp;<br />As they sagely used to say, &ldquo;in all the towns and all the cities, there are no statues to committees. &ldquo;]]></content:encoded></item><item><title>Java black belt</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-07-01T17:27:34+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/cff061f9f8e7f9a4094a54c857f57e7b-8.html#unique-entry-id-8</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/cff061f9f8e7f9a4094a54c857f57e7b-8.html#unique-entry-id-8</guid><content:encoded><![CDATA[<a href="http://JavaBlackBelt.com " rel="self">JavaBlackBelt.com </a>is a neat idea, it&rsquo;s a community for Java and Open Source skills assessment. &nbsp;However, unlike others such as <a href="http://www.brainbench.com/" rel="self">BrainBench</a> it doesn&rsquo;t cost money to sit the tests. &nbsp;It costs time.<br />&nbsp;<br />Each exam requires a certain number of contribution points which you earn by authoring new questions or commenting and editing existing ones. &nbsp;On passing an exam you get &lsquo;Knowledge Points&rsquo; which you can add together to get different belt grades (yellow, orange, green, blue, brown and black).<br />&nbsp;<br />I find it a useful resource for keeping my ninja coding skills sharpened.<br />&nbsp;<br /><a href="http://javablackbelt.com/UserView.wwa?userId=259522" rel="self">http://javablackbelt.com/UserView.wwa?userId=259522</a>]]></content:encoded></item><item><title>Free-wheeling Artist</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Personal</category><dc:date>2006-06-29T17:23:20+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/6a9b12277f645476b6bc3cb2596d1432-7.html#unique-entry-id-7</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/6a9b12277f645476b6bc3cb2596d1432-7.html#unique-entry-id-7</guid><content:encoded><![CDATA[This site <a href="http://personaldna.com" rel="self">http://personaldna.com</a> tells you what you are.<br />&nbsp;<br />I&rsquo;m a free wheeling artist. &nbsp;My personal said so.<br />&nbsp;&nbsp;<br />I&rsquo;ve no idea what it means, but the sliders are fun.]]></content:encoded></item><item><title>CocoaDevHouse London</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Apple</category><dc:date>2006-06-29T17:22:31+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/bfd0fd525806ba7c65876b594f69e91a-6.html#unique-entry-id-6</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/bfd0fd525806ba7c65876b594f69e91a-6.html#unique-entry-id-6</guid><content:encoded><![CDATA[<span style="font:14px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#999999;">For those who&rsquo;ve not heard of it </span><span style="font:14px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#999999;"><u>CocoaDevHouse</a></u></span><span style="font:14px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#999999;"> is described as &lsquo;the local hackathon for fellow Cocoa devs and OS X enthusiasts, it&rsquo;s being pioneered by Blake Burris from </span><span style="font:14px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#999999;"><u>Cocoa Radio</a></u></span><span style="font:14px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#999999;"> (a periodical pod-cast focussing on Cocoa development topics).<br />&nbsp;<br />I saw recently there was an event in Amsterdam and wondered if there was anything planned for here in the UK. When I saw that there wasn&rsquo;t I decided to see if I could start the ball rolling. &nbsp;<br />&nbsp;<br />To get things going I&rsquo;m just trying to gauge interest (to date there have been two interested parties sign up) then hopefully organise somewhere for us all to meet up on a regular-ish basis and swap ideas, help each other out have a few beers and a chat and so on. &nbsp;<br />&nbsp;<br />Eventually, if there&rsquo;s enough take-up then organising a hackathon or similar event is definitely on the cards. &nbsp;<br />&nbsp;<br />So, don&rsquo;t be shy. &nbsp;I&rsquo;m not a Cocoa expert by any means, I&rsquo;m really a Java developer who&rsquo;s learning Cocoa as a way to broaden my experience and also, well, it is cool. &nbsp; Anyone who&rsquo;s prepared to turn up will be made more than welcome and anyone who wants to help out in anyway doubly so.<br />&nbsp;<br />I&rsquo;ll be trying to get the word out over the next few weeks, so stay tuned...</span>]]></content:encoded></item><item><title>One kind of stuff</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-05-28T17:21:23+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/a04167b969f031dfe49d80ddfdb7904e-5.html#unique-entry-id-5</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/a04167b969f031dfe49d80ddfdb7904e-5.html#unique-entry-id-5</guid><content:encoded><![CDATA[I&rsquo;ve been looking at Seam (http://www.jboss.com/products/seam) for a while and recently attended a seminar with Gavin King himself talking about it. However, I never really got around to taking the plunge.<br /><br />Wired Up And Fired Up were early adopters of EJB3 and have been using it now in production systems for over a year and, yes, it really is that much better. &nbsp;In fact, it is with great reticence now that we undertake any kind of legacy J2EE application work (unless it&rsquo;s a migration to EJB3 of course...)<br />&nbsp;<br />But for the most part we&rsquo;ve stuck with a couple of old (and bad) habits when implementing web UIs. &nbsp;I think this was largely because I&rsquo;ve been a web programmer since the days when a thorough knowledge of the state of state management was de rigeur and so any major abstraction on top of this just seemed to confuse the issue. &nbsp;To be fair, most web application frameworks *DO* confuse the issue.<br />&nbsp;<br />Seam, it seems, will enable us to redress the balance a little bit. &nbsp;By leveraging the JSF component model we&rsquo;re now looking forward to being able to create our own suite of web components as well as buying in components when required, however that&rsquo;s not all...<br />&nbsp;<br />Seam also extends on the three basic contexts typically available to web application developers (Application, Session and Request) and brings a new &lsquo;unified&rsquo; context model to the table (Seam&rsquo;s contexts are Application, Business Process, Session, Conversation, Page and Event). &nbsp;<br />&nbsp;<br />Why more contexts? &nbsp;Well, if you as a developer are trying to track a user across several different requests, what do you do? &nbsp;Put something in the session and check for it&rsquo;s existence? &nbsp;The problem with that is that the user is then precluded from performing similar actions in a different browser or tab at the same time. &nbsp;Also, you need to make decisions about session time outs and ensure that you clear out the session when the user starts doing something else otherwise your application tends to get horribly confused.<br />&nbsp;<br />The Conversation context offered by Seam allows for this, it remains scoped to a browser window instance and is accessible across multiple requests. &nbsp;<br />&nbsp;<br />The Business Process context effectively connects you into the powerful long-running, multi-user state management concepts afforded by a BPM engine, &nbsp;see <a href="files/b89235386408ed5fc64ed5eb2a3dcae8-3.html" rel="self">Tackling complexity with crayons</a><br />&nbsp;<br />While the Event context is roughly synonymous with the traditional Request and the Page context allows you to associate state with a particular page. &nbsp;<br />&nbsp;<br />All the while Seam is working away in the background like a &lsquo;state garbage collector&rsquo; cleaning up out of scope variables and abandoned conversations.<br />&nbsp;<br />The main beauty of Seam though is it&rsquo;s unification of the main concepts of EJB and JSF allowing you to bind Session Beans to page events and Entity Beans to the same page without the need for layers of facades, managers and locators. &nbsp;And all the while fixing a large proportion of those frequently encountered &lsquo;back button&rsquo; issues and interrupted page flow problems (a problem for which we once even designed an &lsquo;interruptible dispatcher&rsquo; based on a kind of request stack).<br />&nbsp;<br />I&rsquo;ve been at this for a little while now and, while there is a learning curve, I&rsquo;m convinced that this is about as productive as Java Enterprise developers have ever been able to be.]]></content:encoded></item><item><title>NewdleBoard</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-04-17T17:20:25+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/a84fd77d166d3469c9fa8ad13abd3e28-4.html#unique-entry-id-4</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/a84fd77d166d3469c9fa8ad13abd3e28-4.html#unique-entry-id-4</guid><content:encoded><![CDATA[Last week I managed to sneak out a new version of the NoodleBoard. &nbsp;<br />&nbsp;<br />I&rsquo;ve got a lot of paying work on at the moment, so keeping the &lsquo;free-ware&rsquo; side of the business up-to-date has been hard. &nbsp;However I was really pleased with the new UI, which was done by Victoria Weston (a London based web/graphic designer) and I&rsquo;d managed to fix a few bugs so it seemed a shame to sit on it all until the next major functional release, so we sneaked this out the door.<br />&nbsp;<br />So far it&rsquo;s been impressive and there has been a marked increase in downloads and sign-ups. &nbsp;<br />&nbsp;<br />A few people have asked me, &ldquo;What&rsquo;s the point in NoodleBoard? Isn&rsquo;t it just costing you money?&rdquo;<br />&nbsp;<br />And, well, yeah, it is. But not much, what it is doing however is proving some very interesting points...<br />&nbsp;<br />Firstly, the server side of NoodleBoard is running on a virtualized installation of Fedora Core Linux (i.e. a shared server), it is written in J5EE (EJB3) and it all sits inside a JBoss 4.0.x server. And I&rsquo;ve not had to reboot it once since it launched. &nbsp;<br />&nbsp;<br />I&rsquo;ve redeployed the entire server application a couple of times, but the JBoss deployer is extremely robust and I doubt anyone even noticed (and no, it&rsquo;s not because no-one uses it :)<br />&nbsp;<br />Secondly, I have learned a lot about selling (well giving away) software and support to end-users. As a consultant I&rsquo;m all too used to finding solutions to, often in-house, business problems and really letting the client deal with the running of things. Now, I&rsquo;m getting emails and even the occasional call about all sorts from all kinds of users - most (thankfully) are grateful and pleasant, a few are not. &nbsp;<br />I try and reply to them all with the kind of reply that I would expect.<br /><br />Thirdly, marketing has become an interest of mine and it&rsquo;s up there alongside version control systems and design patterns... I&rsquo;m finding it fascinating, especially how quickly posts on blogs tend to cascade down and directly affect download rates, even on a small project like this. &nbsp;<br />&nbsp;<br />I suppose the one thing I&rsquo;ve learned since launching is that there&rsquo;s still a lot left to learn. I think that being constantly reminded this is worth the bandwidth fees.]]></content:encoded></item><item><title>Tackling complexity with crayons</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-04-11T17:19:48+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/b89235386408ed5fc64ed5eb2a3dcae8-3.html#unique-entry-id-3</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/b89235386408ed5fc64ed5eb2a3dcae8-3.html#unique-entry-id-3</guid><content:encoded><![CDATA[ur team has just finished implementing a large workflow system using jBPM as a BPM engine. &nbsp;It was, for all of us I think, our first brush with Graph Oriented Programming (GOP) and a couple of interesting things fell out of it.<br />&nbsp;<br />Firstly, GOP has the beautifully neat side effect of handling state for you, both in a macro sense (think workflow) and a micro one (think page-flow). This has the knock on effect of removing a lot of complexity from the application - no more figuring out what to do next from the current context (or lack of it).<br />&nbsp;<br />The approach we took when designing the application was to model each task in the workflow as a separate atomic use-case, each one implemented using an appropriate mechanism (in our case, dispatchers/Session Beans) but with the slight difference that at the end of each use-case we signal to the process that the current task has ended. &nbsp;<br />&nbsp;<br />By doing this we effectively decoupled the process flow from the task implementation in all but a minority of cases.<br />&nbsp;<br />But this is cool decoupling. &nbsp;Not just abstracting out application tiers for the sake of it - we could actually change and deploy a new process on the fly without modifying the code.<br />&nbsp;<br />Shall I say that again? &nbsp;We could actually change and deploy a new process on the fly -<br />&nbsp;<br />Without.<br />Modifying.<br />The.<br />Code.<br />&nbsp;<br />Oh. Did I mention that jBPM allows you to deploy multiple versions of the same process?<br />&nbsp;<br />No?<br />&nbsp;<br />Well, it isn't quite true but it's close. Once a new process graph is deployed all new instances of the process that are started follow the new graph, existing ones continue down the path of the graph that was in place when they started. &nbsp;<br />&nbsp;<br />Another thing we noticed is how immediately everyone grasped the concept of modeling process flow. &nbsp;For once we were using a modeling paradigm that 'ordinary users' could join in with (be prepared to allow some deviation from the standard UML notation). A lot of paper was harmed in the making of the system, but given the price of scrap paper I think it was worth it.]]></content:encoded></item><item><title>Five NoodleBoard Facts</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-03-28T17:19:12+01:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/6556fdccc41ea34960ea0a171bdf6b74-2.html#unique-entry-id-2</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/6556fdccc41ea34960ea0a171bdf6b74-2.html#unique-entry-id-2</guid><content:encoded><![CDATA[I thought it might be fun to publish a few facts about our OS X Dashboard Widget NoodleBoard.<br />&nbsp;<br />1. There are just shy of a thousand registered boards being shared by about three times as many users.<br />&nbsp;<br />2. This equates to about 1GB per week of board data<br />&nbsp;<br />3. Two percent of requests come to us via Apple Computer Inc. This actually makes them our number one user just ahead of Southwestern Bell and a bunch of US ISPs.<br />&nbsp;<br />4. The average board size is about 3k when encrypted<br />&nbsp;<br />5. Our busiest hour of the day is 2200 GMT<br />&nbsp;<br />I&rsquo;m currently working with some self-volunteered beta testers on a new version of the widget which should be out in the next week or so. &nbsp;]]></content:encoded></item><item><title>Damage Limitation Patterns</title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-03-19T17:18:24+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/a5df41b71e2bfa0d4e1ec71b364de2c1-1.html#unique-entry-id-1</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/a5df41b71e2bfa0d4e1ec71b364de2c1-1.html#unique-entry-id-1</guid><content:encoded><![CDATA[It's a fact that there are certain systems you can implement to improve the chances of a software project succeeding, Joel Spolsky lists 12 in his essay 'The Joel Test: 12 steps to better code'<br />&nbsp;<br />What I want to talk about here is how occasionally, one or more of your systems is going to break under the strain. &nbsp;In an ideal world this shouldn't happen and possibly wouldn't if you ran your own company (like Joel does), but in the harsh realities of the market people do unusual and sometimes stupid things such as fixing a bug in the wrong branch (or worse on a live server) and without an associated bug report filed anywhere.<br />&nbsp;<br />Whilst everyone knows that this is a bad idea, sometimes the pressure on developers from other influences can be immense and not everyone's main motivation is to have properly working, well designed software. &nbsp;Managers, for example, often take on new hires simply because they have the budget in place today and might not in the future. For them having a big team is more important than having an effective one. This is not always necessarily a bad thing (although it usually is) but merely an example of where working, well designed software is not the primary consideration.<br />&nbsp;<br />So, something in your perfect software factory breaks and it's almost always going to happen at a time of great stress, perhaps in the week before a major release, and no one really has the time to fix it at the moment. Around this time you'll likely hear people saying things like, 'What's the point in using CVS it can't cope with such and such a thing.' and 'I've never seen one of these systems work properly in the real world.' &nbsp;<br />&nbsp;<br />Don't lose faith. &nbsp;<br />&nbsp;<br />I've seen this happen so many times that I'm coming round to believe that the point of these systems actually is to fail. &nbsp;Thinking of them as barricades holding back the hordes of chaos is probably a good position to adopt. A few barriers might fall and you can put them back to normal after crazy week is over &nbsp;(and the hordes are off planning their next assault - I mean &lsquo;project&rsquo;), but imagine the state you'd be in if your entire project ran like that from beginning to end. &nbsp;<br />&nbsp;<br />Striving for a sane build environment is a bit like painting the Forth Bridge, it's always only half way done and the other half looks like crap but without trying the bridge would have fallen down long ago.]]></content:encoded></item><item><title>Coast Guard Use RunningTime&#x21;&#xa; </title><dc:creator>richy@wiredupandfiredup.com</dc:creator><category>Work</category><dc:date>2006-02-27T17:15:22+00:00</dc:date><link>http://wiredupandfiredup.co.uk/blog/files/18c3fa023774ecfdf84e27438790c917-0.html#unique-entry-id-0</link><guid isPermaLink="true">http://wiredupandfiredup.co.uk/blog/files/18c3fa023774ecfdf84e27438790c917-0.html#unique-entry-id-0</guid><content:encoded><![CDATA[I wanted to kick off the new blog with some gripe about how businesses don&rsquo;t &lsquo;get it&rsquo; or some controversial opinion on, say, how kids these days don&rsquo;t understand pointers properly but, instead, this is totally cool...<br />&nbsp;<br />A couple of days ago I received the following email from a member of the Australian Volunteer Coast Guard Association  -<br />&nbsp;<br />&ldquo;I'm not managing a race car but the application is great for the complex maintenance schedules of a volunteer rescue boat. I am very excited. I was going to write a database to do this stuff but you guys have saved me.<br />&nbsp;<br />And given that we pay for the boat, rescue equipment and fuel we use to rescue our local boaties the price of your service is fantastic.<br />&nbsp;<br />Thank you for building a great on-line app.&rdquo;<br />&nbsp;<br />It was always in the back of my mind that this application would be useful for a lot more than racing cars but WOW!<br />&nbsp;<br />Hearing this kind of news is always exciting and having grown up by the coast myself I&rsquo;m really pleased to get this kind of feedback.]]></content:encoded></item></channel>
</rss>