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

<channel>
	<title>Ben Hughes &#187; Programming</title>
	<atom:link href="http://www.benrhughes.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.benrhughes.com/blog</link>
	<description>Photography, Programming and other things beginning with P</description>
	<pubDate>Sat, 04 Sep 2010 08:43:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using Google Forms to create a simple iPhone app</title>
		<link>http://www.benrhughes.com/blog/2010/06/using-google-forms-to-create-a-simple-iphone-app/</link>
		<comments>http://www.benrhughes.com/blog/2010/06/using-google-forms-to-create-a-simple-iphone-app/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 03:51:04 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[html5]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=586</guid>
		<description><![CDATA[To help manage and plan the cycling clothes I need to wear through the Canberra winter, I decided to create an iPhone app. For a lot of reasons I decided to use HTML5 and some trickery rather than create a native app. The idea of the app is to record basic weather into, what I [...]]]></description>
			<content:encoded><![CDATA[<p>To help manage and plan the cycling clothes I need to wear through the Canberra winter, I decided to create an iPhone app. For a lot of reasons I decided to use HTML5 and some trickery rather than create a native app. The idea of the app is to record basic weather into, what I wore, and how hot or cold I was. I planned to look into HTML5 offline data storage etc, but realised that Google Forms would do most of the work for me, if I was happy to live without offline capability.</p>
<p>Forms is so simple it&#8217;s not worth explaining. Once you&#8217;ve set a form up, it gives you a URL to access it from, and even the iframe code to embed it into an HTML page. And that&#8217;s just what I did.</p>
<p>Below is the code. You can seen I&#8217;m using a viewport and some Apple-specific meta tags. These allow you to &#8216;install&#8217; the app by pressing the &#8220;+&#8221; button in Safari and choosing &#8221; Add to Home screen&#8221;. You then get the icon you specified in the meta tag, which the iPhone kindly rounds and beautifies for you. When you launch the app, it opens in it&#8217;s own window, rather than in Safari. There&#8217;s no address bar or browser navigation: it just looks like an app.</p>
<table border="0">
<tbody>
<tr>
<td>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;html&gt; 
&lt;head&gt; 
	&lt;title&gt;Cycling clothes&lt;/title&gt; 
	&lt;meta name=&quot;viewport&quot; 
		content=&quot;user-scalable=no, 
		width=device-width, 
		initial-scale=1.0, 
		maximum-scale=1.0&quot;/&gt; 
	&lt;meta name=&quot;apple-mobile-web-app-capable&quot; 
		content=&quot;yes&quot; /&gt; 
	&lt;meta name=&quot;apple-mobile-web-app-status-bar-style&quot; 
		content=&quot;black&quot; /&gt; 
	&lt;link rel=&quot;apple-touch-icon&quot; href=&quot;icon.png&quot;/&gt; 
	&lt;style type=&quot;text/css&quot;&gt; 
		body{ margin: 0px;}
	&lt;/style&gt; 
&lt;/head&gt; 
&lt;body&gt; 
&lt;iframe 
	src=&quot;yourform&quot; 
	width=&quot;100%&quot; height=&quot;100%&quot; 
	frameborder=&quot;0&quot; marginheight=&quot;0&quot; 
	marginwidth=&quot;0&quot;&gt;
Loading...&lt;/iframe&gt; 
&lt;/body&gt; 
&lt;/html&gt;</pre></div></div>

</td>
<td><img title="photo-2" src="http://www.benrhughes.com/blog/wp-content/uploads/2010/06/photo-2.jpg" alt="photo-2" width="250" margin="5"/></td>
</tr>
<tr></tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/06/using-google-forms-to-create-a-simple-iphone-app/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HTML5 iPhone app: Password Generator</title>
		<link>http://www.benrhughes.com/blog/2010/05/html5-iphone-app-password-generator/</link>
		<comments>http://www.benrhughes.com/blog/2010/05/html5-iphone-app-password-generator/#comments</comments>
		<pubDate>Sun, 30 May 2010 12:49:23 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[html5]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/2010/05/html5-iphone-app-password-generator/</guid>
		<description><![CDATA[This hardly counts and creating something, as I&#39;ve just taken Nic&#39;s password generator and made it offline-able. But if you&#39;d like an iPhone app for generating passwords, you can get it here.
  Posted via email   from Ben Hughes&#8217; Stream  

]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>This hardly counts and creating something, as I&#39;ve just taken <a href="http://www.angel.net/~nic/passwd.html">Nic&#39;s password generator</a> and made it offline-able. But if you&#39;d like an iPhone app for generating passwords, you can get it <a href="http://benrhughes.com/password/">here</a>.
<p style="font-size: 10px;">  <a href="http://posterous.com">Posted via email</a>   from <a href="http://stream.benrhughes.com/html5-iphone-app-password-generator">Ben Hughes&#8217; Stream</a>  </p>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/05/html5-iphone-app-password-generator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The iPad is not the end of geeks</title>
		<link>http://www.benrhughes.com/blog/2010/04/the-ipad-is-not-the-end-of-geeks/</link>
		<comments>http://www.benrhughes.com/blog/2010/04/the-ipad-is-not-the-end-of-geeks/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 03:57:03 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[ipad]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=563</guid>
		<description><![CDATA[Cory Doctorow has a great article on BoingBoing about what&#8217;s wrong with the iPad, philosophically rather than technically. I&#8217;m very sympathetic to his viewpoint, but it ignores some crucial points.
The iPad will not replace personal computers, locking the world into a Jobs-controlled nightmare. The hardware tweaking culture is as healthy as its ever been - see the traffic [...]]]></description>
			<content:encoded><![CDATA[<p>Cory Doctorow has a <a href="http://www.boingboing.net/2010/04/02/why-i-wont-buy-an-ipad-and-think-you-shouldnt-either.html" target="_blank">great article</a> on BoingBoing about what&#8217;s wrong with the iPad, philosophically rather than technically. I&#8217;m very sympathetic to his viewpoint, but it ignores some crucial points.</p>
<p>The iPad will not replace personal computers, locking the world into a Jobs-controlled nightmare. The hardware tweaking culture is as healthy as its ever been - see the <a href="http://trends.google.com/websites?q=www.overclockers.com.au,+www.hardocp.com&amp;geo=all&amp;date=all&amp;sort=0" target="_blank">traffic</a> stats for sites like <a href="http://www.overclockers.com.au" target="_blank">OCAU</a> and <a href="http://www.hardocp.com" target="_blank">Hard|OCP</a>. And the plethora of online information combined with modern languages make learning software development much easier than in the past. In many ways it has never been a better time to be a hardware or software geek.</p>
<p>Rather than replace PCs, the iPad will increase tech literacy. The target market is not the traditional PC user, but the same market that Google&#8217;s ChromeOS is going after: people who currently <em>don&#8217;t use computers</em>. There&#8217;s a secondary market of gadget geeks and fanboys (Apple and Google) who will also get on board, but they will use it as a second device. And while new users might stick with the AppStore apps for a while, eventually they&#8217;ll get into this Big Bad Internet thing. That is, the tech market will expand, and with it so will the opportunity to get into tech geekery.</p>
<p>The AppStore walled garden environment is an issue, but a temporary one. It frustrates me no end that I can&#8217;t write iPhone apps without a Mac, and that even if I could the app would have to pass through a gauntlet before it could see the light of day. But all that does is force me towards a more open platform - <em>the </em>open platform - the web. As on any device, web apps are limited compared to native apps, but that is slowly changing. Offline capability and native rich media support in HTML5 will mean that web apps can take a huge step towards their native counterparts.</p>
<p>So the app argument is a temporary distraction. On the PC there&#8217;s been a significant move towards the cloud in the last couple of years: why do people think the mobile/tablet scene will be any different? With their lower specs and constant wireless connectivity, these devices are <em>perfect</em> for cloud-based apps. While the platforms are maturing apps will be important, but that importance will shrink over time. Every device, particularly the lower end ones like phones, netbooks and tablets, will primarily be a window to the web. Google understands this. Microsoft understands this. Adobe understands this. Maybe Apple does, maybe they don&#8217;t: it doesn&#8217;t really matter. All that matters is that every device has a modern standards compliant web browser.</p>
<div>The iPad poses no threat to the health of geek culture. At worst it encourages some oldthink about media delivery to continue for a few years. At best it exposes more people to technology and gets more kids interested in it.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/04/the-ipad-is-not-the-end-of-geeks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programming Snobs</title>
		<link>http://www.benrhughes.com/blog/2010/03/programming-snobs/</link>
		<comments>http://www.benrhughes.com/blog/2010/03/programming-snobs/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 01:15:20 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=528</guid>
		<description><![CDATA[Something about the &#8220;non-programming programmer&#8221; articles gets under my skin. Sure, I can reverse a string without using in-built language features; hack together a recursive Fibonacci algorithm; and solve FizzBuzz. In fact I just did them to make sure. But it seems extremely limiting to use these as a screening process, particularly if they&#8217;re being [...]]]></description>
			<content:encoded><![CDATA[<p>Something about the &#8220;<a href="http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html" target="_blank">non-programming programmer</a>&#8221; articles gets under my skin. Sure, I can reverse a string without using in-built language features; hack together a recursive Fibonacci algorithm; and solve <a href="http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/" target="_blank">FizzBuzz</a>. In fact I just did them to make sure. But it seems extremely limiting to use these as a screening process, particularly if they&#8217;re being done on paper.</p>
<p>There&#8217;s an elitism, a snobbishness here that I don&#8217;t like.  There&#8217;s an assumption that people who don&#8217;t think in a certain way aren&#8217;t real programmers. </p>
<p>I had a working solution to each of the problems in a minute or so, but that included at least one incorrect iteration per problem. I know that the most efficient way for me to work is to roughly hack out the code then refine it. That&#8217;s one of the reasons I like <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">TDD </a>so much - it makes my iterations quicker and more accurate. Writing code on paper is something I&#8217;d probably not enjoy, even for these simple examples. Rather than quickly iterate, I&#8217;d have to plan up front. Which of course I <em>can</em> do, but it&#8217;s sub-optimal. </p>
<p>If writing code is going to be a part of the interview process, it should be done in whichever IDE the applicant is comfortable with. But even then it should only be one factor in  the evaluation. Even for a straight up code monkey job, a developer&#8217;s capacity to learn, explore and communicate are at least as important as how quickly they can solve trivial puzzles. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/03/programming-snobs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Starting with VSoft</title>
		<link>http://www.benrhughes.com/blog/2010/02/starting-with-vsoft/</link>
		<comments>http://www.benrhughes.com/blog/2010/02/starting-with-vsoft/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 23:35:26 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[career]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=514</guid>
		<description><![CDATA[
I concluded my recent navel gazing by deciding to find the kind of career that really interested me. After a little thought it was obvious that, without an inordinate amount of effort, it wouldn&#8217;t be possible to find what I was after at the ABS. So for the first time since graduating from Uni, I [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>I concluded my recent<a href="/blog/2009/12/a-fork-in-the-road/"> navel gazing</a> by deciding to find the kind of career that really interested me. After a little thought it was obvious that, without an inordinate amount of effort, it wouldn&#8217;t be possible to find what I was after at the ABS. So for the first time since graduating from Uni, I started seriously looking for a job.</p>
<p>I was looking for positions that matched my experience but eventually it clicked that I needed to look for the job I wanted, not necessarily the one that I was best suited to on paper. I forced myself to take the time to refine my rough career goals and from there my options really opened up. The number of job listings to trawl through was dramatically cut and I had a clear criteria to assess the ones that were left. I sent my resume into a few places, had a couple of interviews and put myself on some contracting lists in case I couldn&#8217;t find a permanent position.</p>
<p>The first interview I had was with VSoft, the small Canberra software company that makes <a href="http://www.finalbuilder.com" target="_blank">FinalBuilder</a>. It was very laid back and informal and I immediately had a good feeling. The work matched what I was looking for and the environment couldn&#8217;t be more different from the ABS: a small, non-hierarchical company with a specific focus. And they score pretty well on the <a href="http://www.joelonsoftware.com/articles/fog0000000043.html" target="_blank">Joel Test</a> too.</p>
<p><a href="http://www.joelonsoftware.com/articles/fog0000000043.html"></a></p>
<p><a href="http://www.joelonsoftware.com/articles/fog0000000043.html"></a></p>
<p>I had a few other interviews lined up, but when Vincent offered me the VSoft job it didn&#8217;t take me long to accept. So starting on 1 March I&#8217;ll be a senior .NET developer at VSoft, getting up to my neck in ASP.NET MVC. And I can&#8217;t wait <img src='http://www.benrhughes.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p><a href="http://www.joelonsoftware.com/articles/fog0000000043.html"> </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/02/starting-with-vsoft/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Best System</title>
		<link>http://www.benrhughes.com/blog/2010/02/the-best-system/</link>
		<comments>http://www.benrhughes.com/blog/2010/02/the-best-system/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 07:42:03 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/2009/12/the-best-system/</guid>
		<description><![CDATA[Chase Jarvis has recently driven home the old addage that the best camera is the one you have with you. For a long time I&#8217;ve been saying something similar about exercise: the best routine is the one you do regularly.
The underlying message is that its better to execute something imperfectly than to not execute at [...]]]></description>
			<content:encoded><![CDATA[<p>Chase Jarvis has recently driven home the old addage that the best camera is the one you have with you. For a long time I&#8217;ve been saying something similar about exercise: the best routine is the one you do regularly.</p>
<p>The underlying message is that its better to execute something imperfectly than to not execute at all. Or to state it more simply: delivery matters.</p>
<p>It&#8217;s a constant frustration to me how many people don&#8217;t give enough weight to delivery. They feel that it&#8217;s just one of the many requirements of a project, along with proper architecture, project management, reporting, testing and documentation. While all of those things are important, and often aid the production process, they don&#8217;t make a damn bit of difference if you don&#8217;t deliver a system that meets the core business need.</p>
<p>For a lot of &#8217;successful&#8217; projects these important, though secondary, aspects are missing. And because we agree that they are important, there is a tendancy to over-inflate their importance in an attempt to ensure that they are done in the future. While this is admirable, it&#8217;s unrealistic. What it doesn&#8217;t consider is how many projects had all these things in place, but never saw the light of day.</p>
<p>Often you need to take short term productivity hits to ensure long term viability. Focusing on delivery doesn&#8217;t mean that you can&#8217;t, or shouldn&#8217;t, improve processes. But you have to do it whilst still delivering, even if it&#8217;s at a slower rate.</p>
<p>A perfectly designed, archtected, managed and tested system is worse than useless to your clients if it doesn&#8217;t help them meet their business needs.</p>
<p>So please keep striving for improvement, but remember: the best system is the one you actually deliver.</p>
<p style="font-size: 10px;"><a href="http://posterous.com">Posted via email</a> from <a href="http://stream.benrhughes.com/the-best-system">Ben&#8217;s Stream</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/02/the-best-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Create a multi-column Twitter client with 12 lines of HTML</title>
		<link>http://www.benrhughes.com/blog/2010/01/create-a-multi-column-twitter-client-with-12-lines-of-html/</link>
		<comments>http://www.benrhughes.com/blog/2010/01/create-a-multi-column-twitter-client-with-12-lines-of-html/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 00:18:03 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/2010/01/create-a-multi-column-twitter-client-with-12-lines-of-html/</guid>
		<description><![CDATA[
A while ago I switched from Tweetdeck to TwitHive for all my desktop Twitter usage. It has a lot of advantages, like being completely web-based so you can take your lists/groups with you, and you don&#8217;t have to install anything to use it. However, recently I&#8217;ve noticed more and more that TwitHive isn&#8217;t picking up [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://posterous.com/getfile/files.posterous.com/benrhughes/J5fQVKmEF1jcyfGaL2seNVx1CH1CT1Jk0QY5P80O82h37xsrYklFeU1nc6bY/snap2.gif"><img src="http://posterous.com/getfile/files.posterous.com/benrhughes/FEhZCGXfK53tW6ToEv443V5edauI7Urg9LKyiCnEHyYuEE65GPDk9JSEGkJO/snap2.gif.scaled.500.jpg" alt="" width="500" height="363" /></a></p>
<p>A while ago I switched from <a href="http://www.tweetdeck.com" target="_blank">Tweetdeck </a>to <a href="http://www.twithive.com" target="_blank">TwitHive </a>for all my desktop Twitter usage. It has a lot of advantages, like being completely web-based so you can take your lists/groups with you, and you don&#8217;t have to install anything to use it. However, recently I&#8217;ve noticed more and more that TwitHive isn&#8217;t picking up all @replies, which is sort of a deal breaker. This is apparently due to a bug in the Twitter search API, but knowing that doesn&#8217;t really help me.</p>
<p>I&#8217;ve been using <a href="http://dabr.co.uk" target="_blank">Dabr </a>as my mobile Twitter client for a long time, and it&#8217;s awesome. Rock solid, (mildly) customisable and constantly being improved. I often wish that Dabr would put together a multi-column web-based client aimed at desktop users. In the mean time, I&#8217;ve decided to hack (and really, I mean hack) something together. So, here it is in all its glory:</p>
<pre>
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Twitter&lt;/title&gt;
&lt;meta http-equiv=&quot;refresh&quot; content=&quot;300&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
         &lt;iframe src=&quot;http://dabr.co.uk/&quot; width=&quot;300&quot; height=&quot;100%&quot;&gt;&lt;/iframe&gt;
         &lt;iframe src=&quot;http://dabr.co.uk/replies&quot; width=&quot;300&quot; height=&quot;100%&quot;&gt;&lt;/iframe&gt;
         &lt;iframe src=&quot;http://dabr.co.uk/lists/benrhughes/rl&quot; width=&quot;300&quot; height=&quot;100%&quot;&gt;&lt;/iframe&gt;
         &lt;iframe src=&quot;http://dabr.co.uk/lists/benrhughes/dev-tech&quot; width=&quot;300&quot; height=&quot;100%&quot;&gt;&lt;/iframe&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>The design and implementation took literally as long as typing the text&#8230; not a lot of thought or polish here folks! The main trick is to log into Dabr in one column then refresh the page. Obviously you&#8217;ll need to change the hard-coded &#8216;column&#8217; contents to be whatever you want. And you could probably do a lot to make it look nicer, if you could be bothered.</p>
<p style="font-size: 10px;"><a href="http://posterous.com">Posted via email</a> from <a href="http://stream.benrhughes.com/create-a-multi-column-twitter-client-with-12">Ben Hughes&#8217; Stream</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2010/01/create-a-multi-column-twitter-client-with-12-lines-of-html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A fork in the road</title>
		<link>http://www.benrhughes.com/blog/2009/12/a-fork-in-the-road/</link>
		<comments>http://www.benrhughes.com/blog/2009/12/a-fork-in-the-road/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 14:48:37 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[career]]></category>

		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=453</guid>
		<description><![CDATA[I foreshadowed this post almost a year ago when I wondered aloud about what I really liked doing. The thoughts that were starting to form then have melded with a year of experience, and I find myself at a rather definite decision point in my career.
According to my pay grade I&#8217;ve been a middle manager for [...]]]></description>
			<content:encoded><![CDATA[<p>I foreshadowed this post almost a year ago when I wondered aloud about <a href="/blog/2008/12/what-do-you-really-like-doing/">what I really liked doing</a>. The thoughts that were starting to form then have melded with a year of experience, and I find myself at a rather definite decision point in my career.</p>
<p>According to my pay grade I&#8217;ve been a middle manager for a few years now, but in reality I&#8217;ve been almost purely technical with the occasional bit of staff &amp; project management thrown in. I moved into my current team 6 months ago because I&#8217;m passionate about the work - it&#8217;s an area I&#8217;ve previously put a lot of energy into and I feel a strong connection with the business. The team is large enough to have a dedicated project manager and a senior tech lead, and the plan of course was that I would be the tech lead. But for various reasons I haven&#8217;t written any code (at work) for the last 6 months, which is easily the longest period since I finished uni 8 years ago. If I wasn&#8217;t writing code because I was too busy with deep technical designs maybe this wouldn&#8217;t be an issue, but in reality I&#8217;ve been spending most of my time on project management.<span style="background-color: #ffffff; "> And I have to admit, I&#8217;ve been enjoying it. I&#8217;ve learnt a lot of new skills and have started thinking at a different level, and having the ability to concentrate on what my team needs without worrying about my own technical delivery has been somewhat freeing.</span></p>
<p><span style="background-color: #ffffff; ">At this point I could go either way: pick up the management thread and see where it takes me; or push back into the technical and try and etch out a career for myself there. I&#8217;m only just starting to come to terms with the consequences of each of those options.<span id="more-453"></span></span></p>
<p><span style="background-color: #ffffff; ">On the management side, there&#8217;s a whole raft of things that worry me:</span></p>
<p style="padding-left: 30px; "><strong>The inability to create</strong> Of course you can be <em>creative</em>, but you don&#8217;t actually <strong>create</strong> anything as such. Your primary role is to provide an environment where the people who are actually creating can be productive. I feel a physical withdrawal, a visceral craving, to create. I try and supplement it by more out-of-work activities, particularly photography, blogging and small personal dev projects. But (and this is probably some warped internal viewpoint) they don&#8217;t hold the same credibility to me as what<em> </em>I do in my day job. Everyone&#8217;s an artist on the weekend - but it&#8217;s what you do with the majority of your time that counts.</p>
<p style="padding-left: 30px; "><strong>Skill decay </strong>IT moves quickly, and although I&#8217;m still &#8216;in the business&#8217; and have a good handle on what&#8217;s happening, I can almost feel the relevance of my skillset withering. In another 6 or 12 months I&#8217;ll be in a position that&#8217;s quite hard to recover from. I&#8217;ll have turned into one of those ex-techo middle managers who talks about the technology they used to use in their day, when they had to switch the whosit to make the whatchamacallit behave correctly.</p>
<p style="padding-left: 30px; "><strong>The risk of sucking </strong>I know I&#8217;m quite good technically. Not brilliant, but above average. But at management? Well, I can do it. I <em>might</em> even be pretty good at it with a bit more experience. But if I&#8217;m not, skill decay will have made it a very hard task to get back into technical work.</p>
<p style="padding-left: 30px; "><span style="background-color: #ffffff; "><strong>Pride </strong>Sometimes I think &#8220;when Jeremy&#8217;s older and wants to know what I do at work, will I be proud of my answer?&#8221;. Or even &#8220;could I explain it?&#8221;. It strikes me that when you try to explain middle management to a kid it sounds pretty lame. Senior management: no problem. Technical expert: also pretty easy. But a middle manager? &#8220;Well, my job is to help the creative people make the things that the people in charge want&#8221;. Wow, inspiring. You can almost hear the &#8220;but Daddy, why don&#8217;t the people in charge just tell the creative people what they want?&#8221;</span></p>
<p style="padding-left: 30px; "><span style="background-color: #ffffff; "><strong>Individuality </strong>Middle management doesn&#8217;t feel like a very niche thing to be doing. I like to be able to think of myself as more than just a cog in the machine, and unfortunately that&#8217;s generally how I think of middle management.</span></p>
<p><span style="background-color: #ffffff; ">On the up side there&#8217;s a clear career path, tons of options to work in tons of interesting places, and potentially tons of money. And pursuing a technical career is not without concerns either:</span></p>
<p style="padding-left: 30px; "><strong>Indefinite career path </strong>This seems to be a problem in a lot of places, particularly in the public service. The strongly hierarchical nature combined with all-of-government role statements for each pay grade doesn&#8217;t generally leave a whole lot of space to progress a technical career, unless you&#8217;re happy to stop at the team leader level. Realistically, I could spend the next 35+ years in essentially the same role, with my salary only increasing with the CPI. That feels like I&#8217;m running a white flag up the pole and saying &#8220;I&#8217;ve achieved everything I could by age 30, now I&#8217;m going to cruise&#8221;. Ugh. I may as well get myself put down.</p>
<p style="padding-left: 30px; ">This is being looked into as a result of the Gershon report, but the outcomes are a long way off. Of course, I could leave the public service, but I&#8217;m not entirely sure that would solve the problem either.</p>
<p style="padding-left: 30px; "><strong>Skill stagnation</strong> At some stage it seems that most technical people stop being interested in learning new technology. There&#8217;s some notable exceptions, but, just like my music tastes are stuck in the 90&#8217;s and early 00&#8217;s, it seems that a lot of people get technically suck with whatever platform they were using in their late 2o&#8217;s/early 30&#8217;s (ie, where I am now). It&#8217;s appears that at a certain point the new tech becomes so unlike what they&#8217;re used to that bridging the conceptual gap is very tricky.</p>
<p style="padding-left: 30px; "><strong>Leadership development</strong> I&#8217;ve learnt more about leading a team in the last few months than in the 7 previous years. It&#8217;s no longer something I do alongside my main role, it <em>is</em> my main role. With a technical career I would have to more actively concentrate on developing leadership skills, whereas with management (at least to me) it&#8217;s par for the course.</p>
<p style="padding-left: 30px; "><strong>Avoiding role creep </strong>Almost everyone I&#8217;ve talked to who has taken a tech leader role has told me something that aligns with my experience to date: slowly but surely you get sucked into the management aspect until it consumes all of your time.</p>
<p>On the up side, I&#8217;d get to create things. Meaningful, useful things. I&#8217;d get to learn new technologies, <em>invent</em> new technologies.</p>
<p><span style="background-color: #ffffff; ">To pull all that together, this is really a crisis of <strong>identity</strong>. How do I want to view my self, what do I see as a valuable use of my time? I think there is a honor in serving and leading a team, and I honestly enjoy it. I&#8217;d like to become really, really good at it. But I&#8217;m not sure if I can stomach doing it at the expense of my technical, my <em>creative</em> skill. In theory the &#8220;tech leader&#8221; role should suit me perfectly: highly technical alongside strong leadership. But so far I haven&#8217;t been able to make that theory a reality. </span></p>
<p>If I&#8217;m honest with myself, the choice is already made. Promotion, recognition and money mean little to me compared with being fulfilled day to day. Although I enjoy management, I&#8217;m a developer: it&#8217;s what I do. Maybe I&#8217;ll grow that into an architect-type role, but without a considerable technical aspect I&#8217;m just not sure I could enjoy work.</p>
<p>From here my plan is simple: firstly, do everything in my power to shift back into the technical role originally planned, whilst ensuring the project side is taken care of.  Secondly, find one of those rare people who have held on to their technical skill throughout their career and see if they&#8217;re willing to mentor me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2009/12/a-fork-in-the-road/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Surfacing ABS data as XML</title>
		<link>http://www.benrhughes.com/blog/2009/11/surfacing-abs-data-as-xml/</link>
		<comments>http://www.benrhughes.com/blog/2009/11/surfacing-abs-data-as-xml/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 11:34:01 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[AppEngine]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=427</guid>
		<description><![CDATA[The Australian Bureau of Statistics has a wealth of information available on its website, the vast majority released under a Creative Commons license. Unfortunately though the data is made available in Excel files which  makes  programmatic access a little painful.
To help get around this I&#8217;ve created a very simple service that converts time series data [...]]]></description>
			<content:encoded><![CDATA[<p>The Australian Bureau of Statistics has a wealth of information available on its website, the vast majority released under a Creative Commons license. Unfortunately though the data is made available in Excel files which  makes  programmatic access a little painful.</p>
<p><span style="background-color: #ffffff; ">To help get around this I&#8217;ve created a very simple service that converts time series data from the ABS into XML. It is deployed on AppEngine as <a href="http://absxml.appspot.com" target="_blank">absxml</a>.</span></p>
<p>It&#8217;s still in its early days - if you have a look on the Issues part of the <a href="http://code.google.com/p/absxml/" target="_blank">Project page</a> you&#8217;ll see some of the things that are yet to be done. However I&#8217;m hopeful that it will prove to be a useful stop-gap tool until the ABS starts releasing its data as XML.</p>
<p>absxml is open source, using the very open MIT license (read: do whatever you want) and the full source is available from the project page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2009/11/surfacing-abs-data-as-xml/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flex Dashboards</title>
		<link>http://www.benrhughes.com/blog/2009/07/flex-dashboards/</link>
		<comments>http://www.benrhughes.com/blog/2009/07/flex-dashboards/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 04:35:35 +0000</pubDate>
		<dc:creator>Ben Hughes</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[dashboard]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.benrhughes.com/blog/?p=387</guid>
		<description><![CDATA[Yesterday afternoon my client team presented their redesign work to their senior executive, and it was quite well received. One of the suggestions coming out of the meeting, and something we&#8217;d already thought a little bit about, was producing a dashboard for all the major indicators. Last night I had a bit of a play [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday afternoon my client team presented their redesign work to their senior executive, and it was quite well received. One of the suggestions coming out of the meeting, and something we&#8217;d already thought a little bit about, was producing a dashboard for all the major indicators. Last night I had a bit of a play and got something working, and today I&#8217;ve refined it a little.</p>
<p>The idea is that the user will be able to choose which graphs in the dashboard are displayed, and that the layout scales to fully utilise the screen real-estate. Flex has some built-in Container objects that have some smarts for this sort of thing but none quite did what I wanted. VBox and HBox are the closest, but only allow one column or row (respectively) of objects. Tile looked promising but they don&#8217;t dynamically scale particularly well. There&#8217;s a whole heap of dashboard libraries available online, but they seemed like overkill for what is really a fairly simple task.</p>
<p>In the end I went with a simple solution: two HBoxes in a VBox, and code to move objects in and out of the HBoxes based on how the objects need to be displayed.</p>
<p>Now that I&#8217;ve got the UI working fairly well, I need to go back and clean up a lot of the code to make the adding of graphs more dynamic (currently it&#8217;s all hard coded). Then without too much more work I think it would be possible to put the whole config for the dashboard into an XML doc, resulting in a dynamic, re-usable dashboard. Sweet.</p>
<p>It&#8217;s also rather nice that I didn&#8217;t need to change any of the graph-building code to get this to work - justifies some of the refactoring decisions I made recently.</p>
<p>I thought it might be nice if my dashboard allowed users to double-click on an graph and have it &#8216;maximised&#8217;, then double-click again to restore the previous view. That seems simple enough, and in the end it wasn&#8217;t too difficult. But for some reason I managed to spend way too long going about things all wrong. In part, it&#8217;s because Flex/ActionScript doesn&#8217;t have a particularly useful Hashtable equivalent, and in part because I was just overthinking things.</p>
<p>You can use an Object as an associative array for key/value pair type data, but that&#8217;s not particularly feature rich. In particular it&#8217;s difficult (or impossible) to get a key based on the object you have. When looking for workarounds I came across <a href="http://www.developmentarc.com/site/" target="_blank">DevelopmentArc</a>, a company that have released a library of useful stuff under the very open MIT license. Thankfully, this includes an implementation of a hashtable that&#8217;s quite nice (although reverse-lookups are still a little bit of work).</p>
<p>Here&#8217;s a screenshot of the dashboard so far. At a later date I&#8217;ll put up the most interesting bits of the code. Keep in mind the UI-gurus haven&#8217;t had a play with this yet, so it&#8217;s nowhere near pretty.</p>
<p><img class="alignnone size-full wp-image-389" title="dashboard" src="http://www.benrhughes.com/blog/wp-content/uploads/2009/06/dashboard.gif" alt="dashboard" width="680" height="415" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benrhughes.com/blog/2009/07/flex-dashboards/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
