Firefox Search Plugin for PHP.net

php Dan, one of my co-workers, has been tooling around with PHP and easily plopped a PHP search extension into Internet Explorer 7. Well. I don’t like IE7 as much as Firefox and sadly there’s no super easy way to add a search plugin (if it doesn’t exist or you can’t find one…like in my case) without coding up the XML.

So, using Mozilla’s instructions I whipped up a PHP.net search plugin. Here it is to anyone interested:

<opensearchdescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
	<shortname>PHP</shortname>
	<description>PHP.net</description>
	<inputencoding>UTF-8</inputencoding>
	<image width="16" height="16">data:image/jpeg,%FF%D8%FF%E0%00%10JFIF%00%01%02%01%00H%00H%00%00%FF%E1%03%CCExif%00%00MM%00*%00%00%00%08%00%07%01%12%00%03%00%00%00%01%00%01%00%00%01%1A%00%05%00%00%00%01%00%00%00b%01%1B%00%05%00%00%00%01%00%00%00j%01(%00%03%00%00%00%01%00%02%00%00%011%00%02%00%00%00%14%00%00%00r%012%00%02%00%00%00%14%00%00%00%86%87i%00%04%00%00%00%01%00%00%00%9C%00%00%00%C8%00%00%00H%00%00%00%01%00%00%00H%00%00%00%01Adobe%20Photoshop%207.0%002006%3A11%3A03%2015%3A18%3A39%00%00%00%00%03%A0%01%00%03%00%00%00%01%FF%FF%00%00%A0%02%00%04%00%00%00%01%00%00%00%10%A0%03%00%04%00%00%00%01%00%00%00%10%00%00%00%00%00%00%00%06%01%03%00%03%00%00%00%01%00%06%00%00%01%1A%00%05%00%00%00%01%00%00%01%16%01%1B%00%05%00%00%00%01%00%00%01%1E%01(%00%03%00%00%00%01%00%02%00%00%02%01%00%04%00%00%00%01%00%00%01%26%02%02%00%04%00%00%00%01%00%00%02%9E%00%00%00%00%00%00%00H%00%00%00%01%00%00%00H%00%00%00%01%FF%D8%FF%E0%00%10JFIF%00%01%02%01%00H%00H%00%00%FF%ED%00%0CAdobe_CM%00%02%FF%EE%00%0EAdobe%00d%80%00%00%00%01%FF%DB%00%84%00%0C%08%08%08%09%08%0C%09%09%0C%11%0B%0A%0B%11%15%0F%0C%0C%0F%15%18%13%13%15%13%13%18%11%0C%0C%0C%0C%0C%0C%11%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%01%0D%0B%0B%0D%0E%0D%10%0E%0E%10%14%0E%0E%0E%14%14%0E%0E%0E%0E%14%11%0C%0C%0C%0C%0C%11%11%0C%0C%0C%0C%0C%0C%11%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%FF%C0%00%11%08%00%10%00%10%03%01%22%00%02%11%01%03%11%01%FF%DD%00%04%00%01%FF%C4%01%3F%00%00%01%05%01%01%01%01%01%01%00%00%00%00%00%00%00%03%00%01%02%04%05%06%07%08%09%0A%0B%01%00%01%05%01%01%01%01%01%01%00%00%00%00%00%00%00%01%00%02%03%04%05%06%07%08%09%0A%0B%10%00%01%04%01%03%02%04%02%05%07%06%08%05%03%0C3%01%00%02%11%03%04!%121%05AQa%13%22q%812%06%14%91%A1%B1B%23%24%15R%C1b34r%82%D1C%07%25%92S%F0%E1%F1cs5%16%A2%B2%83%26D%93TdE%C2%A3t6%17%D2U%E2e%F2%B3%84%C3%D3u%E3%F3F'%94%A4%85%B4%95%C4%D4%E4%F4%A5%B5%C5%D5%E5%F5Vfv%86%96%A6%B6%C6%D6%E6%F67GWgw%87%97%A7%B7%C7%D7%E7%F7%11%00%02%02%01%02%04%04%03%04%05%06%07%07%06%055%01%00%02%11%03!1%12%04AQaq%22%13%052%81%91%14%A1%B1B%23%C1R%D1%F03%24b%E1r%82%92CS%15cs4%F1%25%06%16%A2%B2%83%07%265%C2%D2D%93T%A3%17dEU6te%E2%F2%B3%84%C3%D3u%E3%F3F%94%A4%85%B4%95%C4%D4%E4%F4%A5%B5%C5%D5%E5%F5Vfv%86%96%A6%B6%C6%D6%E6%F6'7GWgw%87%97%A7%B7%C7%FF%DA%00%0C%03%01%00%02%11%03%11%00%3F%00N%EA%D8%D5%E4%D9%8Fk%2Cg%A6v%8BN%CD%8E!%D5Uf%DF%D2oo%A6%EC%8A%FF%00%9CbG%AB%E2%FD%AA%BCv%B2%C7%8B%1E%2B77a%60s%ADv%1D%7F%9F%BD%CD%B2%E6%FEcT%9F%D2%F0%DE2K%ABa%B3-%E1%F6%D8k%05%C5%AD%7Dv%FA%0F%9F%A7_%E8%B6%7F%DF%14q%FAF%16%3EO%DA%19%5B%09f%EF%B3%B7%D3kE%5B%9Fm%DF%A1%89%DB%FC%F7%A7%EDo%E6%2B%DF%AD%B4%3F%FF%D9%FF%ED%08%86Photoshop%203.0%008BIM%04%25%00%00%00%00%00%10%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%008BIM%03%ED%00%00%00%00%00%10%00H%00%00%00%01%00%01%00H%00%00%00%01%00%018BIM%04%26%00%00%00%00%00%0E%00%00%00%00%00%00%00%00%00%00%3F%80%00%008BIM%04%0D%00%00%00%00%00%04%00%00%00x8BIM%04%19%00%00%00%00%00%04%00%00%00%1E8BIM%03%F3%00%00%00%00%00%09%00%00%00%00%00%00%00%00%01%008BIM%04%0A%00%00%00%00%00%01%00%008BIM'%10%00%00%00%00%00%0A%00%01%00%00%00%00%00%00%00%018BIM%03%F5%00%00%00%00%00H%00%2Fff%00%01%00lff%00%06%00%00%00%00%00%01%00%2Fff%00%01%00%A1%99%9A%00%06%00%00%00%00%00%01%002%00%00%00%01%00Z%00%00%00%06%00%00%00%00%00%01%005%00%00%00%01%00-%00%00%00%06%00%00%00%00%00%018BIM%03%F8%00%00%00%00%00p%00%00%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%03%E8%00%00%00%00%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%03%E8%00%00%00%00%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%03%E8%00%00%00%00%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%03%E8%00%008BIM%04%00%00%00%00%00%00%02%00%018BIM%04%02%00%00%00%00%00%04%00%00%00%008BIM%04%08%00%00%00%00%00%10%00%00%00%01%00%00%02%40%00%00%02%40%00%00%00%008BIM%04%1E%00%00%00%00%00%04%00%00%00%008BIM%04%1A%00%00%00%00%03I%00%00%00%06%00%00%00%00%00%00%00%00%00%00%00%10%00%00%00%10%00%00%00%0A%00U%00n%00t%00i%00t%00l%00e%00d%00-%001%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00%10%00%00%00%10%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%10%00%00%00%01%00%00%00%00%00%00null%00%00%00%02%00%00%00%06boundsObjc%00%00%00%01%00%00%00%00%00%00Rct1%00%00%00%04%00%00%00%00Top%20long%00%00%00%00%00%00%00%00Leftlong%00%00%00%00%00%00%00%00Btomlong%00%00%00%10%00%00%00%00Rghtlong%00%00%00%10%00%00%00%06slicesVlLs%00%00%00%01Objc%00%00%00%01%00%00%00%00%00%05slice%00%00%00%12%00%00%00%07sliceIDlong%00%00%00%00%00%00%00%07groupIDlong%00%00%00%00%00%00%00%06originenum%00%00%00%0CESliceOrigin%00%00%00%0DautoGenerated%00%00%00%00Typeenum%00%00%00%0AESliceType%00%00%00%00Img%20%00%00%00%06boundsObjc%00%00%00%01%00%00%00%00%00%00Rct1%00%00%00%04%00%00%00%00Top%20long%00%00%00%00%00%00%00%00Leftlong%00%00%00%00%00%00%00%00Btomlong%00%00%00%10%00%00%00%00Rghtlong%00%00%00%10%00%00%00%03urlTEXT%00%00%00%01%00%00%00%00%00%00nullTEXT%00%00%00%01%00%00%00%00%00%00MsgeTEXT%00%00%00%01%00%00%00%00%00%06altTagTEXT%00%00%00%01%00%00%00%00%00%0EcellTextIsHTMLbool%01%00%00%00%08cellTextTEXT%00%00%00%01%00%00%00%00%00%09horzAlignenum%00%00%00%0FESliceHorzAlign%00%00%00%07default%00%00%00%09vertAlignenum%00%00%00%0FESliceVertAlign%00%00%00%07default%00%00%00%0BbgColorTypeenum%00%00%00%11ESliceBGColorType%00%00%00%00None%00%00%00%09topOutsetlong%00%00%00%00%00%00%00%0AleftOutsetlong%00%00%00%00%00%00%00%0CbottomOutsetlong%00%00%00%00%00%00%00%0BrightOutsetlong%00%00%00%00%008BIM%04%11%00%00%00%00%00%01%01%008BIM%04%14%00%00%00%00%00%04%00%00%00%048BIM%04%0C%00%00%00%00%02%BA%00%00%00%01%00%00%00%10%00%00%00%10%00%00%000%00%00%03%00%00%00%02%9E%00%18%00%01%FF%D8%FF%E0%00%10JFIF%00%01%02%01%00H%00H%00%00%FF%ED%00%0CAdobe_CM%00%02%FF%EE%00%0EAdobe%00d%80%00%00%00%01%FF%DB%00%84%00%0C%08%08%08%09%08%0C%09%09%0C%11%0B%0A%0B%11%15%0F%0C%0C%0F%15%18%13%13%15%13%13%18%11%0C%0C%0C%0C%0C%0C%11%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%01%0D%0B%0B%0D%0E%0D%10%0E%0E%10%14%0E%0E%0E%14%14%0E%0E%0E%0E%14%11%0C%0C%0C%0C%0C%11%11%0C%0C%0C%0C%0C%0C%11%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%0C%FF%C0%00%11%08%00%10%00%10%03%01%22%00%02%11%01%03%11%01%FF%DD%00%04%00%01%FF%C4%01%3F%00%00%01%05%01%01%01%01%01%01%00%00%00%00%00%00%00%03%00%01%02%04%05%06%07%08%09%0A%0B%01%00%01%05%01%01%01%01%01%01%00%00%00%00%00%00%00%01%00%02%03%04%05%06%07%08%09%0A%0B%10%00%01%04%01%03%02%04%02%05%07%06%08%05%03%0C3%01%00%02%11%03%04!%121%05AQa%13%22q%812%06%14%91%A1%B1B%23%24%15R%C1b34r%82%D1C%07%25%92S%F0%E1%F1cs5%16%A2%B2%83%26D%93TdE%C2%A3t6%17%D2U%E2e%F2%B3%84%C3%D3u%E3%F3F'%94%A4%85%B4%95%C4%D4%E4%F4%A5%B5%C5%D5%E5%F5Vfv%86%96%A6%B6%C6%D6%E6%F67GWgw%87%97%A7%B7%C7%D7%E7%F7%11%00%02%02%01%02%04%04%03%04%05%06%07%07%06%055%01%00%02%11%03!1%12%04AQaq%22%13%052%81%91%14%A1%B1B%23%C1R%D1%F03%24b%E1r%82%92CS%15cs4%F1%25%06%16%A2%B2%83%07%265%C2%D2D%93T%A3%17dEU6te%E2%F2%B3%84%C3%D3u%E3%F3F%94%A4%85%B4%95%C4%D4%E4%F4%A5%B5%C5%D5%E5%F5Vfv%86%96%A6%B6%C6%D6%E6%F6'7GWgw%87%97%A7%B7%C7%FF%DA%00%0C%03%01%00%02%11%03%11%00%3F%00N%EA%D8%D5%E4%D9%8Fk%2Cg%A6v%8BN%CD%8E!%D5Uf%DF%D2oo%A6%EC%8A%FF%00%9CbG%AB%E2%FD%AA%BCv%B2%C7%8B%1E%2B77a%60s%ADv%1D%7F%9F%BD%CD%B2%E6%FEcT%9F%D2%F0%DE2K%ABa%B3-%E1%F6%D8k%05%C5%AD%7Dv%FA%0F%9F%A7_%E8%B6%7F%DF%14q%FAF%16%3EO%DA%19%5B%09f%EF%B3%B7%D3kE%5B%9Fm%DF%A1%89%DB%FC%F7%A7%EDo%E6%2B%DF%AD%B4%3F%FF%D98BIM%04!%00%00%00%00%00U%00%00%00%01%01%00%00%00%0F%00A%00d%00o%00b%00e%00%20%00P%00h%00o%00t%00o%00s%00h%00o%00p%00%00%00%13%00A%00d%00o%00b%00e%00%20%00P%00h%00o%00t%00o%00s%00h%00o%00p%00%20%007%00.%000%00%00%00%01%008BIM%04%06%00%00%00%00%00%07%00%08%01%01%00%01%01%00%FF%E1%12Hhttp%3A%2F%2Fns.adobe.com%2Fxap%2F1.0%2F%00%3C%3Fxpacket%20begin%3D'%EF%BB%BF'%20id%3D'W5M0MpCehiHzreSzNTczkc9d'%3F%3E%0A%3C%3Fadobe-xap-filters%20esc%3D%22CR%22%3F%3E%0A%3Cx%3Axapmeta%20xmlns%3Ax%3D'adobe%3Ans%3Ameta%2F'%20x%3Axaptk%3D'XMP%20toolkit%202.8.2-33%2C%20framework%201.5'%3E%0A%3Crdf%3ARDF%20xmlns%3Ardf%3D'http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23'%20xmlns%3AiX%3D'http%3A%2F%2Fns.adobe.com%2FiX%2F1.0%2F'%3E%0A%0A%20%3Crdf%3ADescription%20about%3D'uuid%3A662ee06d-6b78-11db-bb16-f420df7fe7bb'%0A%20%20xmlns%3AxapMM%3D'http%3A%2F%2Fns.adobe.com%2Fxap%2F1.0%2Fmm%2F'%3E%0A%20%20%3CxapMM%3ADocumentID%3Eadobe%3Adocid%3Aphotoshop%3Af2ecf595-6b77-11db-bb16-f420df7fe7bb%3C%2FxapMM%3ADocumentID%3E%0A%20%3C%2Frdf%3ADescription%3E%0A%0A%3C%2Frdf%3ARDF%3E%0A%3C%2Fx%3Axapmeta%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%3C%3Fxpacket%20end%3D'w'%3F%3E%FF%EE%00!Adobe%00d%40%00%00%00%01%03%00%10%03%02%03%06%00%00%00%00%00%00%00%00%00%00%00%00%FF%DB%00%84%00%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%01%02%02%02%02%02%02%02%02%02%02%02%03%03%03%03%03%03%03%03%03%03%01%01%01%01%01%01%01%01%01%01%01%02%02%01%02%02%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%03%FF%C2%00%11%08%00%10%00%10%03%01%11%00%02%11%01%03%11%01%FF%C4%00%8B%00%00%03%00%00%00%00%00%00%00%00%00%00%00%00%00%00%02%04%05%01%00%03%01%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01%03%08%10%00%01%03%04%02%03%00%00%00%00%00%00%00%00%00%00%07%03%04%05%00%12%06%08%01%11%02%15%17%11%00%02%03%01%01%00%02%03%01%00%00%00%00%00%00%00%03%06%04%05%07%02%01%15%17%11%12%16%08%12%00%02%02%01%03%01%09%01%00%00%00%00%00%00%00%00%01%02%11%03%12%00!%04Q%201Aq%222%13%05%15%14%FF%DA%00%0C%03%01%01%02%11%03%11%00%00%00-_5%D1~%C4v%7F%FF%DA%00%08%01%02%00%01%05%00%5C%8A%DD%BB%EF%A44%F6%0B%E0%0DVJ%1B%00c%1B)%FF%DA%00%08%01%03%00%01%05%00%B6%AD%AB%AB%9F.%EB%FF%DA%00%08%01%01%00%01%05%00%93%DB%01%AE%3AH_nF%3C%93%26%B5%7C9%3E%86%03%A8%C1A%C1%23%FF%DA%00%08%01%02%02%06%3F%00%E7p%ED%FA%CB%00%A9%CA%ABd%B0%F8%D8%88%DDJ%C6%60%EE%00%D8%C1%3A%AB%89%F9%CEx%CDn%06%C5e%20M%A6%A512C0%1E%D9%80d%EB%EDIz%BF%B3%95%C8%0El)'%E3%CD%5C%D6D%FA%81%C7%CB_%A1%C8%14%DBZdjA%5C%0A%CBX%EE%0A%EF%1B%06%03%BB%C2zk%FF%DA%00%08%01%03%02%06%3F%00%EC%7F%FF%DA%00%08%01%01%01%06%3F%00t%CE%9A%D64e%C1%A7ZsP%17%A9aA%3Acd%B8%2FY%3A%03g%C3t%07%CFX%E9%84%A3g%B2T%CB1nk%EB%E3%C9%80)%5D%04%BE%94%5C%08%8A%99%BDJ%E3%FB%0Cfw%889%E1%B4zO%E0%25%A2P%B0%DF%EE%D7%BF%E7%24%C3L%FD%9E%C4%CBqH%E3%A6R%F2%10J%AC%813%D8%90%E5q%22W%02%E3%82~6%B2X*%A7%19%93zt%A2f%D0%1C%A6%E6%CB%96%F7%D7%8A%D4Z%1Ez%F6%3C%AE%FC%F3gy-%8D6lt%3F%8F7%06%928%A4%E6W%26%24%22%7B%1F%81w%F6E*%A2D%A9k%E5g%FA%92%94Yb%BA%F4%1CL%0D%3A%9E%9B%A6L%1Ey%D49%F60%A9%3A%04%7D%18u%23%F6%0C*%FF%00x%15X%E4%0F%D1%FAo%23%83%FF%D9</image>
	<url type="text/html" method="post" template="http://php.net/search.php">
		<param name="show" value="quickref"/>
		<param name="pattern" value="{searchTerms}"/>
	</url>
	<moz :SearchForm>http://php.net/search.php</moz>
</opensearchdescription>

If you’re on a Windows XP box, save the XML as php.xml and plop it in:

c:/Documents and Settings/{user}/Application Data/Mozilla/Firefox/Profiles/{something}.default/searchplugins/

If you’re on a Mac, place php.xml in:

/Users/{user}/Library/Application Support/Firefox/Profiles/{something}.default/searchplugins/

MasterWish – Practicing What I Preach

masterwish MasterWish, my labor of love (created with my friends Zach Tirrell and Jon Emmons) is my playground for Ajax and Web 2.0 experiments.

If you haven’t been acquainted with the site, its a wishlist site with a schlew of features. The high point is the ability to secure down lists and grant access to specific buddy groups. I’m pleased to say that we have gained a decent member base in the past 8 months and I am also happy to say that things are going to change around shortly!

MasterWish was built using SAJAX as the tool of choice for Ajax communication but as I’ve mentioned in the past, I am a Prototype convert. My knowledge of Ajax, JSON, and general application structure has been morphing so much in recent weeks that I have held off in completely revamping the wish list site.

Things are changing. I have begun the work to implement the following:

  • Creation of more “hackable” Web Service APIs using SOAP and REST
  • Representation of data using both XML and JSON
  • Ajax powered by Prototype
  • Sweet DOM manipulation powered by Script.aculo.us
  • Separation of Layout and Logic with event:Selectors
  • and of course, we’re already doing: Server-Side Templating for greater separation of Layout and Logic.

Sign up. Stay tuned. Get gifts.

Thomas Fuchs of Script.aculo.us: Ajaxian Podcast

Ajaxian has posted a podcast of their interview with Thomas Fuchs, the creator of Script.aculo.us. Ajaxian summarizes the content that is discussed:

  • How script.acuo.us was born out of a real project
  • Why Rails was chosen for Fluxiom
  • Where Rails shines with Ajax
  • The new RJS templates feature that makes Ajax even easier
  • The difference between Prototype and Script.aculo.us
  • How Script.aculo.us is available in Rails 1.0
  • Future plans for Script.aculo.us
  • When you should use the cool effects, and when you should not
  • About drag and drop and web usability
  • Challenges that Thomas has faced with his Ajax projects
  • Why you would choose an Ajax application versus using other technologies such as Flash
  • How hard it is to build a very rich Ajax application
  • How to handle browser differences
  • Experiences with DOM manipulation and innerHTML
  • How naming collisions are not as much of an issue in recent builds of Prototype

Here’s two tidbits of information that I’ll share with you that really stood out for me:

  • Fuchs summed up the reason for using Ajax over Flash nicely. Flash isn’t for developers…(and I hold that Flash isn’t very maintainable)
  • XML wrappers for objects passed from the server via Ajax is MUCH slower than simply passing JSON. It seems Zimbra has actially completely re-architected their product to utilize JSON over XML wrappers solely based on parsing performance! Regarding the use of XML wrappers, Fuchs says: “…its dog slow. Don’t do it.”

Its good to see someone whose work I respect have the same opinions as myself. Makes me feel like I’m doing something right.

Here’s the podcast.

Google Widgets

In my recent post on Windows Live Gadgets I shot down Google because they hadn’t already created their own widget/gadget engine for creating hosted…well…widgets. It seems they were waiting because they could do it better. Today I found out through Slashdot that Google released their version.

Their widget API is available here. At first glance it seems that the Google widgets are a bit more robust and versatile than the Microsoft gadgets. I’ll be playing with these shortly to see what I can come up with and do a thorough compare/contrast. These are the differences I see (at first glance, mind you) between the two companies’ implementations of the same idea:

  • Google Widgets are aimed at a completely web-centric approach. They do not offer local Widgets like Microsoft Gadgets does. This is actually a win in my book.
  • Microsoft is using RSS syntax for their XML with some external javascript loaded along with it. (I’ll get more technical when I learn a bit more about the process). Google, on the other hand is using what appears to be their own proprietary markup with the inclusion of external javascript as well.
  • Microsoft’s implementation prevents the use of the id tag which makes doing some sweet dynamic stuff…well…painful. Google allows it, and goes a step further. They include a sweet little feature called __MODULE_ID__ that you can tack on to the end of your id tags so things will work fine with multiple instances of your widget on the same page. Another win for Google.

Like I said with the Windows Live and MSN Start post, I’ll be doing some heavy research into these widgets and gadgets and bring forth more details and some example code.

MSN Start & Windows Live Gadgets

MSN Start and Windows Live, which are competitors for Google/ig have jumped ahead of google and are now offering a repository for developers to create XML/javascript based ‘gadgets’!

There are two types of gadgets. A remotely hosted gadget, where a site like MasterWish would create a gadget and make the URL to the gadget’s XML file publicly available; the user then enters the URL and viola! The gadget is added! (after a confirmation) The second type of gadget is the locally hosted gadget, where you can store a gadget on your machine (Windows only). You load the gadget in the same way you do a hosted gadget…There seem to be a few catches with the local gadgets:

  • First and foremost, its not web centric…the gadget is on your machine. If you head on over to a friend’s house, that gadget won’t be available to you.
  • The local gadgets must be coded as such.
  • Windows only

The benefits with the locally hosted gadget? Well, you can do some more advanced stuff with them like messing with your local applications. For example, there are some gadgets out there that manipulate the data from iTunes…the gadgets are pretty sweet. Local gadgets are neat…but I’m not sold on them.

What really throws me for a loop is that Microsoft implemented gadgets before Google…you’d think Google would see this coming. tsk tsk tsk. All the same, I’m going to do some little experiments with gadgets and see what I can come up with.