<?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>Blog Random &#187; Web dev</title>
	<atom:link href="http://www.blograndom.com/blog/category/web-dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blograndom.com/blog</link>
	<description>Technology, website development, reviews and how-to's</description>
	<lastBuildDate>Wed, 09 Jun 2010 23:50:40 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PhpMyDiff v0.0.3</title>
		<link>http://www.blograndom.com/blog/2010/05/phpmydiff-v0-0-3/</link>
		<comments>http://www.blograndom.com/blog/2010/05/phpmydiff-v0-0-3/#comments</comments>
		<pubDate>Thu, 13 May 2010 21:39:18 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Web dev]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmydiff]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=338</guid>
		<description><![CDATA[I had to use PhpMyDiff at work today for this first time in a while and managed to fix up a few bugs. I&#8217;ve also implemented a new way of comparing databases if the tables use the MyISAM engine. Rather than having to grab every row from the table and compare row by row, mysql [...]]]></description>
			<content:encoded><![CDATA[<p>I had to use PhpMyDiff at work today for this first time in a while and managed to fix up a few bugs. I&#8217;ve also implemented a new way of comparing databases if the tables use the MyISAM engine. Rather than having to grab every row from the table and compare row by row, mysql has a CHECKSUM function, which quickly returns the table checksum. If the checksums are different the original process (of grabbing the data) comes back in to play but for databases with only a few table changes, its a huge speed increase.</p>
<p>Given time I&#8217;d like to introduce a similar row by row checksum, which should be easy enough for tables with a primary key. PhpMyDiff is still a long way from complete, but it may slowly get there!</p>
<p>Oh, it should also be possible to compare any database type supported by Zend_Db now, although I haven&#8217;t had the chance to test this at all. I&#8217;m sure something will break, as a few of my queries are probably MySQL specific!!</p>
<p>Feedback would be great if anyone gets the time&#8230; check it out at <a href="http://code.google.com/p/phpmydiff/">http://code.google.com/p/phpmydiff/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2010/05/phpmydiff-v0-0-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>phpMyDiff &#8211; Compare mysql database schema and data</title>
		<link>http://www.blograndom.com/blog/2010/02/phpmydiff-compare-mysql-database-schema-and-data/</link>
		<comments>http://www.blograndom.com/blog/2010/02/phpmydiff-compare-mysql-database-schema-and-data/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 18:34:11 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Googled]]></category>
		<category><![CDATA[Web dev]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=327</guid>
		<description><![CDATA[At work I&#8217;ve been maintaining a number of development areas and needed a way to compare database changes so that I didn&#8217;t overwrite a clients changes with my new/updated data from developing a new feature.
There seemed to be many ways of comparing the schema of two databases, but nothing to compare the changes in data [...]]]></description>
			<content:encoded><![CDATA[<p>At work I&#8217;ve been maintaining a number of development areas and needed a way to compare database changes so that I didn&#8217;t overwrite a clients changes with my new/updated data from developing a new feature.</p>
<p>There seemed to be many ways of comparing the schema of two databases, but nothing to compare the changes in data (unless I was looking in the wrong places). I decided to write something that would help me out and have released it publicly.</p>
<p>You provide the connection details of two databases (server, username, password, name),  select the tables you would like to compare and hit &#8220;Compare&#8221;. The resulting page is a list of all schema and data changes.</p>
<p>There are plans to style the application (at the moment its simple blocks and tables) and more importantly, allow you to select which differences you would like to apply before creating a .sql diff file.</p>
<p>If its something you&#8217;re interested in, trying check out the <a href="http://code.google.com/p/phpmydiff">google code page for the project</a>. Its currently in <strong>beta</strong> with better performance, stability and functionality to come!</p>
<h2><a href="http://code.google.com/p/phpmydiff" target="_blank">phpMyDiff at Google Code</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2010/02/phpmydiff-compare-mysql-database-schema-and-data/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RB Internal Links updated to 2.0.11</title>
		<link>http://www.blograndom.com/blog/2010/02/rb-internal-links-updated-to-2-0-11/</link>
		<comments>http://www.blograndom.com/blog/2010/02/rb-internal-links-updated-to-2-0-11/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 20:14:51 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Web dev]]></category>
		<category><![CDATA[rb-internal-links]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=313</guid>
		<description><![CDATA[We&#8217;ve had a number of translation files submitted for RB Internal Links, which is always great to see! They are all available on the new release, version 2.0.11.
One change worth mentioning for 2.0.11 is that the tinymce plugin no longer calls wp_head. This should fix a number of compatibility issues with other plugins! Download it [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve had a number of translation files submitted for RB Internal Links, which is always great to see! They are all available on the new release, version 2.0.11.</p>
<p>One change worth mentioning for 2.0.11 is that the tinymce plugin no longer calls wp_head. This should fix a number of compatibility issues with other plugins! Download it now at <a href="http://wordpress.org/extend/plugins/rb-internal-links/">WP Plugins: RB Internal Links</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2010/02/rb-internal-links-updated-to-2-0-11/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>RB Internal Links v2.0.7</title>
		<link>http://www.blograndom.com/blog/2009/11/rb-internal-links-v2-0-7/</link>
		<comments>http://www.blograndom.com/blog/2009/11/rb-internal-links-v2-0-7/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 00:43:19 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Web dev]]></category>
		<category><![CDATA[rb-internal-links]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=294</guid>
		<description><![CDATA[Just a quick post to let everybody know that RB Internal Links has been updated. This latest update is mainly bug fixes and also resolved some conflicts with other common wordpress plugins.
The change log:
v2.0.7 (17/11/2009)


Fixed conflict with WP-Super-Cache
Fixed encoding issues with preselected text, particularly foreign characters
Moved js and css for tinymce plugin to seperate files
Temporary [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to let everybody know that RB Internal Links has been updated. This latest update is mainly bug fixes and also resolved some conflicts with other common wordpress plugins.</p>
<p>The change log:</p>
<p><strong>v2.0.7 (17/11/2009)<br />
</strong></p>
<ul>
<li>Fixed conflict with WP-Super-Cache</li>
<li>Fixed encoding issues with preselected text, particularly foreign characters</li>
<li>Moved js and css for tinymce plugin to seperate files</li>
<li>Temporary work around for wp_enqueue_script with tiny_mce_popup.js</li>
<li>Post, page and category names printed using _e on tinymce plugin</li>
</ul>
<p>I&#8217;ve also updated the support forum to bbPress, after wasting an hour trying to delete spam posts from phpBB. Sorry to anyone that has posted on the old forum, hopefully bbPress will do a better job (it seems a little toooo simple). If you need help or just want to say hi, check out the <a href="http://blograndom.com/links/forum/">RB Internal Link support forums</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/11/rb-internal-links-v2-0-7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fade elements by mouse proximity using jQuery</title>
		<link>http://www.blograndom.com/blog/2009/10/fade-elements-by-mouse-proximity-using-jquery/</link>
		<comments>http://www.blograndom.com/blog/2009/10/fade-elements-by-mouse-proximity-using-jquery/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 22:07:31 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Web dev]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=283</guid>
		<description><![CDATA[I spruced up my personal &#8220;portal&#8221; last night, its got the same content as before, but I wanted to show off my JS skills a little. The site is at http://www.arronwoods.com, and contains links to my various sites and social network pages.
The idea was to scatter faded logos of the different websites around the page [...]]]></description>
			<content:encoded><![CDATA[<p>I spruced up my personal &#8220;portal&#8221; last night, its got the same content as before, but I wanted to show off my JS skills a little. The site is at <a href="http://www.arronwoods.com">http://www.arronwoods.com</a>, and contains links to my various sites and social network pages.</p>
<p>The idea was to scatter faded logos of the different websites around the page and as the user draws their mouse closer to the logo, the opacity increases and the logo gets brighter. I think it looks good, although I guess I could be confused with cheesy? I like it, I&#8217;m keeping it. :p</p>
<p>So, if you&#8217;d like to do something similar yourself I&#8217;d suggest you take the shortcut I discovered after coding up my own class, and just download this jquery plugin: <a href="http://srobbin.com/jquery-plugins/jquery-approach/">jQuery approach</a></p>
<p>But if you were interested in the logic behind it, this is the core of the code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">mousemove</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
elements.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> box <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>element<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> distance <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">sqrt</span><span style="color: #009900;">&#40;</span>Math.<span style="color: #660066;">pow</span><span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">pageX</span><span style="color: #339933;">-</span>element.<span style="color: #660066;">center</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> Math.<span style="color: #660066;">pow</span><span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">pageY</span><span style="color: #339933;">-</span>element.<span style="color: #660066;">center</span>.<span style="color: #660066;">y</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> distanceRatio <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>settings.<span style="color: #660066;">distance</span> <span style="color: #339933;">-</span> distance<span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> settings.<span style="color: #660066;">distance</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>distance <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> settings.<span style="color: #660066;">distance</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> percentage <span style="color: #339933;">=</span> distanceRatio <span style="color: #339933;">+</span> settings.<span style="color: #660066;">minimum</span><span style="color: #339933;">;</span>
box.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'opacity'</span><span style="color: #339933;">,</span> percentage<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>To save calculating the center on each mouse update, I calculate those on page load and store them on the element object using this code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">elements.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> box <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>element<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> offset <span style="color: #339933;">=</span> box.<span style="color: #660066;">offset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> center <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> x<span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>offset.<span style="color: #660066;">left</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>box.<span style="color: #660066;">width</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> y<span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>offset.<span style="color: #660066;">top</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>box.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
element.<span style="color: #660066;">center</span> <span style="color: #339933;">=</span> center<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/10/fade-elements-by-mouse-proximity-using-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>All things go!</title>
		<link>http://www.blograndom.com/blog/2009/09/all-things-go/</link>
		<comments>http://www.blograndom.com/blog/2009/09/all-things-go/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 09:24:07 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Truly random]]></category>
		<category><![CDATA[Web dev]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=272</guid>
		<description><![CDATA[Things have been extremely busy over the last few weeks, not had a chance to stay on top of the blog or the plugin. Thought I&#8217;d update everyone with some progress.
RB Internal Links
Not had a chance to update the plugin with any cool features yet. As far as I know, the only thing people are [...]]]></description>
			<content:encoded><![CDATA[<p>Things have been extremely busy over the last few weeks, not had a chance to stay on top of the blog or the plugin. Thought I&#8217;d update everyone with some progress.</p>
<h2>RB Internal Links</h2>
<p>Not had a chance to update the plugin with any cool features yet. As far as I know, the only thing people are waiting on is better language/encoding support. I will get round to this soon!</p>
<h2>Work</h2>
<p>Works been busy but fun, we&#8217;ve just launched a new product. It&#8217;s a <a href="http://www.copiacms.co.uk">financial content management system</a> (yes, shameless plug) that accepts fund data in a variety of formats and produces graphs and statistics etc. Its also bundled with the usual suite of CMS features, all tailored to the financial sector.</p>
<p>We&#8217;re also thinking of moving offices soon, got our eye on a very nice place not too far away. After this summer the lure of air conditioning in every office was just too tempting. It&#8217;s also got its own datacenter which will house our development server nicely!</p>
<h2>Play</h2>
<p>Just got back from a tranquil week away in the south of France. Got to take the new car with me, was a lot of fun! I took a picture on my phone one morning when we went to get breakfast, came out a little blurry.</p>
<div><div id="attachment_275" class="wp-caption none" style="width: 310px"><img class="size-medium wp-image-275" title="Volvo C30 in France" src="http://www.blograndom.com/blog/wp-content/uploads/2009/09/IMG00027-20090903-0719-300x225.jpg" alt="My C30 in Monfort" width="300" height="225" /><p class="wp-caption-text">My C30 in Monfort</p></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/09/all-things-go/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery plugin to disable text selection on elements</title>
		<link>http://www.blograndom.com/blog/2009/07/jquery-plugin-to-disable-text-selection-on-elements/</link>
		<comments>http://www.blograndom.com/blog/2009/07/jquery-plugin-to-disable-text-selection-on-elements/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 17:33:54 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Googled]]></category>
		<category><![CDATA[Web dev]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=268</guid>
		<description><![CDATA[It took my a while to find a bit of script that worked cross browser, but the jquery plugin at http://code.jdempster.com/jQuery.DisableTextSelect/ does the job!
When working on the UI of a web application text would often get selected by the browser incorrectly, for example while dragging an element, or clicking on an element with an onclick [...]]]></description>
			<content:encoded><![CDATA[<p>It took my a while to find a bit of script that worked cross browser, but the jquery plugin at <a href="http://code.jdempster.com/jQuery.DisableTextSelect/">http://code.jdempster.com/jQuery.DisableTextSelect/</a> does the job!</p>
<p>When working on the UI of a web application text would often get selected by the browser incorrectly, for example while dragging an element, or clicking on an element with an onclick event.</p>
<p>If you are using jquery already; download it, include it, then use:</p>
<p>$(&#8216;.elementsToDisableSelectFor&#8217;).disableTextSelect();</p>
<p>If you need this functionality without including the whole of jquery, take a look at the source code for the plugin. It&#8217;s only about 20 lines long. It uses a different method for Firefox and Internet Explorer, with a fallback for everything else but it should be easy to convert in to native JS or another javascript framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/07/jquery-plugin-to-disable-text-selection-on-elements/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Delay email to send at a specific time</title>
		<link>http://www.blograndom.com/blog/2009/04/delay-email-to-send-at-a-specific-time/</link>
		<comments>http://www.blograndom.com/blog/2009/04/delay-email-to-send-at-a-specific-time/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 19:33:54 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Web dev]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=254</guid>
		<description><![CDATA[I don&#8217;t have the answer yet, but I want to build a service that allows somebody to schedule email to be sent at a certain date or time. Most importantly, it should come from their existing email address and integrate with any existing email service.
The point of this post is to gauge any interest, either [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t have the answer yet, but I want to build a service that allows somebody to schedule email to be sent at a certain date or time. Most importantly, it should come from their existing email address and integrate with <em>any existing</em> email service.</p>
<p>The point of this post is to gauge any interest, either by comments or (more likely), hits from google. I&#8217;ll outline my plan for anyone interested.</p>
<p>An individual signs up to the service through a short two step form. Step 1 asks for their email address and a password to use with the site. On submission an email is sent to the address given to verify that the person has the &#8216;right&#8217; to email from that account.</p>
<p>Once confirmed there would be two ways to send email at a scheduled time from your own email address.</p>
<h2>Method 1</h2>
<p>Log in to the site and use a simple email form, similar to any other webmail service. One would be able to specify a list of recipients, the subject, message and any attachments followed by the all important<strong> </strong><em>send date</em>.</p>
<h2>Method 2</h2>
<p>Using your prefered email application, you compose the email and send it to an email address (delay@mail.com for example). In the body of that message are some parameters that tell the service who to send the email to and at what time. I was thinking something like:</p>
<p>(test@mail.com, test2@mail.com : 2pm 1st Decemeber 2007)</p>
<p>followed by the rest of the message. The beauty of this method is you can write the message in thunderbird, outlook, gmail or whatever else you use, and still delay the time the email is sent out to recipients. It&#8217;d even work from a blackberry.</p>
<h2>Concerns</h2>
<p>Put simply, spam and spoofing. There would be the verification step, but I wonder whether this would be possible to bypass? Plus the email would be sent from a server I hosted, not the domains reverse dns IP. Perhaps the mail would be frequently makred as spam?</p>
<blockquote><p>If this sounds like a service you&#8217;d like to use please leave a comment. I don&#8217;t want to spend too much time on it if I&#8217;m the only person that will use it! <img src='http://www.blograndom.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/04/delay-email-to-send-at-a-specific-time/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Selecting and uploading multiple files with one form element, wordpress style</title>
		<link>http://www.blograndom.com/blog/2009/04/selecting-and-uploading-multiple-files-with-one-form-element-wordpress-style/</link>
		<comments>http://www.blograndom.com/blog/2009/04/selecting-and-uploading-multiple-files-with-one-form-element-wordpress-style/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 18:20:54 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Googled]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web dev]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=214</guid>
		<description><![CDATA[We&#8217;re building a CMS at work and one of the requirements is a half decent file manager. Having seen how easy the wordpress upload tool is, we wanted to replicate it. Clients don&#8217;t want to sit there having to individually select and upload 50 files from a folder!
There are a number of options available to [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re building a CMS at work and one of the requirements is a half decent file manager. Having seen how easy the wordpress upload tool is, we wanted to replicate it. Clients don&#8217;t want to sit there having to individually select and upload 50 files from a folder!</p>
<p>There are a number of options available to do this:</p>
<ol>
<li>Using a flash (swf) file to perform the upload</li>
<li>Using a java applet to perform the upload</li>
<li>Using an HTML file input box to create a hidden array of file input boxes</li>
</ol>
<p>My issue with #3 is that you still have to individually select all the files in a folder before clicking upload. If you want to upload 50 files, thats 100 clicks and a case of RSI. So, I ignored #3 entirely.</p>
<p>Ideally,  I wanted solution #1, but I found a lot of answers to solution #3,  followed by #2. In the end I tried out four different solutions, all open source.</p>
<h2>SWFUpload</h2>
<p>By far my favourite, and the one we ended up using, this is the same tool wordpress use for their image upload plug</p>
<p>in. It is the most difficult to configure, but its got the most flexibility. SWFUpload uses a .swf file for the actual file uploads, which get posted to a script you specify in the setup. There are then a load of javascript callbacks that allow you to track the progress of files and update your page with the results. All in all, very impressed.</p>
<p>Check it out and download it here: <a href="http://www.swfupload.org">http://www.swfupload.org</a></p>
<p>There are also demos at: <a href="http://demo.swfupload.org">http://demo.swfupload.org</a></p>
<blockquote><p><strong>UPDATE: </strong>I stumbled across a blog post with a tutorial for creating your own flash file, incase you don&#8217;t</p>
<p>want to use SWFUpload. It looks pretty simple, so check it out: <a href="http://kevinmusselman.com/blog/2009/01/multiple-file-upload-using-flash/">Multiple File Upload Using Flash</a></p></blockquote>
<p><span id="more-214"></span></p>
<h2>jUpload</h2>
<p>jUpload was the first tool I tried, but couldn&#8217;t get the Firefox Java plugin working on my desktop (ubuntu) and so gave up. I&#8217;m sure the tool would have done the job, but I&#8217;d have needed to compile it and more importantly, it looks ugly.</p>
<p>Check it out at: <a href="http://jupload.sourceforge.net">http://jupload.sourceforge.net</a></p>
<h2>jQuery-transmit</h2>
<p>Had this worked for me, I think it could have been pretty good. It works on the same principal as SWFUpload, but with seemingly less features. The fact that it used jQuery made me want to use it.</p>
<p>Check it out at: <a href="http://code.google.com/p/jquery-transmit/">http://code.google.com/p/jquery-transmit/</a></p>
<h2>jQuery multiple file upload plugin</h2>
<p>This uses option #3 from the list above, and I couldn&#8217;t get it to work. It may have been something silly I was doing but, because it uses method #3, I didn&#8217;t spend too long trying to fix it.</p>
<p>If you&#8217;re still interested in trying it, check out: <a href="http://code.google.com/p/jquery-transmit/">http://www.fyneworks.com/jquery/multiple-file-upload/</a></p>
<p>In conclusion, if you have the knowledge and patience to set up SWFUpload, it really pays off. Once the file manager is done I&#8217;ll put up a demo, I&#8217;m unashamedly impressed. For now I&#8217;ve got a screenshot. Ignore how ugly it is (and the garish colours), I haven&#8217;t given it to the designers yet!</p>
<div id="attachment_218" class="wp-caption alignnone" style="width: 429px"><img class="size-full wp-image-218" title="SWFUpload demo" src="http://www.blograndom.com/blog/wp-content/uploads/2009/04/picture-2.png" alt="SWFUpload concept demo" width="419" height="578" /><p class="wp-caption-text">SWFUpload concept demo</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/04/selecting-and-uploading-multiple-files-with-one-form-element-wordpress-style/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP UK Conference 2009</title>
		<link>http://www.blograndom.com/blog/2009/02/php-uk-conference-2009/</link>
		<comments>http://www.blograndom.com/blog/2009/02/php-uk-conference-2009/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 20:33:39 +0000</pubDate>
		<dc:creator>Cohen</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web dev]]></category>
		<category><![CDATA[phpuk2009]]></category>

		<guid isPermaLink="false">http://www.blograndom.com/blog/?p=198</guid>
		<description><![CDATA[Late last night I returned, exhausted, from a great 2 days at the PHP UK conference in London. I&#8217;m not a pro at writing, let alone reviewing a conference but I thought I&#8217;d post some of my views of the day! To start with, summaries on the talks I saw:
The future&#8217;s so bright, I gotta [...]]]></description>
			<content:encoded><![CDATA[<p>Late last night I returned, exhausted, from a great 2 days at the PHP UK conference in London. I&#8217;m not a pro at writing, let alone reviewing a conference but I thought I&#8217;d post some of my views of the day! To start with, summaries on the talks I saw:</p>
<h2><a href="http://www.phpconference.co.uk/talks#ThefuturessobrightIgottawearshades">The future&#8217;s so bright, I gotta wear shades</a> (keynote)</h2>
<p>I&#8217;d never heard of Aral before, and as he cheesily ran across the stage at the beginning (to a silent reaction) I was a little worried! It turns out I&#8217;d judged him too soon, as the talk turned out to be really interesting. I think his point about remembering the first piece of code you ever wrote, and how excited you were about what it did, really hit home with a lot of the people in the audience. He finished with &#8220;make sure you&#8217;re always working on things that excite you&#8221; (paraphrased, I&#8217;ll try to find the actual quote).. which is something I really want to work towards, but sometimes you just need to pay the bills.</p>
<h2><a href="http://www.phpconference.co.uk/talks#ShardingArchitectures">Sharding Architectures</a></h2>
<p>I&#8217;d already heard Scott talk about the new features of 5.3 so thought I&#8217;d checking Sharding. Although I didn&#8217;t know what &#8220;Sharding&#8221; was before the talk, I was familiar with the technique, I just didn&#8217;t know what it was called! <img src='http://www.blograndom.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I thought the topic was delivered well, although some key points were missing from the explanation of consistent hashing.</p>
<h2><a href="http://www.phpconference.co.uk/talks#OfLambdaFunctionsClosuresandTraits">Of Lambda Functions, Closures and Traits</a></h2>
<p>Sebastien&#8217;s opening line: &#8220;I&#8217;d like to confirm that Marcus and I don&#8217;t hate each other&#8221;. I&#8217;d not heard any rumours but had always wondered what would happen if the SimpleTest and UnitTest creators had met up. Apparently nothing. <img src='http://www.blograndom.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  It was great to see some of the new PHP 5.3 features and examples of how to use them. I&#8217;m looking forward to the introduction of Lamba functions and closures but it sounds like there are a few useful (perhaps even key) related features that didn&#8217;t make it in to 5.3 in time that will hopefully get in to a future release soon. I couldn&#8217;t think of a use case for functors though?</p>
<h2><a href="http://www.phpconference.co.uk/talks#LivingwithFrameworks">Living with Frameworks</a></h2>
<p>Although Stuart tried to stay impartial, he is clearly a big fan of Symfony. :p I think 80% of the room were already familiar with frameworks, me included, but it was good to hear other people had experienced similar issues to us when implemeting a framework. Towards the end I got a little bored with the reading of the quotes from Will, James and Bob (or whatever their names were). The talk was pretty popular though, and I was the last one to get in.. which was lucky, as the alternative was PHP on Windows. Its not that I have a problem with Windows, I just won&#8217;t be switching any time soon.</p>
<h2><a href="http://www.phpconference.co.uk/talks#FlexandAIRforPHPprogrammers">Flex and AIR for PHP programmers</a></h2>
<p>Not a lot to say about this talk. Flex is something I&#8217;m interested in getting in to and so it was good to see Mihai creating an application live on stage. But I&#8217;m still not sure I had enough info to get me started. I&#8217;m gonna email him for one of those free books. <img src='http://www.blograndom.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2><a href="http://www.phpconference.co.uk/talks#SecurityCenteredDesignexploringtheimpactofhumanbehavior">Security-Centered Design — exploring the impact of human behavior</a></h2>
<p>I&#8217;d not heard of Chris before either, but he seems like an interesting guy and was pretty happy to openly share his opinion on pretty much anything. The talk didn&#8217;t get in to anything too specific, but shared some ideas on how to subtly let users know that they are on a secure site or, that they&#8217;re on the wrong site in the case of phishing. Either way I left the talk feeling I&#8217;d learnt something and had a good time.</p>
<p>Otherwise, the rest of the day was great. Lunch was tasty, events ran on time and everything seemed well organised. The only downside? I didn&#8217;t win anything. <img src='http://www.blograndom.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.blograndom.com/blog/2009/02/php-uk-conference-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
