<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;Ak8ASX84fSp7ImA9WhRbEE8.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734</id><updated>2012-01-31T16:54:08.135Z</updated><category term="images" /><category term="media" /><category term="Analytics" /><category term="How To" /><category term="tools" /><category term="PS3" /><category term="NoScript" /><category term="gadgets" /><category term="strategy" /><category term="jetlag" /><category term="UI" /><category term="graphs" /><category term="GDI" /><category term="XAMPP" /><category term="Ajax" /><category term="REX" /><category term="Skype" /><category term="Webmaster Tools" /><category term="FontSoup" /><category term="empowerment" /><category term="RSS" /><category term="Chrome" /><category term="plugin" /><category term="Movable Type" /><category term="codec" /><category term="AddThis" /><category term="ABP" /><category term="email" /><category term="developer" /><category term="LYCOS" /><category term="Logic Express" /><category term="JSON" /><category term="Android" /><category term="ScreenGrab" /><category term="FeedBurner" /><category term="jQuery" /><category term="mysql" /><category term="php" /><category term="WordPress" /><category term="Ad Blocker" /><category term="CVS" /><category term="Web Developer" /><category term="goals" /><category term="screensaver" /><category term="Perl" /><category term="freeware" /><category term="OSX" /><category term="bounces" /><category term="Google" /><category term="TrackMania" /><category term="Maps" /><category term="Firefox" /><category term="Firebug" /><category term="SEO" /><category term="Friday" /><category term="Internet Explorer" /><category term="YSlow" /><category term="statistics" /><category term="traffic" /><category term="SVN" /><category term="measurable" /><title>Measurable Wins</title><subtitle type="html">My "idea bucket" as a resource for developers.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MeasurableWins" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="measurablewins" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/MeasurableWins" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FMeasurableWins" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry gd:etag="W/&quot;C0MGSXo6cSp7ImA9WhdWFEU.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-1204349262726818074</id><published>2011-09-08T12:30:00.000+01:00</published><updated>2011-09-08T12:30:28.419+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T12:30:28.419+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="Chrome" /><title>Syntax Highlighter Chrome Extension: Sight</title><content type="html">Last week a colleague introduced me to a handy Chrome Extension called &lt;a href="https://chrome.google.com/webstore/detail/epmaefhielclhlnmjofcdapbeepkmggh"&gt;Sight&lt;/a&gt; that allows syntax highlighting in your browser and "makes reading code on the browser a joy".&lt;br /&gt;
&lt;br /&gt;
After using it for few days I have to admit that it does make javascript a lot easier on the eye. It has optional line numbers and supports syntax for about 35 different languages.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://chrome.google.com/webstore/detail/epmaefhielclhlnmjofcdapbeepkmggh"&gt;
&lt;img border="0" src="http://1.bp.blogspot.com/enUIn3JF52_EXL8SAaQRLiidWkoyV7k75BdaoRIK2SYCXHYrlvID3K0HBoAFGwgBHeU1yMRNXg=s400-h275-e365" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
Sadly it doesn't support view-source highlighting, but apparently it's next on the to-do list and is still worth installing in it's current state.&lt;br /&gt;
&lt;br /&gt;
If you're using Chrome you can get the extension from here&amp;nbsp;&lt;a href="https://chrome.google.com/webstore/detail/epmaefhielclhlnmjofcdapbeepkmggh"&gt;https://chrome.google.com/webstore/detail/epmaefhielclhlnmjofcdapbeepkmggh&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-1204349262726818074?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Nxs79XSo0yo:WIDj404uDgo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Nxs79XSo0yo:WIDj404uDgo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Nxs79XSo0yo:WIDj404uDgo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Nxs79XSo0yo:WIDj404uDgo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Nxs79XSo0yo:WIDj404uDgo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Nxs79XSo0yo:WIDj404uDgo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Nxs79XSo0yo:WIDj404uDgo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Nxs79XSo0yo:WIDj404uDgo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/1204349262726818074/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2011/09/syntax-highlighter-chrome-extension.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/1204349262726818074?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/1204349262726818074?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2011/09/syntax-highlighter-chrome-extension.html" title="Syntax Highlighter Chrome Extension: Sight" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck8BQ3gyeip7ImA9WhZUEU0.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-4764405008308952436</id><published>2011-06-03T11:12:00.012+01:00</published><updated>2011-06-03T12:34:12.692+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-03T12:34:12.692+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>WordPress Form Helper Functions</title><content type="html">Setting the state of checkboxes, radio buttons and selected items in dropdown lists in html forms can become tiresome, so I was pleased to recently discover WordPress has some built-in helper functions. I've found these to be pretty handy in building admin forms for Wordpress plugins and hopefully they can save you some time too.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;checked( $checked, $current = true, $echo = true )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This function compares two given values (for example, a saved option vs. one chosen in a form) and, if the values are the same, adds the checked attribute to the current radio button or checkbox. This is essentially the same as comparing values with if(), but results in more concise code. The third parameter determines if the result is echoed or just returned which is handy if you are concatenating to a string, etc.&lt;br /&gt;&lt;br /&gt;This function has been defined since WordPress v1.0 and is documented &lt;a href="http://codex.wordpress.org/Function_Reference/checked"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;selected( $selected, $current = true, $echo = true )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This function is for use in dropdown form fields. Compares two given values (for example, a saved option vs. one chosen in a form) and, if the values are the same, adds the selected attribute to the current option tag. Again, the third parameter determines if the result is echoed or just returned which is handy if you are concatenating to a string, etc.&lt;br /&gt;&lt;br /&gt;This function has been defined since WordPress v1.0 and is documented &lt;a href="http://codex.wordpress.org/Function_Reference/selected"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;disabled( $disabled, $current = true, $echo = true )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This function compares two given values (for example, a saved option vs. one chosen in a form) and, if the values are the same, adds the disabled attribute to a form input field. Again, the third parameter determines if the result is echoed or just returned which is handy if you are concatenating to a string, etc.&lt;br /&gt;&lt;br /&gt;This function was not defined until WordPress v3.0 and is documented &lt;a href="http://codex.wordpress.org/Function_Reference/disabled"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;These functions are all located in  &lt;code&gt;wp-includes/general-template.php&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-4764405008308952436?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=QpPrQ3O-ox4:j3IjaxMWirM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=QpPrQ3O-ox4:j3IjaxMWirM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=QpPrQ3O-ox4:j3IjaxMWirM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=QpPrQ3O-ox4:j3IjaxMWirM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=QpPrQ3O-ox4:j3IjaxMWirM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=QpPrQ3O-ox4:j3IjaxMWirM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=QpPrQ3O-ox4:j3IjaxMWirM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=QpPrQ3O-ox4:j3IjaxMWirM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/4764405008308952436/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2011/06/wordpress-form-helper-functions.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/4764405008308952436?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/4764405008308952436?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2011/06/wordpress-form-helper-functions.html" title="WordPress Form Helper Functions" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEEFQ3w-fSp7ImA9WhZQGE8.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-3500049601789727521</id><published>2011-04-26T14:07:00.013+01:00</published><updated>2011-04-26T15:03:32.255+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-26T15:03:32.255+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OSX" /><category scheme="http://www.blogger.com/atom/ns#" term="Logic Express" /><category scheme="http://www.blogger.com/atom/ns#" term="REX" /><title>Using Recycle Files (REX) With Logic Express</title><content type="html">This week I made the leap from using Cubase 5 on Win32 to Logic Express on OS X. I don't get as much recording done lately as I would like, so thought I would try Logic Express first before committing to the more expensive Logic Pro.&lt;br /&gt;&lt;br /&gt;One of the problems I found was that Logic Express was not recognising my REX files and prompting me to install a REX Shared Library from Propellerheads.se. Searching the Propellerheads site didn't seem to turn up the results until I eventually I spotted this link hidden away in the last column of the footer of the &lt;a href="http://www.propellerheads.se/download/"&gt;Downloads&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.propellerheads.se/download/index.cfm?fuseaction=get_article&amp;article=rexsharedlibrary"&gt;http://www.propellerheads.se/download/index.cfm?fuseaction=get_article&amp;article=rexsharedlibrary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are a few versions there so I downloaded this one as it matched my setup&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;REX Shared Library 1.7 - Universal Binary&lt;/span&gt;&lt;br /&gt;For owners of Logic 9.1.2 and later&lt;br /&gt;&lt;a href="http://www.propellerheads.se/download/files/Install_Rex_1_7_library.pkg"&gt;http://www.propellerheads.se/download/files/Install_Rex_1_7_library.pkg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The install all appeared to work properly but Logic Express was still reporting the same error.&lt;br /&gt;I tried restarting Logic Express, but the error persisted.&lt;br /&gt;I tried restarting my machine, but the error persisted.&lt;br /&gt;I tried reinstalling and carefully read every screen - nothing was wrong there.&lt;br /&gt;&lt;br /&gt;I started searching various forums and found there were confusing opinions about the probable cause, most of them quite out of date and that there were multiple possible install paths.&lt;br /&gt;&lt;br /&gt;After much reading I found that the files had been installed to &lt;span style="font-style:italic;"&gt;/Library/Application Support/Propellerhead Software/REX&lt;/span&gt; but the red icon on the folder in Finder told me that I did not have permission to access that folder. It seems that the installer has an issue setting permissions.&lt;br /&gt;&lt;br /&gt;I opened a Terminal window, navigated to that folder and entered this command: &lt;span style="font-style:italic;"&gt;sudo chmod REX 777&lt;/span&gt; to set the permissions wide open.&lt;br /&gt;&lt;br /&gt;After that Logic Express was able to process REX files properly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-3500049601789727521?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Je__XDPAk6s:cKAL6ZiA2l0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Je__XDPAk6s:cKAL6ZiA2l0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Je__XDPAk6s:cKAL6ZiA2l0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Je__XDPAk6s:cKAL6ZiA2l0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Je__XDPAk6s:cKAL6ZiA2l0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Je__XDPAk6s:cKAL6ZiA2l0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Je__XDPAk6s:cKAL6ZiA2l0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Je__XDPAk6s:cKAL6ZiA2l0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/3500049601789727521/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2011/04/using-recycle-files-rex-with-logic.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3500049601789727521?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3500049601789727521?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2011/04/using-recycle-files-rex-with-logic.html" title="Using Recycle Files (REX) With Logic Express" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D0UHRHg4eyp7ImA9WhZSFks.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-5884554872073818293</id><published>2011-03-31T14:21:00.000+01:00</published><updated>2011-04-01T14:40:35.633+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-01T14:40:35.633+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Movable Type" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>WordPress Post ID from Permalink</title><content type="html">Lately I've been migrating a few websites from Movable Type to WordPress. One of the SEO issues involved with that is supporting the old site's URLs so that existing page rankings don't drop off en masse.&lt;br /&gt;&lt;br /&gt;A common Movable Type URL format appends the entry id to the URL which makes it easy to redirect to the correct content IF you have preserved the entry id from MT as the new post id in WP, other times it can be a lot more convoluted. &lt;br /&gt;&lt;br /&gt;One of the functions I sometimes need to employ is pretty uncommon, (which is not surprising due it's rare use), so I thought I'd create a quick post here so I can can easily find it next time I need it.&lt;br /&gt;&lt;br /&gt;The function is &lt;span style="font-weight:bold;"&gt;&lt;a href="http://codex.wordpress.org/Function_Reference/url_to_postid"&gt;url_to_postid()&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This function returns the id for a post or page from a given URL. I like to this of this function as the reverse of the commonly used &lt;a href="http://codex.wordpress.org/Function_Reference/get_permalink"&gt;get_permalink()&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's pretty hard to turn up any useful search results for this function so hopefully this page will help somebody when they need it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-5884554872073818293?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=R3MMuxv-y4M:qi11mJFWrh0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=R3MMuxv-y4M:qi11mJFWrh0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=R3MMuxv-y4M:qi11mJFWrh0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=R3MMuxv-y4M:qi11mJFWrh0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=R3MMuxv-y4M:qi11mJFWrh0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=R3MMuxv-y4M:qi11mJFWrh0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=R3MMuxv-y4M:qi11mJFWrh0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=R3MMuxv-y4M:qi11mJFWrh0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/5884554872073818293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2011/04/wordpress-post-id-from-permalink.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/5884554872073818293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/5884554872073818293?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2011/04/wordpress-post-id-from-permalink.html" title="WordPress Post ID from Permalink" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUQFRX49fip7ImA9Wx5WE04.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-6804399796948069817</id><published>2010-09-24T13:15:00.013+01:00</published><updated>2010-09-24T15:08:34.066+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-24T15:08:34.066+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="strategy" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><title>Pro Tip: Check It Yourself</title><content type="html">Yesterday I was pushing a module of new code to the blog site of a moderately famous celebrity that is still creaking along on Movable Type (the site, not the celeb). I've not really had to work with Movable Type much before so it was a little bit interesting and I learnt a few bits and pieces. &lt;br /&gt;&lt;br /&gt;The code module was working exactly as expected on the development site so I was a bit surprised when it failed on the production site, truncating the rendering of some posts.&lt;br /&gt;&lt;br /&gt;Debugging code on a production server is a tricky business (especially when you can't find the error logs), but I tracked it down to this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;PHP Fatal error:  Call to undefined function: file_put_contents() ...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The function &lt;span style="font-weight:bold;"&gt;file_put_contents()&lt;/span&gt; was introduced with PHP version 5, so this error indicated the production server was running some version of PHP4. This kind of disparity between production and development environments is certainly not the optimal configuration, but it's not entirely uncommon when working with legacy systems. The problem for me yesterday was that it took me a lot longer to identify and fix the problem because I was &lt;span style="font-style:italic;"&gt;sure&lt;/span&gt; that the production site was on PHP5...&lt;br /&gt;&lt;br /&gt;I'd asked the rest of the development team if the sites I was working on with this module were on PHP5, they were pretty sure they were, but recommended I checked with the ops team. A member of the ops team told me they were all on PHP5 too. I don't know if the error was due to a chat-window miscommunication, lack of familiarity with the site, or just a genuine mistake - it's not really a big deal. In reality, it probably would have been quicker to just check the &lt;span style="font-weight:bold;"&gt;phpversion()&lt;/span&gt; myself when I first thought to ask about it - I would have discovered it was on PHP4 and altered the module's code &lt;span style="font-style:italic;"&gt;before&lt;/span&gt; I tried to push it to the production environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-6804399796948069817?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=jOAZikBRPfE:zj0gAAAggmQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=jOAZikBRPfE:zj0gAAAggmQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=jOAZikBRPfE:zj0gAAAggmQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=jOAZikBRPfE:zj0gAAAggmQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=jOAZikBRPfE:zj0gAAAggmQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=jOAZikBRPfE:zj0gAAAggmQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=jOAZikBRPfE:zj0gAAAggmQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=jOAZikBRPfE:zj0gAAAggmQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/6804399796948069817/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/09/pro-tip-check-it-yourself.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6804399796948069817?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6804399796948069817?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/09/pro-tip-check-it-yourself.html" title="Pro Tip: Check It Yourself" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkYDSHs9eSp7ImA9Wx5QE0g.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-8130526374698605409</id><published>2010-09-01T15:32:00.008+01:00</published><updated>2010-09-01T16:16:19.561+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-01T16:16:19.561+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="JSON" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>IE8 Ajax Caching/Session Issue</title><content type="html">Today I spent a bit of time trying to track down an ajax problem the was only occuring in IE8.&lt;br /&gt;&lt;br /&gt;The ajax funcionality was calling a static URL which returned a JSON result containing the html to display login buttons depending on the user's state. The call was made via jQuery.getJSON(), which is wrapper function for .ajax() and .parseJSON()&lt;br /&gt;&lt;br /&gt;The problem was that IE8 was exhibiting fairly unpredictable behaviour, sometimes it seemed that call was not firing, other times it appeared to return the opposite result I was expecting.&lt;br /&gt;&lt;br /&gt;Initially it looked like IE8 was not passing the user's session. A quick Google search returned a number of threads where developers had assumed this to be the case, but there were very few constructive suggestions in addressing the issue. Eventually I spotted &lt;a href="http://codeigniter.com/forums/viewthread/124446/#616356"&gt;something&lt;/a&gt; where the true issue had been identified as IE8 caching the ajax response.&lt;br /&gt;&lt;br /&gt;I added a cache-busting parameter to my ajax URL using the following javascript and &lt;span style="font-style:italic;"&gt;voila&lt;/span&gt;, everything starting working as expected.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;"...&amp;cachebuster="+Math.random()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Hopefully this short post will save you some IE8 related head-scratching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-8130526374698605409?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=j-tc0mfwITs:YV20fZFpRO0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=j-tc0mfwITs:YV20fZFpRO0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=j-tc0mfwITs:YV20fZFpRO0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=j-tc0mfwITs:YV20fZFpRO0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=j-tc0mfwITs:YV20fZFpRO0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=j-tc0mfwITs:YV20fZFpRO0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=j-tc0mfwITs:YV20fZFpRO0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=j-tc0mfwITs:YV20fZFpRO0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/8130526374698605409/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/09/ie8-ajax-cachingsession-issue.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/8130526374698605409?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/8130526374698605409?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/09/ie8-ajax-cachingsession-issue.html" title="IE8 Ajax Caching/Session Issue" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEEBQ3cyeyp7ImA9Wx5QEUQ.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-2383416028029159215</id><published>2010-08-18T13:14:00.017+01:00</published><updated>2010-08-30T20:30:52.993+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T20:30:52.993+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>Wordpress colorpicker.js</title><content type="html">The Wordpress &lt;a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_scripts_included_with_WordPress"&gt;wp_enqueue_script&lt;/a&gt; reference page lists Colorpicker as one of the default scripts imstalled, but doesn't offer any clues on how to implement it. The link on that page (currently) points to &lt;a href="http://mattkruse.com/"&gt;http://mattkruse.com/&lt;/a&gt; which has no details on how to use it either.&lt;br /&gt;&lt;br /&gt;The best online reference I've found so far is Matt Kruse's &lt;a href="http://mattkruse.com/javascript/colorpicker/"&gt;JavaScript Toolbox - Color Picker Swatch Popup&lt;/a&gt; which suggests you look at &lt;a href="http://www.javascripttoolbox.com/"&gt;http://www.javascripttoolbox.com/&lt;/a&gt; which doesn't have any documentation about colorpicker.js. Here's a link to the cached version of the documentation page just in case the source page is taken down: &lt;a href="http://webcache.googleusercontent.com/search?q=cache:nlxkcPxsepEJ:mattkruse.com/javascript/colorpicker/"&gt;http://webcache.googleusercontent.com/search?q=cache:nlxkcPxsepEJ:mattkruse.com/javascript/colorpicker/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The javascript file /wp-includes/js/colorpicker.js is minified and browsing it doesn't easily reveal anything. There's a lot more information in /wp-includes/js/colorpicker.dev.js but it's not as straightforward as it could be.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What you need to do:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Include the colorpicker javascript file:&lt;br /&gt;&lt;code&gt;wp_enqueue_script( 'colorpicker');&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Create a colorpicker object and hidden div, preferably put this near the end of your page:&lt;br /&gt;&lt;code&gt;&amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;br /&gt;var cp = new ColorPicker(); cp.writeDiv();&lt;br /&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Set up the input field and picker anchor tag:&lt;br /&gt;&lt;code&gt;Color: &amp;lt;INPUT TYPE="text" id="color2" name="color2" SIZE="20" VALUE=""&amp;gt; &amp;lt;A HREF="#" onClick="jQuery('#color2').each(function(index){cp.select(this,'pick2');return false;});return false;" NAME="pick2" ID="pick2"&amp;gt;Pick color&amp;lt;/A&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Alternatively, you could also try this approach where you ditch the anchor tag and use some jQuery to handle the rest:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;INPUT TYPE="text" id="color2" name="color2" SIZE="20" VALUE="" class="jColorpicker" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;br /&gt;jQuery(".jColorpicker").bind("click", function(){cp.select(this,jQuery(this).attr(\'name\')); });&lt;br /&gt;&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;This snippet of code is showing it's age and there are better options out there if you need a color picker. The more I try to use it the more I become frustrated with it. &lt;br /&gt;&lt;br /&gt;jQuery UI doesn't have a native one (yet) but I am guessing that will come in time. For now, probably the best candidate is the jQuery plugin &lt;a href="http://www.digitalmagicpro.com/jPicker/"&gt;jPicker&lt;/a&gt; from Digital Magic Productions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-2383416028029159215?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=ETcleP0fd4k:Fujku7Wr0eQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=ETcleP0fd4k:Fujku7Wr0eQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=ETcleP0fd4k:Fujku7Wr0eQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=ETcleP0fd4k:Fujku7Wr0eQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=ETcleP0fd4k:Fujku7Wr0eQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=ETcleP0fd4k:Fujku7Wr0eQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=ETcleP0fd4k:Fujku7Wr0eQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=ETcleP0fd4k:Fujku7Wr0eQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/2383416028029159215/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/08/wordpress-colorpickerjs.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/2383416028029159215?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/2383416028029159215?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/08/wordpress-colorpickerjs.html" title="Wordpress colorpicker.js" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0QCQncyfCp7ImA9WxFaEU4.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-1946895922130815513</id><published>2010-07-14T20:52:00.012+01:00</published><updated>2010-07-14T21:29:23.994+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-14T21:29:23.994+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Firefox" /><title>Firefox 3.6.6 redirect issue</title><content type="html">Today I spent a chunk of time investigating an issue related to redirecting browser requests for media files to the CDN (content delivery network) for that domain. The redirect was being thrown into a redirection loop. The curious thing about the issue is that it only affected users using Firefox 3.6.6 on Microsoft Windows.&lt;br /&gt;&lt;br /&gt;I tested the MP3 player in Opera, Chrome and even Internet Explorer and everything performed as expected, but when I used Firefox 3.6.6 it failed every time for any file. Then I checked it in Firefox 2.0 and Firefox 3.5.10 - both did not reproduce the issue. I checked it in Firefox 3.6.6 on an Apple Mac and the issue could not be reproduced. Neither could it be reproduced in Firefox 3.6.7(beta) on Windows.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Multiple Firefox Installations&lt;/span&gt;&lt;br /&gt;I decided to grab Firefox 3.6.4 (the previous release - there was no 3.6.5) and install that to see if just this version was experiencing the issue. To do this I decided to set up another Firefox install - If you've not done this before, there's a great guide here: &lt;a href="http://idizyn.com/development/installing-multiple-versions-of-firefox/"&gt;http://idizyn.com/development/installing-multiple-versions-of-firefox/&lt;/a&gt; The post is pretty old, but what worked for Firefox 1.5 and 2.0 still works now.&lt;br /&gt;&lt;br /&gt;Installing Firefox 3.6.4 confirmed my suspicion that this problem only occurred so predictably in Firefox 3.6.6.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What Caused This??&lt;/span&gt;&lt;br /&gt;I recorded the headers for different browser versions using &lt;a href="http://livehttpheaders.mozdev.org/"&gt;Live HTTP Headers&lt;/a&gt;. This highlighted that Firefox 3.6.6 was being thrown into redirection loop, but didn't explain why. I added timestamps to the redirection point and saw that the redirection was not reflecting any change in that, so some level of caching was involved - but this cached result did not occur for any other browser version (even on the same machine).&lt;br /&gt;&lt;br /&gt;I disabled my Add-ons, flushed my cache, and restarted the browser multiple times to no avail - I could not isolate either a cause or a solution. At this point I can only suggest there is a problem with this release of Firefox causing the problem.&lt;br /&gt;&lt;br /&gt;Firefox 3.6.7 is currently slated for release on 20 July 2010 (in 6 days). Hopefully this will address this issue and many users will quickly upgrade without us having to suggest it as a solution to this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-1946895922130815513?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=I_jBVwimRqk:YkF2dclDCTE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=I_jBVwimRqk:YkF2dclDCTE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=I_jBVwimRqk:YkF2dclDCTE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=I_jBVwimRqk:YkF2dclDCTE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=I_jBVwimRqk:YkF2dclDCTE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=I_jBVwimRqk:YkF2dclDCTE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=I_jBVwimRqk:YkF2dclDCTE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=I_jBVwimRqk:YkF2dclDCTE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/1946895922130815513/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/07/firefox-366-redirect-issue.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/1946895922130815513?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/1946895922130815513?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/07/firefox-366-redirect-issue.html" title="Firefox 3.6.6 redirect issue" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkEARHo5eyp7ImA9WxFVGEU.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-6682353783865753234</id><published>2010-06-18T17:38:00.014+01:00</published><updated>2010-06-18T18:04:05.423+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-18T18:04:05.423+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>WordPress Broken Theme : Template is missing</title><content type="html">I came across an interesting bug on a Wordpress development project I was working on this week. The issue was that the Wordpress Theme was reported as a Broken Theme because the "Template is missing" on the Appearances-&gt;Themes admin page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3mv2BsZUuXk/TBuh8LZkfcI/AAAAAAAAAEY/VYVQh_ZAkc0/s1600/BrokenTheme.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://2.bp.blogspot.com/_3mv2BsZUuXk/TBuh8LZkfcI/AAAAAAAAAEY/VYVQh_ZAkc0/s400/BrokenTheme.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484155026477972930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In most cases the site was performing as expected using the allegedly broken theme, however the custom template selection was no longer available on the Pages admin page. (This is where I first spotted there was a problem and then discovered the  Appearances-&gt;Themes admin page.)&lt;br /&gt;&lt;br /&gt;After poking about for a bit, I traced the problem to a rather innocuous looking line the designer had added to the theme's style.css file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/* UNIQUE CATEGORY TEMPLATE: VIDEO*/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It's just the "TEMPLATE:" portion that caused the style.css parser to fail. This line works just fine:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/* UNIQUE CATEGORY TEMPLATE : VIDEO*/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I doubt this error comes up often, but it took a few minutes to track down the problem so I thought I'd post something here to hopefully save somebody time in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-6682353783865753234?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Zh_iHB_axPw:r-sBaX3KYbE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Zh_iHB_axPw:r-sBaX3KYbE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Zh_iHB_axPw:r-sBaX3KYbE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Zh_iHB_axPw:r-sBaX3KYbE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Zh_iHB_axPw:r-sBaX3KYbE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Zh_iHB_axPw:r-sBaX3KYbE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=Zh_iHB_axPw:r-sBaX3KYbE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=Zh_iHB_axPw:r-sBaX3KYbE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/6682353783865753234/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/06/wordpress-broken-theme-template-is.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6682353783865753234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6682353783865753234?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/06/wordpress-broken-theme-template-is.html" title="WordPress Broken Theme : Template is missing" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_3mv2BsZUuXk/TBuh8LZkfcI/AAAAAAAAAEY/VYVQh_ZAkc0/s72-c/BrokenTheme.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D08EQHo4eip7ImA9WxFSGUo.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-2045613035158074486</id><published>2010-04-22T23:00:00.016+01:00</published><updated>2010-04-22T23:36:41.432+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-22T23:36:41.432+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Google Buzz Button IE8 Error</title><content type="html">Recently Google introduced their &lt;a href="http://www.google.com/buzz/stuff"&gt;Buzz buttons&lt;/a&gt; to "&lt;span style="font-style:italic;"&gt;Help people post your content on Google Buzz&lt;/span&gt;". Share buttons are not a new idea, but Google Buzz is new and kinda shiny. Here's a quick intro if you're not up to speed yet:&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yi50KlsCBio&amp;hl=en_GB&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yi50KlsCBio&amp;hl=en_GB&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;And here's a Buzz button:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="small-count" data-locale="en_GB" data-url="http://measurablewins.blogspot.com/2010/04/google-buzz-button-ie8-error.html"&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://www.google.com/buzz/api/button.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;A few days ago I implemented the Buzz share buttons on a website at the clients request and it all seemed to be working great, until this morning I found that some pages were failing to load in Internet Explorer 8.&lt;br /&gt;&lt;br /&gt;I pointed IE8 at the development site and confirmed there was a serious problem. The error I recieved was thus:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Webpage error details &lt;br /&gt;User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) &lt;br /&gt;Timestamp: Thu, 22 Apr 2010 13:33:25 UTC &lt;br /&gt;Message: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917) Line: 0 Char: 0 Code: 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I disabled the Buzz button to confirm it was part of the problem (which it was), and then checked my implementation against the documntation and other sites. Everything seemed to be OK. After a long period of debugging, and following up false leads it turned out to be that Internet Explorer was executing the Google Buzz button's javascript code too early - even when it was in the page footer.&lt;br /&gt;&lt;br /&gt;The Solution:&lt;br /&gt;Once again jQuery came to the rescue - I replaced this line:&lt;br /&gt;&lt;code&gt;&amp;lt;script type="text/javascript" src="http://www.google.com/buzz/api/button.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;with this line:&lt;br /&gt;&lt;code&gt;&amp;lt;script type="text/javascript"&amp;gt;jQuery(document).ready(function(){jQuery.getScript('http://www.google.com/buzz/api/button.js');});&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-2045613035158074486?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NWAY9XjxS7o:LOaUQXOm78c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NWAY9XjxS7o:LOaUQXOm78c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NWAY9XjxS7o:LOaUQXOm78c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NWAY9XjxS7o:LOaUQXOm78c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NWAY9XjxS7o:LOaUQXOm78c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NWAY9XjxS7o:LOaUQXOm78c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NWAY9XjxS7o:LOaUQXOm78c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NWAY9XjxS7o:LOaUQXOm78c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/2045613035158074486/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/04/google-buzz-button-ie8-error.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/2045613035158074486?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/2045613035158074486?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/04/google-buzz-button-ie8-error.html" title="Google Buzz Button IE8 Error" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0ACQHg_eip7ImA9WxFTFEo.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-8225369520302886699</id><published>2010-04-05T13:24:00.014+01:00</published><updated>2010-04-05T13:49:21.642+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-05T13:49:21.642+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="strategy" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>Managing WordPress Filters</title><content type="html">WordPress filters offer a great way to control many aspects of the way the WordPress engine processes or publishes information, without hacking any of the core code.&lt;br /&gt;&lt;br /&gt;In recent projects I've found filters to be the easiest way to manage many of the functionality requests the client has made. Some examples of the are: RSS formatting, custom Avatars, auto rendering images/links in comments, controlling the Category used in permalinks, reformatting legacy data in posts, and even &lt;a href="http://measurablewins.blogspot.com/2010/03/suppressing-link-url-in-wp-media.html"&gt;tweaking the behaviour of Admin pages&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All these changes can add up to quite a chunk of code and functions.php was getting quite large and difficult to maintain with all the other general functions in there. I decided to move all the filter functions and add_filter statements into a separate file called functions_filters.php and include it from functions.php. This made it much easier to add/maintain filters and localised the changes to that dedicated file. &lt;br /&gt;&lt;br /&gt;It's an incredibly simple idea, but I highly recommend taking this approach if you are implementing filters to any degree.&lt;br /&gt;&lt;br /&gt;If you've not used filters but want to learn more, you can find a good introduction here: &lt;a href="http://codex.wordpress.org/Plugin_API/Filter_Reference"&gt;http://codex.wordpress.org/Plugin_API/Filter_Reference&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-8225369520302886699?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=iOl8ekPmIGQ:ApInP_Qh02U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=iOl8ekPmIGQ:ApInP_Qh02U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=iOl8ekPmIGQ:ApInP_Qh02U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=iOl8ekPmIGQ:ApInP_Qh02U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=iOl8ekPmIGQ:ApInP_Qh02U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=iOl8ekPmIGQ:ApInP_Qh02U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=iOl8ekPmIGQ:ApInP_Qh02U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=iOl8ekPmIGQ:ApInP_Qh02U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/8225369520302886699/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/04/managing-wordpress-filters.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/8225369520302886699?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/8225369520302886699?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/04/managing-wordpress-filters.html" title="Managing WordPress Filters" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEcGQXsyeyp7ImA9WxBbF0g.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-3164659836111355886</id><published>2010-03-16T14:21:00.014Z</published><updated>2010-03-16T15:07:00.593Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T15:07:00.593Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>Suppressing Link URL In WP Media Library</title><content type="html">It's been a while since I've posted anything here (I've been pretty busy lately), so when I threw together a quick fix for a WordPress installation today, I thought I should put a quick note about it here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Problem:&lt;/span&gt;&lt;br /&gt;When inserting or attaching an image to a post with WP's Media Library the Link URL is always pre-populated with the URL to the file. To remove this URL so that the image is not linking to the original file, users must go through the arduous process of remembering to click the "None" button before inserting the image.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3mv2BsZUuXk/S5-WKvtE3EI/AAAAAAAAAEQ/MdQHKuBBulY/s1600-h/Suppress_URL.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 384px;" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/S5-WKvtE3EI/AAAAAAAAAEQ/MdQHKuBBulY/s400/Suppress_URL.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5449239185489976386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OK, that was a little sarcastic, but that's pretty much what the feature request was saying. They wanted the field's behaviour to change so that the default was blank.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Solution:&lt;/span&gt;&lt;br /&gt;To create the desired behaviour, I created the following  function and hooked it to the &lt;span style="font-style:italic;"&gt;attachment_fields_to_edit filter&lt;/span&gt; to clear out the URL before it is displayed. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// hide the URL by default for people too lazy to click "None"&lt;br /&gt;add_filter('attachment_fields_to_edit', 'suppress_linkURL');&lt;br /&gt;function suppress_linkURL($fields) {&lt;br /&gt; $img_url = $fields['image_url']['value'];&lt;br /&gt; if(!empty($img_url)){&lt;br /&gt;  $html = $fields['url']['html'];&lt;br /&gt;  if(!empty($html)) {&lt;br /&gt;   $fields['url']['html'] = str_replace("value='$img_url'","value=''",$html);&lt;br /&gt;  }&lt;br /&gt; }  &lt;br /&gt; return $fields;&lt;br /&gt;} &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I doubt there is going to be a lot of demand for this particular snippet of code, but hopefully somebody will find it helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-3164659836111355886?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=PoTeEopZ9PU:fy1MxslGWWY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=PoTeEopZ9PU:fy1MxslGWWY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=PoTeEopZ9PU:fy1MxslGWWY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=PoTeEopZ9PU:fy1MxslGWWY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=PoTeEopZ9PU:fy1MxslGWWY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=PoTeEopZ9PU:fy1MxslGWWY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=PoTeEopZ9PU:fy1MxslGWWY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=PoTeEopZ9PU:fy1MxslGWWY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/3164659836111355886/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/03/suppressing-link-url-in-wp-media.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3164659836111355886?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3164659836111355886?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/03/suppressing-link-url-in-wp-media.html" title="Suppressing Link URL In WP Media Library" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_3mv2BsZUuXk/S5-WKvtE3EI/AAAAAAAAAEQ/MdQHKuBBulY/s72-c/Suppress_URL.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4FQX85eCp7ImA9WxBXF0Q.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-6587710043943215587</id><published>2010-01-29T19:38:00.012Z</published><updated>2010-01-29T20:28:30.120Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-29T20:28:30.120Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>jQuery image roll-overs</title><content type="html">On the site I am currently working on I needed to implement hover/roll-over states for a number of image tags. Other elements in the site use the CSS based &lt;span style="font-style:italic;"&gt;x&lt;/span&gt;:hover{background:&lt;span style="font-style:italic;"&gt;y&lt;/span&gt;} approach, but that was not an appropriate solution for these instances - background images were not going to used, so I came up with a nice jQuery based solution that keeps my page-source pretty uncluttered too.&lt;br /&gt;&lt;br /&gt;I added a class value of "hover" to the image tags I wanted to exhibit this behaviour. The replacement images all had the suffix _hover added (e.g. theimage_hover.png )&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;img src="/images/theimage.png" class="hover"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then in my main javascript file I added this little snippet:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function imghover_on(img){if(img.src.indexOf('_hover.')==-1){img.src=img.src.substr(0,img.src.length-4)+'_hover'+img.src.substr(img.src.length-4)}}&lt;br /&gt;&lt;br /&gt;function imghover_off(img){img.src = img.src.replace('_hover.','.');}&lt;br /&gt;&lt;br /&gt;jQuery(document).ready(function(){&lt;br /&gt; jQuery("img.hover").mouseenter(function(e){ imghover_on(this);});&lt;br /&gt; jQuery("img.hover").mouseleave(function(e){ imghover_off(this);});&lt;br /&gt;});&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This code declares two functions which add or remove the "_hover" suffix to the image tag's source, while not needing to know if the image is .png .gif or .jpg. &lt;br /&gt;&lt;br /&gt;The jQuery statement waits for the page to load and then finds all img tags in the document with the hover class set and binds the function calls to the mouseenter and mouseleave. This saves me from having to add these events to every single image tag manually like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;img src="/images/theimage.png" onmouseover="imghover_on(this);" onmouseout="imghover_off(this)"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Notes:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I used mouseenter/mouseleave as they fire a lot less than mouseover/mouseout (see: &lt;a href="http://docs.jquery.com/Events/mouseenter"&gt;http://docs.jquery.com/Events/mouseenter&lt;/a&gt; )&lt;br /&gt;&lt;li&gt;It's not infallable, a .jpeg file extension would fail, but it's working nicely for first cut.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-6587710043943215587?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=B0WAv25Xjbs:5Qo0vl5AJdE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=B0WAv25Xjbs:5Qo0vl5AJdE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=B0WAv25Xjbs:5Qo0vl5AJdE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=B0WAv25Xjbs:5Qo0vl5AJdE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=B0WAv25Xjbs:5Qo0vl5AJdE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=B0WAv25Xjbs:5Qo0vl5AJdE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=B0WAv25Xjbs:5Qo0vl5AJdE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=B0WAv25Xjbs:5Qo0vl5AJdE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/6587710043943215587/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/01/jquery-image-roll-overs.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6587710043943215587?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6587710043943215587?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/01/jquery-image-roll-overs.html" title="jQuery image roll-overs" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0QERHY_eSp7ImA9WhZSGU4.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-3360010228155080220</id><published>2010-01-20T12:25:00.022Z</published><updated>2011-04-04T17:41:45.841+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-04T17:41:45.841+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="strategy" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><title>WordPress Theme URL Tip</title><content type="html">Lately I've been putting a lot of hours into developing a couple of sites using the &lt;a href="http://wordpress.org/" target="_blank"&gt;WordPress&lt;/a&gt; and &lt;a href="http://mu.wordpress.org/" target="_blank"&gt;WPMU&lt;/a&gt; platforms. These platforms are a solid starting point for pulling a content/post based site together relatively quickly - the wealth of useful plugins also helps reduce the chance of you having to re-invent the wheel.&lt;br /&gt;&lt;br /&gt;Having said that there is still a lot to do to create a professional website that has it's own look and feel - much of this can be achieved by creating a custom theme.&lt;br /&gt;&lt;br /&gt;If you are creating a custom theme you will probably need to link to multiple elements within that theme's directory structure. The most common approach to do this is somthing like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;img src="&amp;lt;?php bloginfo('stylesheet_directory'); ?&amp;gt;/images/myimage.png"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php &lt;br /&gt;echo '&amp;lt;img src="'.get_bloginfo('stylesheet_directory').'/images/myimage.png"&amp;gt;'; &lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I've certainly been using a lot of the latter style, until today.&lt;br /&gt;&lt;br /&gt;I decided to clean up my code a bit and put the following line at the top of my theme's functions.php file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;?php &lt;br /&gt;if(!defined('WP_THEME_URL')) {&lt;br /&gt;  define( 'WP_THEME_URL', get_bloginfo('stylesheet_directory'));&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then I replaced all the &lt;code&gt;get_bloginfo('stylesheet_directory')&lt;/code&gt; instances with the constant &lt;code&gt;WP_THEME_URL&lt;/code&gt;. Now my code is a lot more readable and there is less typing. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;img src="&amp;lt;?php echo WP_THEME_URL; ?&amp;gt;/images/myimage.png"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php &lt;br /&gt;echo '&amp;lt;img src="'.WP_THEME_URL.'/images/myimage.png"&amp;gt;'; &lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Using a &lt;a href="http://php.net/manual/en/language.constants.php" target="_blank"&gt;constant&lt;/a&gt; like this should provide a slight performance increase here too - I haven't done any performance tests, but the current &lt;code&gt;get_bloginfo()&lt;/code&gt; process is a fairly convoluted chain of function calls.&lt;br /&gt;&lt;br /&gt;Note: Just in case the WP platform does start using this constant in the future, the constant's value is not set if it is already defined.&lt;br /&gt;&lt;br /&gt;UPDATE: &lt;span style="font-style:italic;"&gt;After this post was made I discovered WordPress defines a TEMPLATEPATH constant, but no constant currently exists for the TEMPLATEURL.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-3360010228155080220?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=S8IkWTMfnCg:j3FswhTTC9w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=S8IkWTMfnCg:j3FswhTTC9w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=S8IkWTMfnCg:j3FswhTTC9w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=S8IkWTMfnCg:j3FswhTTC9w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=S8IkWTMfnCg:j3FswhTTC9w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=S8IkWTMfnCg:j3FswhTTC9w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=S8IkWTMfnCg:j3FswhTTC9w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=S8IkWTMfnCg:j3FswhTTC9w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/3360010228155080220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/01/wordpress-theme-url-tip.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3360010228155080220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3360010228155080220?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/01/wordpress-theme-url-tip.html" title="WordPress Theme URL Tip" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk8HQXk8eip7ImA9WxBQEE4.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-678858135741512189</id><published>2010-01-09T10:39:00.015Z</published><updated>2010-01-09T11:00:30.772Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-09T11:00:30.772Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="images" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title>Animated "Loading" Image Generator</title><content type="html">Yesterday somebody sent me an email introducing me to &lt;a href="http://www.ajaxload.info/" target="_blank"&gt;http://www.ajaxload.info/&lt;/a&gt; and it's such a handy tool I thought I should share it here. &lt;br /&gt;&lt;br /&gt;Generate a customised animated gif by choosing the style you want, the background and foreground colors and whether the background should be transparent.&lt;br /&gt;&lt;br /&gt;Here are some quick examples...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align:center;"&gt;&lt;a href="http://www.ajaxload.info/" target="_blank"&gt;&lt;img src="http://www.pantsonhead.com/images/gifs/ajax-loader.gif" border="0" style="border:none"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align:center;"&gt;&lt;a href="http://www.ajaxload.info/" target="_blank"&gt;&lt;img src="http://www.pantsonhead.com/images/gifs/ajax-loader(2).gif" border="0"  style="border:none" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align:center;"&gt;&lt;a href="http://www.ajaxload.info/" target="_blank"&gt;&lt;img src="http://www.pantsonhead.com/images/gifs/ajax-loader(3).gif" border="0"  style="border:none" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align:center;"&gt;&lt;a href="http://www.ajaxload.info/" target="_blank"&gt;&lt;img src="http://www.pantsonhead.com/images/gifs/ajax-loader(4).gif" border="0"  style="border:none" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-678858135741512189?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=CfuauxosEHI:59NEbRkihFc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=CfuauxosEHI:59NEbRkihFc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=CfuauxosEHI:59NEbRkihFc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=CfuauxosEHI:59NEbRkihFc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=CfuauxosEHI:59NEbRkihFc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=CfuauxosEHI:59NEbRkihFc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=CfuauxosEHI:59NEbRkihFc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=CfuauxosEHI:59NEbRkihFc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/678858135741512189/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2010/01/animated-loading-image-generator.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/678858135741512189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/678858135741512189?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2010/01/animated-loading-image-generator.html" title="Animated &quot;Loading&quot; Image Generator" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUAARnc7fyp7ImA9WxBSFEQ.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-6096904921080828291</id><published>2009-12-22T13:11:00.022Z</published><updated>2009-12-22T14:55:47.907Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T14:55:47.907Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Maps" /><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Updating Google Map Marker's z-index</title><content type="html">Lately I've been working on a web application that uses &lt;a href="http://code.google.com/apis/maps/documentation/index.html" target="_blank"&gt;Google's Maps API&lt;/a&gt;. It's been an interesting and engaging project.&lt;br /&gt;&lt;br /&gt;One of the limitations of the current Maps API is that the z-index of a marker cannot be changed after it has been created. The client requested that the selected marker "popped to the front" as some markers obscured others in certain map areas depending on zoom and closeness of coordinates. This was a reasonable request and would enhance the UI, but was not so easy to implement.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3mv2BsZUuXk/SzDZt872jcI/AAAAAAAAADo/MBU2dMvvF4A/s1600-h/Map_icons.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SzDZt872jcI/AAAAAAAAADo/MBU2dMvvF4A/s400/Map_icons.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5418069735201213890" /&gt;&lt;/a&gt;&lt;br /&gt;Mike Williams gives a good introduction to this issue and details of how to set the z-index of the marker when it is created with &lt;span style="font-style:italic;"&gt;addOverlay()&lt;/span&gt; in his &lt;a href="http://econym.org.uk/gmap/zindex.htm" target="_blank"&gt;Google Maps API Tutorial&lt;/a&gt;.  Having read this, I attempted to re-create each marker when it was clicked and keep track of the top most z-index. I had some success but had unpredictable z-index results and it was definitely an inefficient way to produce the desired effect.&lt;br /&gt;&lt;br /&gt;I decided to browse the DOM and see if I could find a better way to do this. I found a guide to &lt;a href="http://mapki.com/wiki/Undocumented_Features" target="_blank"&gt;Undocumented Google API features&lt;/a&gt; which seems to be mostly out of date, but contained the very important details of how to calculate a Marker's default z-index:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Use marker.setZIndex(Math.round(marker.getLatitude()*-100000)) to get a moved marker to overlap correctly. &lt;/blockquote&gt;&lt;br /&gt;Even though &lt;span style="font-style:italic;"&gt;setZIndex()&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;getLatitude()&lt;/span&gt; are not valid methods in the current API, it's easy to understand the calculation.&lt;br /&gt;&lt;br /&gt;In my application I was already using a unique icon for each marker so that they displayed sequential letters (A,B,C...) and had added an index property to the marker object. I was able to leverage this with a bit of &lt;a href="http://docs.jquery.com/Main_Page" target="_blank"&gt;jQuery&lt;/a&gt; magic to find each icon in the DOM and alter the CSS z-index value. Since the default z-index is something like -108619296, I created a function to toggle the z-index between normal and front positions by multiplying it by -1.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;icon = $("#mapbox div div div img[src='/images/markers/"+marker.index+".png']");&lt;br /&gt;zidx = icon.css('z-index');&lt;br /&gt;icon.css('z-index',zidx*-1);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Just to make sure that no other marker was still in the top position, I looped through my array of markers and reset the z-index with this function.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;function reset_zorder(marker) {&lt;br /&gt;  $("#mapbox div div div img[src='/images/markers/"+marker.index+".png']").css('z-index',Math.round(marker.getPoint().lat()*-100000));&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Obviously none of this is a copy+paste solution. but it should give anybody needing to manipulate Google Maps MAP Marker z-index a good example to work from.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-6096904921080828291?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=EUA5Kc5dSOo:iiPV5lMArao:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=EUA5Kc5dSOo:iiPV5lMArao:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=EUA5Kc5dSOo:iiPV5lMArao:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=EUA5Kc5dSOo:iiPV5lMArao:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=EUA5Kc5dSOo:iiPV5lMArao:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=EUA5Kc5dSOo:iiPV5lMArao:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=EUA5Kc5dSOo:iiPV5lMArao:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=EUA5Kc5dSOo:iiPV5lMArao:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/6096904921080828291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/12/updating-google-map-markers-z-index.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6096904921080828291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6096904921080828291?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/12/updating-google-map-markers-z-index.html" title="Updating Google Map Marker's z-index" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_3mv2BsZUuXk/SzDZt872jcI/AAAAAAAAADo/MBU2dMvvF4A/s72-c/Map_icons.gif" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUERHw-cSp7ImA9WxBSEEo.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-7719958811642331253</id><published>2009-12-17T00:01:00.028Z</published><updated>2009-12-17T19:13:25.259Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-17T19:13:25.259Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="statistics" /><category scheme="http://www.blogger.com/atom/ns#" term="traffic" /><category scheme="http://www.blogger.com/atom/ns#" term="plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="WordPress" /><category scheme="http://www.blogger.com/atom/ns#" term="Firefox" /><title>"X-Moz: prefetch" and skewed page-hits</title><content type="html">Earlier today I installed a WordPress plugin recommend for tracking the popularity of posts. The plugin is unsurprisingly named "&lt;a href="http://eric.biven.us/2008/12/03/recently-popular-wordpress-plugin/" target="_blank"&gt;Recently Popular&lt;/a&gt;". After installing the plugin I ran some quick tests and found that I was getting extra hits recorded. I spent a bit of time back-tracking to find the source and after systematically disabling all other plugins and page elements found that it was firing in &lt;span style="font-style: italic;"&gt;wp_head()&lt;/span&gt; in the page header.&lt;br /&gt;&lt;br /&gt;After some more digging, I noticed that the extra hit was for the chronologically next published post and that the problem occurred in both WordPress and WordPressMU. This wasn't making a lot of sense so I decided to try a different browser - more of a sanity test than anything. That's when I found it didn't occur in Chrome, or Opera - just Firefox 3.5.6 that I'd upgraded to a few hours earlier.&lt;br /&gt;&lt;br /&gt;I fired up the &lt;a href="http://livehttpheaders.mozdev.org/" taregt="_blank"&gt;Live HTTP Headers&lt;/a&gt; add-on and checked out the requests Firefox was making. It was definitely making both post requests.  I took a closer look at the second request and noticed the extra header "&lt;span style="font-style: italic;"&gt;X-Moz: prefetch&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;A quick search for X-Moz: prefetch turns up &lt;a href="https://developer.mozilla.org/En/Link_prefetching_FAQ" target="_blank"&gt;Mozilla's Link prefetching FAQ&lt;/a&gt; which gives a good description of what is happening and why. WordPress creates a tag similar to the following when wp_head() is executed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier;"&gt;&amp;lt;link rel='next' title='The Next Post' href='http://your_domain/year/month/day/the_next_post/' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am unaware of anyway to disable the prefetch hints. You could edit your header.php and remove the wp_head() statement, but many plugins rely on the execution of this function so results could be unexpected and undesirable. The issue for me was not that the hint was published but that the prefetch hits were being counted as real post requests, as well as the actual request when I clicked through a second or two later. This would seriously skew the perceived popularity of posts.&lt;br /&gt;&lt;br /&gt;My solution was to ensure that the &lt;a href="http://eric.biven.us/2008/12/03/recently-popular-wordpress-plugin/" target="_blank"&gt;Recently Popular plugin&lt;/a&gt; ignored post requests that passed the "X-Moz: prefetch" header. Depending on your server configuration, the method of checking the header exists may differ - &lt;a href="http://php.net/manual/en/function.apache-request-headers.php"&gt;apache_request_headers()&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;alias getallheaders()&lt;/span&gt;) is only supported when PHP is installed as an Apache module. Most servers should support checking for &lt;span style="font-style: italic;"&gt;$_SERVER['HTTP_X_MOZ']&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I wonder how many other people will wonder why their page hit stats have mysteriously increased without any increase in ad impressions, etc.&lt;br /&gt;&lt;br /&gt;I will contact the plugin author to suggest an update once I've published this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-7719958811642331253?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=tg8Lz9BF_Ow:GGLbcywPSMw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=tg8Lz9BF_Ow:GGLbcywPSMw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=tg8Lz9BF_Ow:GGLbcywPSMw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=tg8Lz9BF_Ow:GGLbcywPSMw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=tg8Lz9BF_Ow:GGLbcywPSMw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=tg8Lz9BF_Ow:GGLbcywPSMw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=tg8Lz9BF_Ow:GGLbcywPSMw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=tg8Lz9BF_Ow:GGLbcywPSMw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/7719958811642331253/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/12/x-moz-prefetch-and-skewed-page-hits.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/7719958811642331253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/7719958811642331253?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/12/x-moz-prefetch-and-skewed-page-hits.html" title="&quot;X-Moz: prefetch&quot; and skewed page-hits" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUQCSX87fCp7ImA9WxNaE0g.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-8868676932354570782</id><published>2009-11-27T21:22:00.003Z</published><updated>2009-11-27T21:29:28.104Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-27T21:29:28.104Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>How To: Android Scrollable Divs</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://news.cnet.com/i/bto/20091031/motorola-droid-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 366px; height: 308px;" src="http://news.cnet.com/i/bto/20091031/motorola-droid-2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lately I've been working on a webapp for the &lt;a href="http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/Mobile-Phones/Motorola-DROID-US-EN" target="_blank"&gt;Motorola Droid&lt;/a&gt; and a &lt;a href="http://www.qnx.com/products/qnxcar/" target="_blank"&gt;QNX CAR&lt;/a&gt; device. The application interface is a split screen with one half being a list of items of variable length. Neither of these browsers on these devices support iframes or scrollable divs, so the approach used in a traditional browser was not an option.&lt;br /&gt;&lt;br /&gt;The application was using &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt;, so using the &lt;a href="http://docs.jquery.com/UI/Draggable" taregt="_blank"&gt;jQuery UI Draggable&lt;/a&gt; plugin was a natural choice. It was quick and easy to implement and worked well on the QNX device, but didn't work at all on the Android browser.&lt;br /&gt;&lt;br /&gt;To get the prototype version of the application finished on time for the deadline, I resorted to adding up/down buttons to the interface that scrolled the div content by manipulating the margin-top via javascript. This satisfied the client, but as a solution it was less than optimal, and in my opinion it made the UI feel clunky.&lt;br /&gt;&lt;br /&gt;At the time that I write this, there's not a lot of information about how to deal with this issue in the Android browser. It took me a while to discover that this issue is also a problem for the iPhone/iPod Touch browser and since Android's browser also uses WebKit, there is already a working solution called &lt;a href="http://cubiq.org/scrolling-div-on-iphone-ipod-touch/5" target="_blank"&gt;iScroll&lt;/a&gt; developed by Matteo Spinelli on Cubiq.org.&lt;br /&gt;&lt;br /&gt;This code utilises WebKit's "touch" events, which are akin to click events, but are only fired by touch screens. You can find a great introduction to &lt;a href="http://backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.html"&gt;Javascript Touch Events&lt;/a&gt; on Michael's "Back To The Code" blog. If you're new to developing mobile webapps, you should probably also take a look at &lt;a href="http://rakaz.nl/2009/09/iphone-webapps-101-getting-safari-out-of-the-way.html"&gt;iPhone Webapps 101&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Hopefully posting these bits and pieces together here will help save somebody a lot of time searching on Google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-8868676932354570782?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=1-lmxDnpCL0:lDsP76QwyQY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=1-lmxDnpCL0:lDsP76QwyQY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=1-lmxDnpCL0:lDsP76QwyQY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=1-lmxDnpCL0:lDsP76QwyQY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=1-lmxDnpCL0:lDsP76QwyQY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=1-lmxDnpCL0:lDsP76QwyQY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=1-lmxDnpCL0:lDsP76QwyQY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=1-lmxDnpCL0:lDsP76QwyQY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/8868676932354570782/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/11/how-to-android-scrollable-divs.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/8868676932354570782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/8868676932354570782?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/11/how-to-android-scrollable-divs.html" title="How To: Android Scrollable Divs" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0YGQX46fip7ImA9WxNbF0w.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-1711145466732546940</id><published>2009-11-20T10:49:00.006Z</published><updated>2009-11-20T11:05:20.016Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T11:05:20.016Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="XAMPP" /><category scheme="http://www.blogger.com/atom/ns#" term="Skype" /><title>Skype vs XAMPP</title><content type="html">I like Skype. I use it everyday. Most of the people I need to communicate with are Skype users. Skype handles chat, voice and file transfers to individuals and groups, and one-to-one video-chat, and allows you to cheaply connect to real-world telephony and SMS too. I'd have to say I am a bit of a fan.&lt;br /&gt;&lt;br /&gt;The only annoyance I have found is that when I reboot my PC (which is not that often), Skype starts up and grabs port 80 before my XAMPP install starts. This means that my local XAMPP Apache install fails to start. In the past I've been forced to quit Skype, start Apache and then restart Skype. No big deal, but a little annoying.&lt;br /&gt;&lt;br /&gt;Yesterday I had a closer look at Skype's Advanced Settings and found this problem can be resolved by simply unchecking the "&lt;span style="font-style:italic;"&gt;Use port 80 and 443 as alternatives for incoming connections&lt;/span&gt;" option and restarting Skype. Simple stuff, but I though it was worth posting.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3mv2BsZUuXk/SwZ3XFA-e4I/AAAAAAAAADg/a0GtJDaAO2o/s1600/Skype_ports.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 324px;" src="http://3.bp.blogspot.com/_3mv2BsZUuXk/SwZ3XFA-e4I/AAAAAAAAADg/a0GtJDaAO2o/s400/Skype_ports.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5406139641071827842" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-1711145466732546940?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NfxbfxuaxpM:UPYq5mE7Blg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NfxbfxuaxpM:UPYq5mE7Blg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NfxbfxuaxpM:UPYq5mE7Blg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NfxbfxuaxpM:UPYq5mE7Blg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NfxbfxuaxpM:UPYq5mE7Blg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NfxbfxuaxpM:UPYq5mE7Blg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NfxbfxuaxpM:UPYq5mE7Blg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NfxbfxuaxpM:UPYq5mE7Blg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/1711145466732546940/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/11/skype-vs-xampp.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/1711145466732546940?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/1711145466732546940?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/11/skype-vs-xampp.html" title="Skype vs XAMPP" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_3mv2BsZUuXk/SwZ3XFA-e4I/AAAAAAAAADg/a0GtJDaAO2o/s72-c/Skype_ports.gif" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkEMRXszfip7ImA9WxNUF0o.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-3653628126641826087</id><published>2009-11-09T13:24:00.013Z</published><updated>2009-11-09T13:51:24.586Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-09T13:51:24.586Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="JSON" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title>Parsing and visualising  JSON</title><content type="html">Over the last few days I've been working on a project that uses some fairly complex JSON objects. Because JSON (JavaScript Object Notation) is a lightweight data interchange format, it can be a great way to grab complex data structures via Ajax. It's been said that JSON is "the fat-free alternative to XML". &lt;br /&gt;&lt;br /&gt;In theory JSON is easy to parse, but if your data structure starts to contain numerous nested objects and arrays, it can be come hard to keep track of and starts looking like a long jumble of punctuation.&lt;br /&gt;&lt;br /&gt;I found Brenton Fletcher's &lt;a href="http://json.bloople.net/" taregt="_blank"&gt;JSON 2 HTML&lt;/a&gt; to be a quick and easy way to check your JSON syntax and visualize the data. You can either copy+paste a JSON string or sumbit a URL and the will page load the JSON string from the URL. It's definitely worth checking out if you're working with JSON.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3mv2BsZUuXk/Svgd_hrK88I/AAAAAAAAADY/XCXqnmrl0Kk/s1600-h/JSON2HTML.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 289px; height: 400px;" src="http://3.bp.blogspot.com/_3mv2BsZUuXk/Svgd_hrK88I/AAAAAAAAADY/XCXqnmrl0Kk/s400/JSON2HTML.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5402100730239316930" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-3653628126641826087?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NjdMZTHqgKk:kaaVPdl99qM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NjdMZTHqgKk:kaaVPdl99qM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NjdMZTHqgKk:kaaVPdl99qM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NjdMZTHqgKk:kaaVPdl99qM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NjdMZTHqgKk:kaaVPdl99qM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NjdMZTHqgKk:kaaVPdl99qM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=NjdMZTHqgKk:kaaVPdl99qM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=NjdMZTHqgKk:kaaVPdl99qM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/3653628126641826087/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/11/parsing-and-visualising-json.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3653628126641826087?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3653628126641826087?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/11/parsing-and-visualising-json.html" title="Parsing and visualising  JSON" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_3mv2BsZUuXk/Svgd_hrK88I/AAAAAAAAADY/XCXqnmrl0Kk/s72-c/JSON2HTML.gif" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0QCQnY_fCp7ImA9WxNVFUo.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-6595544546768629829</id><published>2009-10-26T16:44:00.012Z</published><updated>2009-10-26T17:49:23.844Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-26T17:49:23.844Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="codec" /><category scheme="http://www.blogger.com/atom/ns#" term="freeware" /><category scheme="http://www.blogger.com/atom/ns#" term="media" /><title>Converting Media Formats</title><content type="html">There are so many media format in common use these days that it's difficult to keep up with them, not just with when and why to use each format, but also being able to read them or convert between them.&lt;br /&gt;&lt;br /&gt;Lately I found the need to convert a couple of different file formats that Windows isn't natively strong with. If you've ever tried to track down a codec for a slightly different format, then you'll know how annoying and confusing it can be, especially when you want to export to another format.&lt;br /&gt;&lt;br /&gt;There is one tool I have found to be very useful in this area, and it's a great piece of freeware. The name of the application is "&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.erightsoft.com/SUPER.html" target="_blank"&gt;SUPER ©  Simplified Universal Player Encoder &amp; Renderer&lt;/a&gt;&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.erightsoft.com/SUPER.html" target="_blank"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 420px; height: 454px;" src="http://hughsung.com/blog/media/1/20070507-tn_superc1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's a warning though - the website is not very aesthetic or user firendly, but it's worth the effort to get the free fully functioned application with codecs included. Just scroll to the bottom of the first two pages looking for the download link, and then the actual download link should be on the third page. If I post the download page link here it'll just redirect you to the first page anyway...&lt;br /&gt;&lt;br /&gt;Just to prove that it's useful, here a vdeo I made with a an old .m4a file that I could finally convert to a more useful wav/mp3 and threw together twith some screen captures from Winamp's Milkdrop plugin. I wrote this track years ago (when I was in my "synth" phase), the original files are long gone...&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DacdLkxtn-U&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_profilepage&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DacdLkxtn-U&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_profilepage&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-6595544546768629829?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=n7OS-QAKXvg:H0J-KW9qSfc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=n7OS-QAKXvg:H0J-KW9qSfc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=n7OS-QAKXvg:H0J-KW9qSfc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=n7OS-QAKXvg:H0J-KW9qSfc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=n7OS-QAKXvg:H0J-KW9qSfc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=n7OS-QAKXvg:H0J-KW9qSfc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=n7OS-QAKXvg:H0J-KW9qSfc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=n7OS-QAKXvg:H0J-KW9qSfc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/6595544546768629829/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/10/managing-media-formats.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6595544546768629829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/6595544546768629829?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/10/managing-media-formats.html" title="Converting Media Formats" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEIGQX8_fyp7ImA9WxNWEEo.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-522654622269901588</id><published>2009-10-09T09:22:00.005+01:00</published><updated>2009-10-09T09:22:00.147+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-09T09:22:00.147+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="statistics" /><category scheme="http://www.blogger.com/atom/ns#" term="Friday" /><category scheme="http://www.blogger.com/atom/ns#" term="graphs" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="freeware" /><title>Hey, Where'd My Space Go?</title><content type="html">Recently I was doing some routine stuff when I noticed the was a LOT less space on my main hard-drive than I expected. I was down to less than 500MB of space! I remember the days when I was smug about having a 30MB drive when the guy working on the next PC only had a 20MB drive. It's hard to believe in this age of relatively gigantic drives we can still fill them up without too much effort. I guess we can put it down to the ever increasing filesizes driven by higher pixel counts of digital cameras, the recent epidemic of software bloat, and the invention of peer-to-peer file sharing. &lt;br /&gt;&lt;br /&gt;I needed to free up some space, so I dug out my favourite drive-space analysis tool. It's pretty lean and has a great interface, so I thought I would share it here. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.steffengerlach.de/freeware/" target="_blank"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 490px; height: 435px;" src="http://www.steffengerlach.de/freeware/scnshot.gif" border="0" alt="Scanner" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is Steffen Gerlach's freeware application for Windows called &lt;a href="http://www.steffengerlach.de/freeware/" target="_blank"&gt;Scanner&lt;/a&gt;. Once the application has scanned your drive, you can drill down through each folder of the sunburst chart to easily identify what has been gobbling up your drive space. Admittedly the initial scanning can take a few minutes, but no more than it takes to grab a cup of coffee.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-522654622269901588?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=7qHibuJWUh4:-KxtcdnCcCs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=7qHibuJWUh4:-KxtcdnCcCs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=7qHibuJWUh4:-KxtcdnCcCs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=7qHibuJWUh4:-KxtcdnCcCs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=7qHibuJWUh4:-KxtcdnCcCs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=7qHibuJWUh4:-KxtcdnCcCs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=7qHibuJWUh4:-KxtcdnCcCs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=7qHibuJWUh4:-KxtcdnCcCs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/522654622269901588/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/10/hey-whered-my-space-go.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/522654622269901588?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/522654622269901588?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/10/hey-whered-my-space-go.html" title="Hey, Where'd My Space Go?" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcNRXw6fip7ImA9WxNXFkU.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-3247602963247551132</id><published>2009-10-04T10:48:00.032+01:00</published><updated>2009-10-04T21:11:34.216+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-04T21:11:34.216+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Perl" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="Movable Type" /><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="XAMPP" /><title>Installing Movable Type 4 on XAMPP</title><content type="html">&lt;a href="http://www.movabletype.com/" target="_blank"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 106px;" src="http://3.bp.blogspot.com/_3mv2BsZUuXk/Ssh1U3iV_kI/AAAAAAAAADQ/d8zYrbtkZ7Y/s320/mt4-logo.png" alt="" id="BLOGGER_PHOTO_ID_5388685955514629698" border="0" /&gt;&lt;/a&gt;Yesterday, I finally got &lt;a href="http://www.movabletype.com/" target="_blank"&gt;Movable Type 4&lt;/a&gt; working on my development PC. I needed to install it for a project I am working on, and found it to be a lot more troublesome than expected. Movable Type is a weblog publishing system that was first released back in October 2001. It is written in &lt;a href="http://en.wikipedia.org/wiki/PERL" target="_blank"&gt;Perl&lt;/a&gt;, and that's where the trouble started...&lt;br /&gt;&lt;br /&gt;Downloading the latest version and setting up a virtual host for the test site was all as easy as I would usually expect. Then I pulled up the &lt;a href="http://www.movabletype.org/documentation/installation/quick-start.html" target="_blank"&gt;Quick Start Instructions&lt;/a&gt; to make sure I didn't make any assumptions. I carefully followed the process, making allowances for my install being on windows localhost, and met with failure after failure.&lt;br /&gt;&lt;br /&gt;After much searching and reading, it became apparent that my old install of XAMPP required a Perl add-on patch. None of the download files I could find seemed to be the correct version, and since the current XAMPP installation package now includes Perl, I decided it was time to upgrade (see my &lt;a href="http://measurablewins.blogspot.com/2009/10/php-parse-error-syntax-error-unexpected.html" target="_blank"&gt;previous post&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;After the XAMPP upgrade, I started the Movable Type install again. More failures eventually pushed me to find a much more &lt;a href="http://www.cantoni.org/2007/06/21/movabletype-wordpress-xampp" target="_blank"&gt;helpful installation guide&lt;/a&gt; from Brian Cantoni. Due to the multiple sites I have set up on my development PC, I used a different path in Step 3, and I chose to use &lt;a href="http://www.webyog.com/" target="_blank"&gt;SQLyog&lt;/a&gt; instead of phpMyAdmin for steps 4 - 6.&lt;br /&gt;&lt;br /&gt;Step 7 is the crucial info missing from the Quick Start Instructions: &lt;blockquote&gt;In the folder `c:\xampp\cgi-bin\mt4`, edit all the *.cgi files and change the first line to: `#!c:\xampp\perl\bin\perl.exe`&lt;/blockquote&gt;&lt;br /&gt;Unfortunately, Cantoni's guide doesn't mention how to handle the config file. Thankfully, you can find that information in Step 2 of this guide on &lt;a href="http://www.fortysomething.ca/mt/etc/archives/005302.php" target="_blank"&gt;etc&lt;/a&gt;. Another helpful hint in etc's guide is to use the MT system check script &lt;span style="font-family: Courier new;"&gt;http://localhost/cgi-bin/mt/mt.cgi&lt;/span&gt; before trying to initialise your new install.&lt;br /&gt;&lt;br /&gt;This is the point, I found that I still hadn't quite cracked it. I had some kind of Perl/mySQL install issue.&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;DBD::mysql&lt;/span&gt;&lt;br/&gt;Your server does not have DBD::mysql installed, or DBD::mysql requires another module that is not installed. The DBD::mysql database driver is required to use MySQL Database. Please consult the installation instructions for help in installing DBD::mysql.&lt;/blockquote&gt;&lt;br /&gt;I resorted to installing &lt;a href="http://www.activestate.com/activeperl/" target="_blank"&gt;ActiveState Perl&lt;/a&gt; to see how that compared. It wasn't the solution, but it did help me identify how to fix the DBD::mysql issue (I have subsequently uninstalled ActiveState). It seems that there was a dll file missing from &lt;span style="font-style:italic;"&gt;C:\xampp\perl\site\lib\auto\DBD\mysql&lt;/span&gt; that XAMPP had already installed elsewhere on my machine. I copied the file &lt;span style="font-style:italic;"&gt;C:\xampp\mysql\bin\libmysql.dll&lt;/span&gt; and pasted it into &lt;span style="font-style:italic;"&gt;C:\xampp\perl\site\lib\auto\DBD\mysql&lt;/span&gt; and finally I had a working installation of Movable Type v4.31 on XAMPP v1.7.2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-3247602963247551132?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=rIPgfSok3T4:ihCkKUCzrcs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=rIPgfSok3T4:ihCkKUCzrcs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=rIPgfSok3T4:ihCkKUCzrcs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=rIPgfSok3T4:ihCkKUCzrcs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=rIPgfSok3T4:ihCkKUCzrcs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=rIPgfSok3T4:ihCkKUCzrcs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=rIPgfSok3T4:ihCkKUCzrcs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=rIPgfSok3T4:ihCkKUCzrcs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/3247602963247551132/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/10/installing-movable-type-4-on-xampp.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3247602963247551132?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/3247602963247551132?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/10/installing-movable-type-4-on-xampp.html" title="Installing Movable Type 4 on XAMPP" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_3mv2BsZUuXk/Ssh1U3iV_kI/AAAAAAAAADQ/d8zYrbtkZ7Y/s72-c/mt4-logo.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0MGR34zfip7ImA9WxNXFkg.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-928088069841145382</id><published>2009-10-03T09:59:00.029+01:00</published><updated>2009-10-04T11:17:06.086+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-04T11:17:06.086+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="XAMPP" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><title>PHP Parse Error: syntax error, unexpected $end</title><content type="html">&lt;a href="http://www.apachefriends.org/en/xampp.html"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 59px;" src="http://www.apachefriends.org/images/1240.jpg" alt="" border="0" /&gt;&lt;/a&gt;Yesterday I decided to upgrade my &lt;a href="http://www.apachefriends.org/en/xampp.html" target="_blank"&gt;XAMPP&lt;/a&gt; install from (ye olde) v1.5.5 to (the current) v1.7.2. This was mainly precipitated by my inability to install &lt;a href="http://www.movabletype.org/" target="_blank"&gt;Movable Type&lt;/a&gt; - apparently due to missing &lt;a href="http://en.wikipedia.org/wiki/PERL" target="_blank"&gt;PERL&lt;/a&gt; libs. I like XAMPP. In my experience it's the easiest way to install the Apache/PHP/MySQL stack on a Win32 machine and I've been using it for years. So, since there was no simple upgrade path from v1.5.5 to v1.7.2, I set about backing up all of my development &lt;a href="http://www.mysql.com/" target="_blank"&gt;mySQL&lt;/a&gt; databases, and &lt;span style="font-style: italic;"&gt;httpd.conf&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;extra\httpd-vhosts.conf&lt;/span&gt; files, etc...&lt;br /&gt;&lt;br /&gt;I like to keep my root folder clean, so on the last install I'd opted for "&lt;span style="font-style: italic;"&gt;c:\program files\xampp&lt;/span&gt;", but since I'd read that "program files" could cause major PERL problems, this time I installed in "&lt;span style="font-style: italic;"&gt;c:\xampp&lt;/span&gt;". Installation went pretty smoothly, and I was able to drop in my old &lt;span style="font-style: italic;"&gt;extra\httpd-vhosts.conf&lt;/span&gt; file with no problems. Then I re-imported the mySQL databases I needed and checked all my development sites were OK.&lt;br /&gt;&lt;br /&gt;I did have an unexpected problem when I tested one of my sites - I was presented with the following error:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Parse error:&lt;/span&gt; syntax error, unexpected $end in &lt;span style="font-style:italic;"&gt;{filename}&lt;/span&gt; on line &lt;span style="font-style:italic;"&gt;{linenumber}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;If you &lt;a href="http://www.google.com/search?&amp;q=XAMPP+parse+error+syntax+error+unexpected+%24end+in" target="_blank"&gt;Google&lt;/a&gt; that error, you'll see a lot of pages stating that "&lt;span style="font-style:italic;"&gt;it is caused by a missing curly bracket&lt;/span&gt;" or a bad class definition, which was definitely not the case for me. The cause in this instance was that this particular site's code was using &lt;a href="http://uk.php.net/manual/en/ini.core.php" target="_blank"&gt;Short Open Tags&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;XAMPP's php.ini file states that Short Open Tags is a php.ini directive that: &lt;blockquote&gt;"&lt;span style="font-style:italic;"&gt;...determines whether or not PHP will recognize code between &amp;lt;? and ?&amp;gt; tags as PHP source which should be processed as such. It's been recommended for several years that you not use the short tag "short cut" and instead to use the full &amp;lt;?php and ?&amp;gt; tag combination. With the wide spread use of XML and use of these tags by other languages, the server can become easily confused and end up parsing the wrong code in the wrong context. But because this short cut has been a feature for such a long time, it's currently still supported for backwards compatibility, but we recommend you don't use them.&lt;/span&gt;"&lt;/blockquote&gt;&lt;br /&gt;Due to the number of pages using these codes, I opted to update php.ini to allow Short Open Tags, but I fully endorse the above recommendation to use &lt;span style="font-weight:bold;"&gt;&amp;lt?php&lt;/span&gt; in any new or updated code.&lt;br /&gt;&lt;br /&gt;Finding the cause and implementing the solution was a simple matter, however I thought I should post a note about it here as the curly bracket comments could confuse some users, and hopefully this will help somebody. The default PHP setting for this directive is "On", (although XAMPP have disabled it in their install), so Short Open Tags will be supported unless your php.ini contains the following line - I'll let you decide if that's good or bad.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;short_open_tag = Off&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-928088069841145382?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=f049I2tVtV8:YQZXv_t5kGM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=f049I2tVtV8:YQZXv_t5kGM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=f049I2tVtV8:YQZXv_t5kGM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=f049I2tVtV8:YQZXv_t5kGM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=f049I2tVtV8:YQZXv_t5kGM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=f049I2tVtV8:YQZXv_t5kGM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=f049I2tVtV8:YQZXv_t5kGM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=f049I2tVtV8:YQZXv_t5kGM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/928088069841145382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/10/php-parse-error-syntax-error-unexpected.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/928088069841145382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/928088069841145382?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/10/php-parse-error-syntax-error-unexpected.html" title="PHP Parse Error: syntax error, unexpected $end" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk4GSXg-eyp7ImA9WxNRE0k.&quot;"><id>tag:blogger.com,1999:blog-7057248431195415734.post-4642360086018735857</id><published>2009-09-07T18:32:00.003+01:00</published><updated>2009-09-07T18:35:28.653+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T18:35:28.653+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TrackMania" /><category scheme="http://www.blogger.com/atom/ns#" term="How To" /><category scheme="http://www.blogger.com/atom/ns#" term="PS3" /><category scheme="http://www.blogger.com/atom/ns#" term="gadgets" /><title>How to use Playstation Controllers on PC</title><content type="html">Last week I posted how useful I'd found the wired &lt;a href="http://www.pantsonhead.com/2009/09/reusing-singstar-microphones/"&gt;SingStar mic's USB adaptor&lt;/a&gt; to be outside of the SingStar game. Writing that post got me thinking about the old PS2 controllers and how useful these could be. Like many PS3 owners, I wasn't keen to shell out £35 on a second wireless controller and purchased a &lt;a href="http://www.amazon.co.uk/exec/obidos/ASIN/B000NNOAEG/sunflowerstud-21" target="_blank"&gt;PS2/PS3 USB adaptor&lt;/a&gt;. This works pretty well on Little Big Planet or any other games not reliant on SIX-AXIS motion.&lt;br /&gt;&lt;br /&gt;Because I had purchased this adaptor for the PS3, it had not occured to me before now to try plugging this USB adaptor into my PC. I tried this today and was pleased to see it automatically install as "HID-compliant game controller" on both XP and Vista. The next thing I did was fire up &lt;a href="http://www.trackmania.com/" target="_blank"&gt;TrackMania Nations Forever&lt;/a&gt; on the hunch that it would be fun to play with a game controller. The controller was instantly recognised although all actions seemed to be assigned to the buttons on the left side of the controller. I prefer steering on the left and acceleration on the right, so I went into the Inputs configuration.&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a title="TMNF Inputs for game controller by PantsOnHead, on Flickr" href="http://www.flickr.com/photos/73073372@N00/3896963824/" target="_blank"&gt;&lt;img class="aligncenter" src="http://farm3.static.flickr.com/2533/3896963824_7ea8cfd54a.jpg" alt="TMNF Inputs for game controller" width="500" height="313" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;This is the point where things started to get a little confusing. I had no idea which button was Button 0 or 1 or 4, etc. So after a little but of experimentation I put together this handy reference image.&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://www.flickr.com/photos/73073372@N00/3896185001/" title="PS2 button numbers by PantsOnHead, on Flickr" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2559/3896185001_306767507c_o.jpg" width="498" height="334" alt="PS2 button numbers" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;I even tried this with an old PS1 controller and it also performed well (apart from the controller's buttons being a little sticky). The only difficulty I found (apart from mapping the buttons) was finding games that support game controller input, TrackMania is the only game I have installed that does. It is nice to play it with a controller though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7057248431195415734-4642360086018735857?l=measurablewins.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=_2J-QNEIXfo:pYC2mrn1HrM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=_2J-QNEIXfo:pYC2mrn1HrM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=_2J-QNEIXfo:pYC2mrn1HrM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=_2J-QNEIXfo:pYC2mrn1HrM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=_2J-QNEIXfo:pYC2mrn1HrM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=_2J-QNEIXfo:pYC2mrn1HrM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MeasurableWins?a=_2J-QNEIXfo:pYC2mrn1HrM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MeasurableWins?i=_2J-QNEIXfo:pYC2mrn1HrM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://measurablewins.blogspot.com/feeds/4642360086018735857/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://measurablewins.blogspot.com/2009/09/how-to-use-playstation-controllers-on.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/4642360086018735857?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7057248431195415734/posts/default/4642360086018735857?v=2" /><link rel="alternate" type="text/html" href="http://measurablewins.blogspot.com/2009/09/how-to-use-playstation-controllers-on.html" title="How to use Playstation Controllers on PC" /><author><name>GregJxn</name><uri>http://www.blogger.com/profile/09828030539845311474</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_3mv2BsZUuXk/SgMX6j1c-yI/AAAAAAAAACY/6WJKKYw2WyI/S220/Bobo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm3.static.flickr.com/2533/3896963824_7ea8cfd54a_t.jpg" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

