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

<channel>
	<title>Standardista Kyd &#187; Concepts &amp; Projects</title>
	<atom:link href="http://blog.kyd.com.au/does/concepts-projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kyd.com.au</link>
	<description>News and critique of web standards and related tech.</description>
	<lastBuildDate>Fri, 02 Apr 2010 12:58:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Mobile Broadband for a Handset</title>
		<link>http://blog.kyd.com.au/mobile-broadband-for-a-handset/</link>
		<comments>http://blog.kyd.com.au/mobile-broadband-for-a-handset/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 00:32:20 +0000</pubDate>
		<dc:creator>Ash</dc:creator>
				<category><![CDATA[Concepts & Projects]]></category>
		<category><![CDATA[cc]]></category>

		<guid isPermaLink="false">http://blog.kyd.com.au/?p=717</guid>
		<description><![CDATA[Mobile data in Australia is exuberantly expensive, but with the advent of “mobile broadband” services the price is coming down somewhat. However if you&#8217;re looking to get mobile Internet on your existing handset you may be out of luck; the Australian telecos seem to have the unanimous opinion that Internet on a phone handset is [...]]]></description>
			<content:encoded><![CDATA[<p>Mobile data in Australia is exuberantly expensive, but with the advent of “mobile broadband” services the price is coming down somewhat. However if you&#8217;re looking to get mobile Internet on your existing handset you may be out of luck; the Australian telecos seem to have the unanimous opinion that Internet on a phone handset is a luxury, and will happily direct you to bundled plans running into the hundreds of dollars per month.</p>
<p>For someone who uses their handset primarily for Internet purposes, signing up for a fifty dollar phone contract just to get Internet on top of that is obscene. Three seem to have the most reasonable plans in this regard, allowing you to put “x-series” (data) packs on top of your monthly plan, but there&#8217;s still a vast discrepancy between data on an USB dongle and data on a handset.</p>
<h3>Using a Mobile Broadband SIM in a Normal Phone</h3>
<p>It&#8217;s a little known fact that you can swap the SIM card in your USB dongle with that of your phone.</p>
<p>This means you can use your &#8220;mobile broadband&#8221; data with your phone handset with very little difficulty. There are a few drawbacks to this approach: namely, the carriers don&#8217;t support it and will go out of their way to tell you it&#8217;s not possible. If you&#8217;re willing to defy your carrier and do it anyway, there&#8217;s a few things to know:</p>
<ul>
<li>You will need to go to the mobile carrier&#8217;s stall in a shopping centre to get a new SIM card. While newsagents and the like will sell you prepaid sim cards, they will most likely not have data services.</li>
<li>Not all providers will sell you a mobile broadband SIM without the hardware to go with it. Vodafone are notorious for this practise, and will tell you that you can&#8217;t buy a SIM card unless you buy the hardware or go on a lengthy contract. It may be possible to work around their limitation, but the sales person I dealt with was frustrating enough that I walked out of the store.</li>
<li>Three will happily sell you a SIM card if you tell them you have a compatible device.</li>
<li>Your mobile broadband <em>SIM comes with a new phone number</em>, usually printed on the front of the package. I have not been able to get any provider to port an old number across to a data service, although your mileage may vary.</li>
<li>Pre-paid data services generally <em>do not allow outbound phone calls</em>. Inbound calls work fine, but if you need to call out from a prepaid service, you will need to use a VoIP solution which can be unreliable over flaky 3G networks.</li>
</ul>
<p>I&#8217;ve been led to believe that some post-paid broadband services allow outbound calls, but I have not tested this yet.</p>
<h3>Compatibility Chart</h3>
<p>The following chart is designed to give you an overview of the level of service you can expect from each provider. I&#8217;ve only had experience with Three, as I wasn&#8217;t prepared to deal with Vodafone, but if you&#8217;ve had any luck with alternative providers, <em>please</em> leave your details and I&#8217;ll fill out this table over time.</p>
<table>
<caption>Compatibility of Providers with Broadband on Handsets</caption>
<thead>
<tr>
<th>Provider</th>
<th>Plan</th>
<th><abbr title="Will sell a SIM without hardware">SIM-only Sale</abbr></th>
<th>Outbound Calls</th>
<th>Number Porting</th>
</tr>
</thead>
<tbody>
<tr>
<td>Three</td>
<td>Pre-Paid</td>
<td>yes</td>
<td>no</td>
<td>no</td>
</tr>
<tr>
<td>Vodafone</td>
<td>Pre/Post Paid</td>
<td>no</td>
<td>?</td>
<td>?</td>
</tr>
<tr>
<td>Optus</td>
<td>Leave a Comment</td>
<td>?</td>
<td>?</td>
<td>?</td>
</tr>
<tr>
<td>Telstra</td>
<td>Leave a Comment</td>
<td>?</td>
<td>?</td>
<td>?</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.kyd.com.au/mobile-broadband-for-a-handset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concurrent PHP</title>
		<link>http://blog.kyd.com.au/concurrent-php/</link>
		<comments>http://blog.kyd.com.au/concurrent-php/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 00:34:58 +0000</pubDate>
		<dc:creator>Ash</dc:creator>
				<category><![CDATA[Concepts & Projects]]></category>
		<category><![CDATA[cc]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.kyd.com.au/?p=676</guid>
		<description><![CDATA[I&#8217;ve been working on a project that requires the processing of tens of thousands of tiny files. I&#8217;ve written a number of scripts to automate this process, but by far the most impressive (or so I thought) was a PHP script that could launch a number of rendering jobs at the same time. The benefit [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a project that requires the processing of tens of thousands of tiny files. I&#8217;ve written a number of scripts to automate this process, but by far the most impressive (or so I thought) was a PHP script that could launch a number of rendering jobs at the same time.</p>
<p>The benefit of this is that most computers have multiple cores per processor these days. This particular script was bottlenecked by the fact that the tools I was using weren&#8217;t optimised to run on more than one core at once.</p>
<pre><code>#/bin/sh
# Arguments are filename &amp; job number
echo Optimising $1 on thread $2
/usr/bin/mogrify -colors 32 -dither none $1
pngcrush $1 /tmp/pngcrush$2
mv /tmp/pngcrush$2 $1</code></pre>
<p>The solution was to launch two jobs at a time so that they could run side by side and utilise the full speed of both my cores. (Note: This code is wrong. <a href="#solution">Jump to the solution</a>.)</p>
<pre><code class="bad">$processes = array();

foreach($tiles as $tile){

	echo $tile."\n";

	// This is out mogrification/pngcrushing script.
	// Arguments are filename &amp; process number
	$processes[] = popen('/home/ash/Misc/Scripts/tileCrush.sh '.escapeshellarg($tile).' '.count($processes),'r');

	while(count($processes) &gt; 2){

		// Loop through each process
		for($i=0; $i &lt; count($processes) ; $i++){

			// Read the output
			fgets($processes[$i]);

			// Check if the output is finished, if so the process is finished.
			if(feof($processes[$i])){
				pclose($processes[$i]);

				// Remove the process from the array.
				array_splice(&amp;$processes,$i,1);

				// This is so we can print lots of numbers. <img src='http://blog.kyd.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
				$completedTile = $i;
			}
		}
	}
}</code></pre>
<p>This seemed to work fine, except I was noticing a lot of files failing with a &#8220;file not found&#8221; error. I couldn&#8217;t seem to work out what was going wrong until I looked at the output and saw that the script was getting all of the files muddled up.</p>
<p>Through a shameful oversight, I was passing a non-unique job ID  &#8212; <code>count($processes)</code> &#8212; to some processes, which meant the job would sometimes use it to clobber the work of another process. Essentially I was overwriting the wrong files because the second argument was subject to change as new jobs started and finished.</p>
<p>I&#8217;ve reworked the script to use an universally unique value throughout the entire session. I should have done this in the shell script, but it was nice to implement a progress bar at the same time.</p>
<h3 id="solution">Multi-Process PHP Scripting</h3>
<p>Here&#8217;s the final script which will launch multiple scripts, wait for them to finish, and continue until there are no parameters left.</p>
<p>Feel free to use it for your own nefarious purposes if you&#8217;d like.</p>
<dl>
<dt>$tiles</dt>
<dd>An array of filenames (or other parameters.)</dd>
<dt>$processes</dt>
<dd>An array containing references to each process that is launched. These will be created &amp; destroyed at run time.</dd>
<dt>while(count($processes) &gt; 2){</dt>
<dd>This tells the script the maximum number of processes allowed to run at any one time.</dd>
</dl>
<pre><code class="good">$processes = array();

$tilesTotal = count($tiles);

foreach($tiles as $tilesDone =&gt; $tile){

	// If this is a blank tile, let's just discard it.
	if(md5_file($tile) == '08108e1c241870ecbc5fe798ccd1229d'){
		unlink($tile);
		echo 'Blank tile, discarding.';
	}else{
		// This is out mogrification/pngcrushing script.
		// Arguments are filename &amp; process number
		$processes[] = <a href="http://php.net/manual/en/function.popen.php">popen</a>('/home/ash/Misc/Scripts/tileCrush.sh '.escapeshellarg($tile).' '.$tilesDone,'r');

		while(count($processes) &gt; 2){
			usleep(50000); // Sleep for .1 seconds.

			// Loop through each process
			for($i=0; $i &lt; count($processes) ; $i++){

				// Read the output. Note, fgets reads only one line and performs terribly here.
				fread($processes[$i],1024);

				// Check if the output is finished, if so the process is finished.
				if(feof($processes[$i])){
					pclose($processes[$i]);

					// Remove the process from the array.
					array_splice(&amp;$processes,$i,1);

				}
			}

		}

		echo "$tilesDone/$tilesTotal: $tile), done on process $completedTile\n";
	}
}</code></pre>
<p>I used the forum post <a href="http://webforumz.com/php/12595-multithreaded-php.htm">Multithreaded PHP</a>, as a reference for this project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kyd.com.au/concurrent-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desktop Metaphors</title>
		<link>http://blog.kyd.com.au/desktop-metaphors/</link>
		<comments>http://blog.kyd.com.au/desktop-metaphors/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 22:14:56 +0000</pubDate>
		<dc:creator>Ash</dc:creator>
				<category><![CDATA[Concepts & Projects]]></category>

		<guid isPermaLink="false">http://techtoucian.net/muse/2007/08/31/Desktop_Metaphors</guid>
		<description><![CDATA[I&#8217;m thinking of a desktop metaphor; See if you can guess it. I&#8217;ll bet you can&#8217;t, because it&#8217;s not the kind of thing you usually see or hear about. How about I just tell you anyway. Hot folders. We see this kind of things on web siter and forums all the time: a &#8220;hot topic&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m thinking of a desktop metaphor; See if you can guess it. I&#8217;ll bet you can&#8217;t, because it&#8217;s not the kind of thing you usually see or hear about. How about I just tell you anyway.</p>
<p><em>Hot folders</em>. We see this kind of things on web siter and forums all the time: a &#8220;hot topic&#8221; usually turns red, or gets progressively redder the more popular it becomes. Why can&#8217;t we have this in the Gnome desktop?</p>
<p>Today I was having catastrophic troubles keeping track of the massive hierarchy of work and personal data on my laptop and the plethora of network servers. I was performing mostly the same tasks, but each time I&#8217;d have to navigate through up to seven levels of metaphors. Menu, server, location, location, location; over and over.</p>
<p>You&#8217;d think that someone would start to remember after a while, but the point of an interface isn&#8217;t to force an user to think harder; it&#8217;s to guide an user doing what they want to do. If every time I went into a folder it &#8220;heated up&#8221;, soon enough I&#8217;d have a clear path to the locations I most frequently used.</p>
<p>In today&#8217;s example, I&#8217;d have my project&#8217;s documents in my home directory, and the actual project on the server emblazoned in burning red; outfitted with a little flame icon. I&#8217;d also have burned a path to &#8220;corporate branding&#8221;, and &#8220;web site notes&#8221; that wouldn&#8217;t have warmed up so far, but still easy enough to recognize from the plethora of other folders in my browser.</p>
<p>The problem as it stands is that it&#8217;s really mind-intensive, performing some of these overly repetitive tasks. There&#8217;s no readily accessibly bookmarks or semantically rich history for recently visited folders. I&#8217;d personally love a &#8220;tag cloud&#8221; for recently accessed files on my desktop.</p>
<p>Is anyone working on this kind of accessibility?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kyd.com.au/desktop-metaphors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Australian TV Channel Logos Again</title>
		<link>http://blog.kyd.com.au/australian-tv-channel-logos-again/</link>
		<comments>http://blog.kyd.com.au/australian-tv-channel-logos-again/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 17:25:50 +0000</pubDate>
		<dc:creator>Ash</dc:creator>
				<category><![CDATA[Concepts & Projects]]></category>

		<guid isPermaLink="false">http://techtoucian.net/muse/2007/03/04/Australian_TV_Channel_Logos_Again</guid>
		<description><![CDATA[Just because I&#8217;ve got so much time to do this kind of stuff in, I&#8217;ve done up a few extra Aussie TV channel logo icons. I wrote a few weeks ago about releasing my logo set as SVG, and from that, other people have come up with some really cool schemes. So I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>Just because I&#8217;ve got <em>so</em> much time to do this kind of stuff in, I&#8217;ve done up a few extra <a href="http://ash.ms/projects/channels/">Aussie TV channel logo icons</a>. I wrote a few weeks ago about releasing my logo set as SVG, and from that, other people have come up with some really cool schemes.</p>
<p>So I decided to take all that on-board, and make SVG versions of everyone else&#8217;s themes and release them for public consumption. There really wasn&#8217;t that much creativity involved on my part to be honest, but now there&#8217;s some really funky, scalable icons available.</p>
<p>Also, if you&#8217;re looking for a reliable system for grabbing Australian TV guides, check out <a href="http://svn.whuffy.com/">Shepherd</a>. Not only are people reporting great successes with it, it also offers a way to incorporate my logos automatically. Now, that&#8217;s what I call class.</p>
<p>So check out the icons, and as usual, if you make some awesome changes, get back to me and I&#8217;ll put them in the system.</p>
<p><img class="aligncenter" src="http://ash.ms/projects/channels/template.png" alt="Australian channel logos." width="450" height="181" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kyd.com.au/australian-tv-channel-logos-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desktop Two-Point-Oh</title>
		<link>http://blog.kyd.com.au/desktop-two-point-oh/</link>
		<comments>http://blog.kyd.com.au/desktop-two-point-oh/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 18:56:39 +0000</pubDate>
		<dc:creator>Ash</dc:creator>
				<category><![CDATA[Concepts & Projects]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[OpenDocument]]></category>

		<guid isPermaLink="false">http://techtoucian.net/muse/2006/12/30/Desktop_Two-Point-Oh</guid>
		<description><![CDATA[What the world really needs is a Web 2.0 Word Processor. I don&#8217;t mean something tacky and horrible that runs in the browser, but something that you can blog from. Something that organises your photos and sends them to Flickr. Something that lets you manage your personal web site, and something that doesn&#8217;t look like [...]]]></description>
			<content:encoded><![CDATA[<p>What the world really needs is a Web 2.0 Word Processor. I don&#8217;t mean something tacky and horrible that runs in the browser, but something that you can blog from. Something that organises your photos and sends them to Flickr. Something that lets you manage your personal web site, and something that doesn&#8217;t look like it&#8217;s fresh out of 1995.</p>
<p>I don&#8217;t care what anyone says, OpenOffice.org is ugly, it&#8217;s too slow, and handles like an ox. The interface is non-standard on any platform you care to run it on, and the only thing going for it is that it&#8217;s Free Software. Replicating the MS Orfice look is going beyond a joke especially on Linux where you&#8217;re dealing with an operating system that thrives on ingenuity.</p>
<p>Abiword is faster and lighter, and has a charming GTK interface that blends exceptionally with Gnome, to a lesser extent with KDE, and not at all with Windows. It has its own file format, only supports OpenDocument through a plugin, and has the greatest of interoperability troubles. It&#8217;s still my favourite word processor for typing up plain old text, because it&#8217;s small, fast, and pleasing.</p>
<p>There&#8217;s a whole handful of word processors, but the problem with most the offerings for any platform, is that they&#8217;re all designed for the corporate user. The person at home wants to express themselves with graphics, and share their creations. At the moment, all we&#8217;ve really got to interact with others are things like MSN and Myspace, both of which are horrible, proprietary, non-standard platforms that nobody can really build upon.</p>
<p>The &#8220;2.0&#8243; trend on the &#8216;net is something that I think has to be embraced on the desktop, to stop this nonsense about the &#8220;choice of operating system becoming obsolete&#8221;. Nobody wants to have to open their word processor or email client in their web browser, but they do want to be able to access their documents and email everywhere. What&#8217;s the solution, then?</p>
<p>The solution&#8217;s not really so simple, but eventually it will have to involve a person&#8217;s desktop following them seamlessly around via the Internet. I&#8217;m thinking web apps would be cute too; native to your operating system running like XUL apps do these days on Firefox. In the mean time it is too much to ask having a pleasant word processor that damn well supports open standards, starts in less than a second, and has XMLRPC support to publish posts to your blog?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kyd.com.au/desktop-two-point-oh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
