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

<channel>
	<title>Hypn.za.net &#187; programming</title>
	<atom:link href="http://www.hypn.za.net/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hypn.za.net/blog</link>
	<description>Games, programming, and general geekyness =)</description>
	<lastBuildDate>Fri, 27 Jan 2012 09:37:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Twitter Avatar Image Hackery</title>
		<link>http://www.hypn.za.net/blog/2012/01/12/twitter-avatar-image-hackery/</link>
		<comments>http://www.hypn.za.net/blog/2012/01/12/twitter-avatar-image-hackery/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 16:25:38 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[hacks]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=588</guid>
		<description><![CDATA[Twitter does something I consider to be poor security-wise&#8230; not renaming, or removing EXIF information from, uploaded avatar images. There are a few potential security issues around this, all of which I&#8217;ve personally come across: The image might be named with the person&#8217;s first and last name &#8211; potentially disclosing more information than they intended [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter does something I consider to be poor security-wise&#8230; not renaming, or removing EXIF information from, uploaded avatar images. There are a few potential security issues around this, all of which I&#8217;ve personally come across:</p>
<ol>
<li>The image might be named with the person&#8217;s first and last name &#8211; potentially disclosing more information than they intended to in their Twitter profile</li>
<li>Many people download their Facebook Profile picture to use on Twitter  &#8211; Facebook renames uploaded files to include the Facebook user ID, allowing you to easily find their Facebook profile (as opposed to trying to search on their first and last name)</li>
<li>If the original filename is unique enough you can often find other related pictures just by Goolging</li>
<li>You can use something like <a title="Jeffrey's Exif viewer" href="http://www.google.co.za/url?sa=t&amp;rct=j&amp;q=online%20exif&amp;source=web&amp;cd=1&amp;ved=0CCAQFjAA&amp;url=http%3A%2F%2Fregex.info%2Fexif.cgi&amp;ei=TggPT7WfJsiEhQeO36SQAg&amp;usg=AFQjCNENO9_6UzvwIrY7qcAGyJNyl0MtJg&amp;sig2=AvAqkHLlI8DRAm0KaeVNLw&amp;cad=rja" target="_blank">Jeffrey&#8217;s Exif viewer</a> to extract EXIF information from the image &#8211; often telling you what type of camera/phone the user has</li>
</ol>
<p>Sure, they&#8217;re small things, but for anyone wanting to Social Engineer the target it could certainly help. The frustrating part: it would take only few lines of code for Twitter to prevent this, and it really is (in my opinion) a &#8220;best practice&#8221; they&#8217;re simply not bothering to follow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2012/01/12/twitter-avatar-image-hackery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQLite mischief (password stealing) via custom DLL</title>
		<link>http://www.hypn.za.net/blog/2011/08/20/sqlite-mischief-password-stealing-via-custom-dll/</link>
		<comments>http://www.hypn.za.net/blog/2011/08/20/sqlite-mischief-password-stealing-via-custom-dll/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 07:45:43 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=509</guid>
		<description><![CDATA[There&#8217;s a (Windows) program I use that stores it&#8217;s data in SQLite files&#8230; password protected SQLite files&#8230; and I&#8217;d really like to take a look inside of them. I&#8217;ve tried looking for the password as an embedded text string, I&#8217;ve tried decompiling the .Net code (with Reflector &#8211; but it&#8217;s obfuscated), and I&#8217;ve tried attaching [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a (Windows) program I use that stores it&#8217;s data in SQLite files&#8230; password protected SQLite files&#8230; and I&#8217;d really like to take a look inside of them. I&#8217;ve tried looking for the password as an embedded text string, I&#8217;ve tried decompiling the .Net code (with Reflector &#8211; but it&#8217;s obfuscated), and I&#8217;ve tried attaching a debugger and stepping through tons of ASM code, but still haven&#8217;t been able to find the password.</p>
<p>During a mild case of insomnia I had another thought on cracking/bypassing SQLite password protection: what if (in the case where the app uses a .dll file, rather than statically linking the library) I just downloaded the SQLite source code, added &#8220;logging&#8221; of sorts to each of the main functions (&#8220;login&#8221;, executing queries, etc), compiled it, and replaced the application&#8217;s version with mine &#8211; the DLL would basically just output the database&#8217;s password for me, in plain text, perfect for opening it with something like SQLiteSpy :D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2011/08/20/sqlite-mischief-password-stealing-via-custom-dll/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SanDisk 2-in-1 memory card and USB</title>
		<link>http://www.hypn.za.net/blog/2011/08/18/sandisk-2-in-1-memory-card-and-usb/</link>
		<comments>http://www.hypn.za.net/blog/2011/08/18/sandisk-2-in-1-memory-card-and-usb/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 23:00:49 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[hacks]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=504</guid>
		<description><![CDATA[I might be a bit late to the party, but I&#8217;ve just found out about SanDisk&#8217;s &#8220;2-in1&#8243; memory cards, which I think are awesome. They look and work just like a regular SD card (think digital cameras, etc) but fold half of it down and it reveals a USB adapter, ready to be plugged straight [...]]]></description>
			<content:encoded><![CDATA[<p>I might be a bit late to the party, but I&#8217;ve just found out about SanDisk&#8217;s &#8220;2-in1&#8243; memory cards, which I think are awesome. They look and work just like a regular SD card (think digital cameras, etc) but fold half of it down and it reveals a USB adapter, ready to be plugged straight in to your computer:</p>
<p><center><img src="http://hypn.za.net/images/SanDisk%202in1.jpg" alt="" /></center></p>
<p>What&#8217;s so great about this, you ask? Well, I&#8217;d imagine it&#8217;s far easier to keep one of these in your wallet than to carry a flash drive around with you everywhere (and I prefer to keep my keyring as small as possible so I&#8217;m not fond of attaching a flash drive to it). It also has a hardware &#8220;read only&#8221; lock (at least judging by the pictures), so no more &#8220;autorun&#8221; viruses when plugging in to infected machines, and you could boot an OS off of it and not worry about becoming infected or backdoor&#8217;ed (at least not past a reboot) when visting places like Defcon ;)</p>
<p>Selling for <a href="http://www.amazon.com/SanDisk-Ultra-Plus-2GB-Card/dp/B000EWI8IK">$13 from Amazon</a> (for the 2GB), I definitely think I&#8217;m going to get myself one!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2011/08/18/sandisk-2-in-1-memory-card-and-usb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String to Hex / Hex to String &#8211; in Ruby :D</title>
		<link>http://www.hypn.za.net/blog/2010/11/28/string-to-hex-hex-to-string-in-ruby-d/</link>
		<comments>http://www.hypn.za.net/blog/2010/11/28/string-to-hex-hex-to-string-in-ruby-d/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 11:07:33 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=423</guid>
		<description><![CDATA[I&#8217;m busy converting a project of mine from PHP in to Ruby, and one of the things it needs to be able to do is convert a bunch of hex characters into a string (and vice versa)&#8230; which I wasn&#8217;t sure how to do, so I hit Google. As it turns out there seem to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m busy converting a project of mine from PHP in to Ruby, and one of the things it needs to be able to do is convert a bunch of hex characters into a string (and vice versa)&#8230; which I wasn&#8217;t sure how to do, so I hit Google. As it turns out there seem to be several other people who&#8217;ve needed to do the same thing, without finding the answer they were looking for, so I got to trying to code my own functions and managed to come up with this:</p>
<blockquote><pre># hex_to_string("486578546f537472") returns "HexToStr"
def hex_to_string(str)
  returned = ''
  for i in (0..str.length).step(2)
    unless str[i].nil?
      hex_chr = str[i].chr + str[i+1].chr
      returned += hex_chr.hex.chr
    end
  end
  returned
end</pre>
</blockquote>
<blockquote><pre># string_to_hex("StrToHex") returns "537472546f486578"
def string_to_hex(str)
  returned = ''
  for i in (0..str.length)
    unless str[i].nil?
      returned += str[i].to_s(16)
    end
  end
  returned
end</pre>
</blockquote>
<p>I&#8217;m still new to Ruby, and don&#8217;t really know what I&#8217;m doing, so please feel free to make any improvements or suggestions. You can find the latest versions of these functions on github: <a href="https://github.com/hypn/HexToString">https://github.com/hypn/HexToString</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2010/11/28/string-to-hex-hex-to-string-in-ruby-d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When I hate being a coder&#8230; #2</title>
		<link>http://www.hypn.za.net/blog/2010/11/11/when-i-hate-being-a-coder-2/</link>
		<comments>http://www.hypn.za.net/blog/2010/11/11/when-i-hate-being-a-coder-2/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 12:53:35 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=413</guid>
		<description><![CDATA[I just found this gem, in some of our billing code: $ci = $this-&#62;paymentMethod; $cc['CC_CardType'] = $ci['CC_CardType']; $cc['CC_Number'] = $ci['CC_Number']; $cc['CC_ExpMonth'] = $ci['CC_ExpMonth']; $cc['CC_ExpYear'] = $ci['CC_ExpYear']; $cc['CC_Name'] = $ci['CC_Name']; $cc['CC_Street'] = $ci['CC_Street']; $cc['CC_City'] = $ci['CC_City']; $cc['CC_State'] = $ci['CC_State']; $cc['CC_Country'] = $ci['CC_Country']; $cc['CC_Zip'] = $ci['CC_Zip']; $p-&#62;loadCreditCardPayment($cc, $total, 0); First it copies A ($this-&#62;paymentMethod) to B ($ci), [...]]]></description>
			<content:encoded><![CDATA[<p>I just found this gem, in some of our billing code:</p>
<blockquote><p>$ci = $this-&gt;paymentMethod;</p>
<p>$cc['CC_CardType'] = $ci['CC_CardType'];<br />
$cc['CC_Number'] = $ci['CC_Number'];<br />
$cc['CC_ExpMonth'] = $ci['CC_ExpMonth'];<br />
$cc['CC_ExpYear'] = $ci['CC_ExpYear'];<br />
$cc['CC_Name'] = $ci['CC_Name'];<br />
$cc['CC_Street'] = $ci['CC_Street'];<br />
$cc['CC_City'] = $ci['CC_City'];<br />
$cc['CC_State'] = $ci['CC_State'];<br />
$cc['CC_Country'] = $ci['CC_Country'];<br />
$cc['CC_Zip'] = $ci['CC_Zip'];</p>
<p>$p-&gt;loadCreditCardPayment($cc, $total, 0);</p></blockquote>
<p>First it copies A (<em>$this-&gt;paymentMethod</em>) to B (<em>$ci</em>), then copies each value of B in to C (<em>$cc</em>), and then passes C to the function. That&#8217;s right, 3 copies of the same data, and 14 lines of code. One could also have just passed A to the function, as so:</p>
<blockquote><p>$p-&gt;loadCreditCardPayment($this-&gt;paymentMethod, $total, 0);</p></blockquote>
<p>It&#8217;s kinda like pouring a drink that&#8217;s already in glass in to another glass, then using a spoon to move the liquid in to a different glass, then drinking from that last glass&#8230; why not just drink from the glass it was originally in? o_O</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2010/11/11/when-i-hate-being-a-coder-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When I hate being a coder&#8230;</title>
		<link>http://www.hypn.za.net/blog/2010/09/03/when-i-hate-being-a-coder/</link>
		<comments>http://www.hypn.za.net/blog/2010/09/03/when-i-hate-being-a-coder/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 11:30:44 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=392</guid>
		<description><![CDATA[This is how NOT to comment your code: #addCreditCard function addCreditCard(){ &#8230; code removed &#8230; //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- #addBankAccount function addBankAccount(){ &#8230; code removed &#8230; //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; #deleteCreditCard() function deleteCreditCard(){ &#8230; code removed &#8230; //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; #deleteBankAccount() function deleteBankAccount(){ &#8230; code removed &#8230; Now I totally understand that for doc-generating programs, and certain IDEs, you&#8217;re meant to put comments [...]]]></description>
			<content:encoded><![CDATA[<p>This is how NOT to comment your code:</p>
<blockquote><p><em>#addCreditCard<br />
function addCreditCard(){<br />
&#8230; code removed &#8230;<br />
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
#addBankAccount<br />
function addBankAccount(){<br />
&#8230; code removed &#8230;<br />
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
#deleteCreditCard()<br />
function deleteCreditCard(){<br />
&#8230; code removed &#8230;<br />
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
#deleteBankAccount()<br />
function deleteBankAccount(){<br />
&#8230; code removed &#8230;</em></p></blockquote>
<p>Now I totally understand that for doc-generating programs, and certain IDEs, you&#8217;re meant to put comments above your functions describing them and the parameters use&#8230; but who does this (above)? Are you really so stupid that you need to put the function&#8217;s name in a comment above&#8230; the function&#8217;s name?</p>
<p>You, sir, should not be coding.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2010/09/03/when-i-hate-being-a-coder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USB Webserver 8.0 is out!</title>
		<link>http://www.hypn.za.net/blog/2010/07/15/usb-webserver-8-0-is-out/</link>
		<comments>http://www.hypn.za.net/blog/2010/07/15/usb-webserver-8-0-is-out/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 10:06:27 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=356</guid>
		<description><![CDATA[I&#8217;ve just gotten word from the creators that USB Webserver 8 is out &#8211; long time readers might remember that I released an unofficial hacked up version a little while ago, you should definitely use this official version instead. This release contains: Php 5.2.13 Apache 2.2.15 PhpMyAdmin 3.3.1-rc1 MySQL 5.1.44]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hypn.za.net/blog/wp-content/uploads/2010/07/USB-Webserver-8.png"><br />
</a>I&#8217;ve just gotten word from the creators that <a href="http://www.usbwebserver.net/" target="_blank">USB Webserver 8</a> is out &#8211; long time readers might remember that I released an unofficial hacked up version a little while ago, you should definitely use this official version instead.</p>
<p style="text-align: center;"><img title="USB Webserver 8" src="/images/usbwebserver8.png" alt="USB Webserver 8" /></a></p>
<p>This release contains:</p>
<ul>
<li>Php 5.2.13</li>
<li>Apache 2.2.15</li>
<li>PhpMyAdmin 3.3.1-rc1</li>
<li>MySQL 5.1.44</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2010/07/15/usb-webserver-8-0-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prince of Persia &#8211; Source Code Notes</title>
		<link>http://www.hypn.za.net/blog/2009/11/25/prince-of-persia-source-code-notes/</link>
		<comments>http://www.hypn.za.net/blog/2009/11/25/prince-of-persia-source-code-notes/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 20:31:05 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=259</guid>
		<description><![CDATA[Here&#8217;s some retro geeky awesomeness&#8230; Prince of Persia source code notes! Download (404kb)]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s some retro geeky awesomeness&#8230; Prince of Persia source code notes!</p>
<p><a href="http://www.hypn.za.net/downloads/Prince%20of%20Persia%20Source%20Code%20Notes.pdf">Download</a> (404kb)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2009/11/25/prince-of-persia-source-code-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USB Webserver 8.0 (unofficial)</title>
		<link>http://www.hypn.za.net/blog/2009/05/17/usb-webserver-80-unofficial/</link>
		<comments>http://www.hypn.za.net/blog/2009/05/17/usb-webserver-80-unofficial/#comments</comments>
		<pubDate>Sun, 17 May 2009 09:14:55 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=228</guid>
		<description><![CDATA[UPDATE (15 July 2010): An &#8220;official&#8221; version of USB Webserver 8 has been released, please use this instead of my &#8220;unofficial&#8221; version. You can download it from http://www.usbwebserver.net/ This is an unofficial updated version of USB Webserver. The original USB Webserver was created by http://www.usbwebserver.nl &#8211; but their site is currently down, and they haven&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE (15 July 2010):</strong> An &#8220;official&#8221; version of USB Webserver 8 has been released, please use this instead of my &#8220;unofficial&#8221; version. You can download it from <a href="http://www.usbwebserver.net/" target="_blank">http://www.usbwebserver.net/</a></p>
<p>This is an unofficial updated version of USB Webserver. The original USB Webserver was created by <a title="USB Webserver" href="http://www.usbwebserver.nl" target="_blank">http://www.usbwebserver.nl</a> &#8211; but their site is currently down, and they haven&#8217;t released an update for a while.</p>
<p>This version contains:</p>
<p>Apache: 2.2.11<br />
PHP: 5.2.10-dev (with GD and cURL)<br />
MySQL: 5.1.30-community (with InnoDB)</p>
<p>It defaults to &#8220;English&#8221; (the original was &#8220;Dutch&#8221;), and you may need to change the ports if you have been using USB Webserver previously.</p>
<p><strong>Download</strong>: &#8220;<a href="http://hypn.za.net/downloads/USB%20Webserver%208.0%20(unofficial).zip">USB Webserver 8.0 (unofficial).zip</a>&#8221; (17.6mb)</p>
<p>(and yes, I know the main USB Webserver screen still says &#8220;USB Webserver 7.0&#8243; &#8211; ignore that :P)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2009/05/17/usb-webserver-80-unofficial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memcache on PHP 5.2.*</title>
		<link>http://www.hypn.za.net/blog/2009/04/07/memcache-on-php-52/</link>
		<comments>http://www.hypn.za.net/blog/2009/04/07/memcache-on-php-52/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 12:24:56 +0000</pubDate>
		<dc:creator>Hypn</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.hypn.za.net/blog/?p=218</guid>
		<description><![CDATA[I decided I wanted to start using memcached because it&#8217;s really awesome, but really struggled to get it working in Windows on PHP 5.2.3 because I couldn&#8217;t find the stupid &#8220;php_memcache.dll&#8221; file I needed (at the time of writing this, Pecl4Win is down&#8230; which happens to be where the official PHP documentation tells you to [...]]]></description>
			<content:encoded><![CDATA[<p>I decided I wanted to start using <a href="http://www.danga.com/memcached/">memcached</a> because it&#8217;s really awesome, but really struggled to get it working in Windows on PHP 5.2.3 because I couldn&#8217;t find the stupid &#8220;php_memcache.dll&#8221; file I needed (at the time of writing this, Pecl4Win is down&#8230; which happens to be where the official PHP documentation tells you to get it from &#8211; great).</p>
<p>Luckily I came across <a href="http://pureform.wordpress.com/2008/01/10/installing-memcache-on-windows-for-php/">this blog post</a>, which not only tells you how to to install the extension (adding 1 line to your &#8220;php.ini&#8221; file) but also linked to a PHP 5.2.* version of the it. I decided to mirror it, for anyone else trying to find it:</p>
<p style="text-align: center;"><strong><a href="/downloads/php5.2/php_memcache.dll">php_memcache.dll</a></strong> (49kb)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypn.za.net/blog/2009/04/07/memcache-on-php-52/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

