<?xml version="1.0" encoding="UTF-8"?><feed
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:thr="http://purl.org/syndication/thread/1.0"
  xml:lang="en"
  xml:base="http://www.memfill.com/wp-atom.php"
   >
	<title type="text">MEMFILL or Modern Cabinet of Curiosities</title>
	<subtitle type="text">Memory contents of a washed out coder and a mediocre manager. I am doing OK.</subtitle>

	<updated>2012-01-18T14:59:39Z</updated>

	<link rel="alternate" type="text/html" href="http://www.memfill.com" />
	<id>http://www.memfill.com/feed/atom/</id>
	<link rel="self" type="application/atom+xml" href="http://www.memfill.com/feed/atom/" />

	<generator uri="http://wordpress.org/" version="3.2.1">WordPress</generator>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[Editing Microsoft Word Metadata &#8211; it&#8217;s like hacking teeth]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/featured/word-metadata-editing/" />
		<id>http://www.memfill.com/?p=493</id>
		<updated>2012-01-18T14:59:39Z</updated>
		<published>2011-09-25T03:17:00Z</published>
		<category scheme="http://www.memfill.com" term="Featured" /><category scheme="http://www.memfill.com" term="Peculiar" /><category scheme="http://www.memfill.com" term="cleanse" /><category scheme="http://www.memfill.com" term="delete" /><category scheme="http://www.memfill.com" term="edit" /><category scheme="http://www.memfill.com" term="metadata" /><category scheme="http://www.memfill.com" term="microsoft" /><category scheme="http://www.memfill.com" term="remove" /><category scheme="http://www.memfill.com" term="revision" /><category scheme="http://www.memfill.com" term="total editing time" /><category scheme="http://www.memfill.com" term="word" />		<summary type="html"><![CDATA[Wow. Talk about pain! All I wanted to do was to reset &#8220;total editing time&#8221; and &#8220;revision&#8221; fuckery fields in my Word document. Theeeen I googled this shit and found out that &#8211; nope, no banana &#8211; can&#8217;t do that. I am in IT right? HA! docx = zip and then you can open it [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/featured/word-metadata-editing/"><![CDATA[<h2>Wow.</h2>
<p>Talk about pain! All I wanted to do was to reset &#8220;total editing time&#8221; and &#8220;revision&#8221; fuckery fields in my Word document. Theeeen I googled this shit and found out that &#8211; nope, no banana &#8211; can&#8217;t do that.</p>
<p>I am in IT right?</p>
<p>HA! docx = zip and then you can open it up and just edit a few files to get that info the way you want it.</p>
<p>Or so I thought anyway &#8211; and corrupted my goddamn 60 pages long, nicely formatted document.<br />
<span id="more-493"></span><br />
See, Microsoft never makes anything simple. In fact, the older generation doc files are OLE compounds &#8211; you don&#8217;t even want to know what that is, because they released a Microsoft Bible awhile ago, I guess the schedule to declassify shitty documents at Microsoft matches then FBI/NII/Pentagon .</p>
<p>Usual suspects: blog posts with &#8220;resave your document 45 times to get the revision number to 45&#8243; or &#8220;pray&#8221; did not work for me. My document is huge and revision number needs to be somewhere in the 1000+ range. I also needed to remove Last Print date and couple of other goddamn fields. Fucking contract work!</p>
<p>I gave up. I would need to learn 5 years of old, parasitical, and outdated vomit of Microsoft &#8220;old&#8221; tech to do this and I would rather watch paint dry, peel and decompose.</p>
<p>A few minutes Googling later &#8211; I found <a href="http://www.wordprops.com">WordProps</a> - some standalone tool made by probably an Eastern-European genius (think Cold War). Long story short: it worked, and I am not sure how. It can edit pretty much any field of any word version (and there are quite a few out there)</p>
<div align="center"><a href="http://www.wordprops.com"><img class="alignleft size-full wp-image-501" title="Not bad" src="http://www.memfill.com/rant/wp-content/uploads/2011/09/obama-not-bad-l.png" alt="WordProps" width="281" height="281" /></a></div>
<h2 style="text-align: center;"><strong>Apparently I can&#8217;t hack everything</strong></h2>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/featured/word-metadata-editing/#comments" thr:count="0"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/featured/word-metadata-editing/feed/atom/" thr:count="0"/>
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[Goodbye Rackspace.]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/newsworthy/goodbye-rackspace/" />
		<id>http://www.memfill.com/?p=484</id>
		<updated>2011-03-09T19:16:12Z</updated>
		<published>2011-03-09T19:14:09Z</published>
		<category scheme="http://www.memfill.com" term="Peculiar" /><category scheme="http://www.memfill.com" term="cdn" /><category scheme="http://www.memfill.com" term="Cloud" /><category scheme="http://www.memfill.com" term="cost" /><category scheme="http://www.memfill.com" term="linode" /><category scheme="http://www.memfill.com" term="rackspace" /><category scheme="http://www.memfill.com" term="Rackspacecloud" /><category scheme="http://www.memfill.com" term="vps" />		<summary type="html"><![CDATA[I am out. This blog has been officially moved to Linode 512 slice, and I couldn&#8217;t be happier. At first I accepted the flakiness of RackSpaceCloud, but it has been MONTHS and the product is still a crappy beta. Nothing has been addressed: cloud stability &#8211; 3 times hardware failure and my blog barely generates [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/newsworthy/goodbye-rackspace/"><![CDATA[<p>I am out. This blog has been officially moved to <a href="http://www.linode.com/?r=a9fb05278327ef9e5e5b15f5dc7496fcdbd472f1">Linode 512 slice</a>, and I couldn&#8217;t be happier. At first I accepted the flakiness of RackSpaceCloud, but it has been MONTHS and the product is still a crappy beta. Nothing has been addressed: cloud stability &#8211; 3 times hardware failure and my blog barely generates any traffic. The admin panel is still super slow and throws up errors all the time, and the DNS manager is still shit. Sorry Rackspace.</p>
<p>Linode migration has been a breeze, I moved in 5 minutes flat. Amazing panel, great features &#8211; almost the same cost. A 512MB slice will end up costing 20$ a month, vs 12$ for 256MB at RackSpace Cloud.</p>
<p>And man oh man, <a href="http://library.linode.com/lamp-guides/">Linode has an amazing library with guides</a>. I will only miss the CDN, but there is no reason why someone can&#8217;t plugin RackSpace files or S3 into the Linode equation.</p>
<p>In short, RackSpace should have been improving the architecture and not the goddamn reseller program. Cya.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/newsworthy/goodbye-rackspace/#comments" thr:count="1"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/newsworthy/goodbye-rackspace/feed/atom/" thr:count="1"/>
		<thr:total>1</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[What a Web Developer should know]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/tech/what-a-web-developer-should-know/" />
		<id>http://www.memfill.com/?p=430</id>
		<updated>2010-12-13T22:07:41Z</updated>
		<published>2010-12-13T22:06:51Z</published>
		<category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term=".net" /><category scheme="http://www.memfill.com" term="Apache" /><category scheme="http://www.memfill.com" term="basic" /><category scheme="http://www.memfill.com" term="better" /><category scheme="http://www.memfill.com" term="development" /><category scheme="http://www.memfill.com" term="find" /><category scheme="http://www.memfill.com" term="job" /><category scheme="http://www.memfill.com" term="jobs" /><category scheme="http://www.memfill.com" term="mysql" /><category scheme="http://www.memfill.com" term="PHP" /><category scheme="http://www.memfill.com" term="programmer" /><category scheme="http://www.memfill.com" term="python" /><category scheme="http://www.memfill.com" term="skill" /><category scheme="http://www.memfill.com" term="skills" /><category scheme="http://www.memfill.com" term="visual basic" /><category scheme="http://www.memfill.com" term="webserver" />		<summary type="html"><![CDATA[Programming is not complicated. Being a programmer is.

The field is <strong>huge</strong> and there are <em>still</em> jobs left - even in this economy. However, it can be very confusing: so many things to know, to learn and to absorb.
Let's assume you are the <strong>older</strong> generation. Maybe you have been doing this for a few years, maybe 10 or even 20. Now your company went bust or you got laid off or maybe you had to move. Maybe you have been doing .Net, maybe embedded or maybe even old style VB. Maybe you were the only programmer in your office, or maybe you were a part of a humongous team. But you are probably either 45+ or just got out of school.]]></summary>
		<content type="html" xml:base="http://www.memfill.com/tech/what-a-web-developer-should-know/"><![CDATA[<p style="margin: 0;" align="left"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/12/Untitled1.png" alt="PartyHat" title="Nice Hat" style="margin-bottom: 0;" /></p>
<p class="update">This is the <strong>first</strong> article in the set that I am making &#8211; designed specifically to help <strong>regular</strong> developers in updating their skills, CVs and nailing new jobs. I will be releasing these in regular installments, so subscribe to the mailing list/RSS/Twitter for updates</p>
<h2>Small intro</h2>
<p>Programming is not complicated. Being a programmer is.</p>
<p>The field is <strong>huge</strong> and there are <em>still</em> jobs left &#8211; even in this economy. However, it can be very confusing: so many things to know, to learn and to absorb.<br />
Let&#8217;s assume you are the <strong>older</strong> generation. Maybe you have been doing this for a few years, maybe 10 or even 20. Now your company went bust or you got laid off or maybe you had to move. Maybe you have been doing .Net, maybe embedded or maybe even old style VB. Maybe you were the only programmer in your office, or maybe you were a part of a humongous team. But you are probably either 45+ or just got out of school.</p>
<p>Let&#8217;s assume for a second you are trying to diversify. Or perhaps instead of getting a <strong>second</strong> job you want to score a <strong>better</strong> paying new job. Maybe you are bored to death. You decide to go for the web.</p>
<p>So, you hit the job sites. Descriptions are confusing &#8211; design lumped with programming, management mixed with marketing.</p>
<h2>Ninja, Pirate, Python Warlock level 99</h2>
<p>What is this? Well, this is 2010. People equate age to mental capacity and trends.</p>
<p><strong>Can&#8217;t discriminate based on age?</strong> No problem! Let&#8217;s make the process abhorrently complicated or scare away people with internet memes.<br />
<strong>Don&#8217;t want to get stale talent?</strong> Sure thing! Just mention in your ad that you need the applicant to know CSS+JS+(Photoshop a plus!)+Python+great_scaling_mysql_experience+caching+OOP_everywhere<br />
<strong>Small kids scare you? Want midnight launches and 60 hours work weeks</strong>? Easy! Mention fast paced, <em>free pizza after midnight</em> environment.</p>
<p>I know this because I was &#8220;shown&#8221; the <em>ropes </em>by founders, VC investors, HR gurus and department managers.</p>
<p>&#8220;Trust me&#8221; they said &#8220;you don&#8217;t want old folks.&#8221;<br />
&#8220;Family? We should avoid hiring people with big families. They tend to take too many days off. Or what if the kids get sick? Just get younger ones&#8221; they said -</p>
<h2>&#8220;play it safe&#8221;</h2>
<p>(I will cover my sentiments to these views some other time, this post is merely to help those unfortunate that were left behind because the kid in the jeans knew buzzwords)</p>
<p>So, without further ado: here is a list of skills in each category that anyone applying for a web-based development job should have. If you know this your chances are much much higher &#8211; I know &#8211; because that is what I look for in an interview.</p>
<p>A few facts. Web = not much money in the beginning = loathing of licenses (unless its Coda, Textmate or something Apple) = free = Open Source = we do everything ourselves.</p>
<p>This leaves us with the following substances:</p>
<ul>
<li>You will be using Linux or a derivative. This is almost universal; and if you will be programming on a Linux based product, you will be expected to debug it &#8211; including the shit that will come out of the dependencies. Yes, like adding an extension to PHP and compiling from source.</li>
<li>Small, not stupid. MSSQL? Oracle? No way. People can&#8217;t or don&#8217;t want to pay that much for data store. You will get MySQL or PostgreSQL. If you are unlucky, you will stumble across the &#8220;new old way&#8221; &#8211; the dreaded NoSQL. Trust me, stay away from NoSQL until you have had significant experience with the web.</li>
<li>Programming language is irrelevant. These days you can manage to produce very efficient code in a very bad language, and vice versa. You shouldn&#8217;t be able to tell what a great website/product is made of and it doesn&#8217;t matter &#8211; just use the right tools.<br />
PHP? Oh yeah I heard, a nightmare! It&#8217;s okay though, use it. Python? Perhaps a better choice, but it will take time to realize that. Lisp/Scala/Erlang? Stay the hell away from those in the beginning.</li>
<li>Value added topics like running things in the Cloud (everyone does, right? RIGHT?!) and your coding habits. Shi<del datetime="2010-12-13T20:56:09+00:00">tty</del>ny IDE talk here.
</ul>
<p>So, let&#8217;s start with the first topic:</p>
<h2>Operating System and base components basics</h2>
<ul>
<li>Linux is easy. It&#8217;s all the same despite the names. The differences will not matter to you, especially if you simply do web. Don&#8217;t try to learn the OS in it&#8217;s entirety &#8211; Linux is learned over time, you just can&#8217;t cram. You will simply learn as it becomes necessary. Pick the distribution based on external popularity if given the choice. This will give you the biggest source of support and guides. Remember, Open Source = People working on what they want to, not what the should work on. Found an obscure bug? Yeah, good luck with getting that fixed.</li>
<li>There will be very little or no GUI at all. This is surprisingly the biggest gripe; but think of it as good old DOS days. The more you can do with a terminal (think windows command prompt) the more respect you will get</li>
</li>
</ul>
<p class="update">
There is no better way to learn an OS than using it. Grab a virtual instance (I recommend for <a href="http://www.rackspacecloud.com/1827.html">RackSpaceCloud</a> for <strong>testing</strong>) since it&#8217;s very easy to use and it is <strong>cheap</strong>, like 8$ a month cheap. And you can screw up your instance, wipe it off and then a build a new one with 2 clicks. <a href="http://www.memfill.com/tech/under-the-hood/">More about how this blog is running off a virtual tiny instance here</a>
</p>
<ul>
<li>Start with a newbie friendly distribution. CentOS or Ubuntu will do fine. RedHat AS/EL will cost an extra, just because of the license, which you do not need.</li>
<li><strong>Learn how to compile from source!</strong> Install <a href="http://htop.sourceforge.net/">htop</a> from source, it is a great top replacement. (process monitoring)	     </li>
<li>Learn what those columns in the top/htop mean. Being able to monitor your application is a big plus, and developers that know how to spot problems early are hard to find. It&#8217;s a big asset</li>
<li>Pick a webserver to know well. There are really only 2 stable choices; Apache or Nginx. For starters get Apache since it will be easier for you to understand. There are nifty modules available for Apache: mod_expire (allow client to cache data, conditionally), mod_rewrite (friendly re-written URLs) and tons of resources and help on the internet.</li>
</ul>
<p>Now this is getting way too long for a single post. Part 2 coming right up. That should cover the basics + web server details + database stuff. </p>
<p>Oh and if you have questions, don&#8217;t hesitate to email: mf at memfill.com (maybe I can help)</p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/tech/what-a-web-developer-should-know/#comments" thr:count="60"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/tech/what-a-web-developer-should-know/feed/atom/" thr:count="60"/>
		<thr:total>60</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[Great Sample Data]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/featured/great-sample-data/" />
		<id>http://www.memfill.com/?p=375</id>
		<updated>2011-03-09T20:01:43Z</updated>
		<published>2010-12-06T23:27:35Z</published>
		<category scheme="http://www.memfill.com" term="Featured" /><category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term="bench" /><category scheme="http://www.memfill.com" term="benchmarks" /><category scheme="http://www.memfill.com" term="coding" /><category scheme="http://www.memfill.com" term="CSV" /><category scheme="http://www.memfill.com" term="data" /><category scheme="http://www.memfill.com" term="data.gov" /><category scheme="http://www.memfill.com" term="geo" /><category scheme="http://www.memfill.com" term="location" /><category scheme="http://www.memfill.com" term="programming" /><category scheme="http://www.memfill.com" term="sample data" /><category scheme="http://www.memfill.com" term="sample XML" /><category scheme="http://www.memfill.com" term="samples" /><category scheme="http://www.memfill.com" term="test" /><category scheme="http://www.memfill.com" term="unit" /><category scheme="http://www.memfill.com" term="unit test" /><category scheme="http://www.memfill.com" term="US" /><category scheme="http://www.memfill.com" term="XML" />		<summary type="html"><![CDATA[How to get loads of great sample data? Easy! I just realized that too many times I caught myself needing some sample data. It&#8217;s useful really, when you write a piece of code that is dealing with large inputs or you want to create a unit test and see if anything barfs when something peculiar [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/featured/great-sample-data/"><![CDATA[<p>How to get loads of <em>great</em> sample data?<br />
<strong> </strong></p>
<p><strong>Easy!</strong></p>
<p>I just realized that too many times I caught myself needing some sample data. It&#8217;s useful really, when you write a piece of code that is dealing with large inputs or you want to create a unit test and see if anything barfs when something peculiar comes across you data stream. Or when you benchmark your code or someone else&#8217;s crappy code.</p>
<p>I never could find any decent samples. And I am not talking some bullshit random generated strings/words/ints. I mean nice small-medium-large samples, perhaps nested or categorized, CSV/XML style.</p>
<p><a href="http://www.data.gov/catalog/raw" target="_blank">And then I found this magical place</a></p>
<p><span id="more-375"></span></p>
<p><a href="http://www.data.gov/catalog/raw" target="_blank"><img title="data" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/data.png" alt="Looks cool" /></a></p>
<p>It is truly awesome, and I would shake Obama&#8217;s hand if <strong>he</strong> is responsible for the transparency. <a href="http://firstread.msnbc.msn.com/_news/2010/12/06/5595744-first-thoughts-done-deal" target="_blank">Or not</a></p>
<p>Obviously, I don&#8217;t give a flying squirrels&#8217; ass about <a href="http://www.data.gov/raw/1294" target="_blank">Health and Nutrition</a>, but damn it&#8217;s a nice sample XML to play with.</p>
<ul>
<li><strong>Searching</strong>? Nicely done searching, pick your own format, rating, agency</li>
<li><strong>Formats</strong>? Availability ranges from XML, XLS, CSV/TXT to KML/KMZ, Shapfile, and crazy ass RDF</li>
<li><strong>Sample sizes</strong>? From <a href="http://www.data.gov/raw/1214" target="_blank">4K CSV files</a> to <a href="http://www.data.gov/raw/1358" target="_blank">1.75GB XML</a> and everything in between</li>
<li><strong>Amount of data</strong>? 2967 sources as of date of this post and growing</li>
<li><strong>Free!</strong></li>
</ul>
<p>So, please. When testing or benchmarking, <strong>please use real world datasets</strong>. Not your presorted 1-100000 int array dumped into a TXT file.</p>
<div align="center"><img class="aligncenter size-full wp-image-380" title="beaman" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/beaman.png" alt="" width="420" height="140" /></div>
<p>P.S. I think I just found my first reason to like US government. pffftttchhchhchhhhchhpfffpffffft!</p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/featured/great-sample-data/#comments" thr:count="6"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/featured/great-sample-data/feed/atom/" thr:count="6"/>
		<thr:total>6</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[Windows floppy love]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/fffffffuuuuuuuuuuuu/windows-floppy-love/" />
		<id>http://www.memfill.com/?p=348</id>
		<updated>2010-12-13T18:50:30Z</updated>
		<published>2010-12-06T20:28:44Z</published>
		<category scheme="http://www.memfill.com" term="Rantsy" /><category scheme="http://www.memfill.com" term="drive a" /><category scheme="http://www.memfill.com" term="driver" /><category scheme="http://www.memfill.com" term="drivers" /><category scheme="http://www.memfill.com" term="floppy" /><category scheme="http://www.memfill.com" term="internals" /><category scheme="http://www.memfill.com" term="peculiar" /><category scheme="http://www.memfill.com" term="wierd" /><category scheme="http://www.memfill.com" term="windows" /><category scheme="http://www.memfill.com" term="windows 7" /><category scheme="http://www.memfill.com" term="windows xp" />		<summary type="html"><![CDATA[Someone at Microsoft loves the floppy.

I am not quite sure why. I don’t even know where this is coming from, I mean floppy drives do not even come bundled with most systems. It’s pretty hard to get one added from any major distributor: Dell has dropped it’s bundling something like 7 fucking years ago.

Yet, even in brand new shiny Windows 7, Microsoft continues its futile quest of searching for one]]></summary>
		<content type="html" xml:base="http://www.memfill.com/fffffffuuuuuuuuuuuu/windows-floppy-love/"><![CDATA[<p style="margin: 0;"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/12/troll_h.png" alt="GotTrolled?" title="totally trolled" width="136" height="47" class="alignnone size-full wp-image-422" style="margin-bottom: 0;" /></p>
<p class="update">FAQ<del datetime="2010-12-07T16:26:48+00:00">u</del> for the haters: <br/><strong>Q:</strong> Free speech? <strong>A:</strong> Though so! (that&#8217;s why your comments are still there, unaltered) <br/><strong>Q:</strong> Offended by the variants of the <strong>f</strong> word? <strong>A:</strong> Get off the internet, pronto! <br/><strong>Q:</strong> Insightful comment? <strong>A:</strong> Great! <br/><strong>Q:</strong> Want to hate more? <strong>A:</strong> Read my other posts!</p>
<h2>Someone at Microsoft loves the floppy.</h2>
<p>I am not quite sure why. I don&#8217;t even know where this is coming from, I mean <a title="Floppy Wiki" href="http://en.wikipedia.org/wiki/Floppy_disk" target="_blank">floppy drives</a> do not even come bundled with most systems. It&#8217;s pretty hard to get one added from any major distributor: Dell has dropped it&#8217;s bundling something like <strong>7 fucking years ago</strong>.</p>
<p>Yet, even in brand new shiny Windows 7, Microsoft continues its futile quest of searching for one.</p>
<p>Here is my Disk Management console. See? No floppy. Not assigned (even if I have drivers for it), not mapped, nada.</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng.png"><img class="G4" title="dskmng" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng.png" alt="My Damn Empty Drive Management" /></a></p>
<p>Now do this:</p>
<h2>Open your device manager and pick anything to view the driver. In my case I am screwing around with the keyboard for compatibility:</h2>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng1.png"><img class="G4" title="dskmng" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng1.png" alt="My Damn Empty Drive Management" /></a></p>
<h2>Now, pull up the driver properties, and click the infamous &#8220;<em>Update Driver</em>&#8221; button. Select &#8220;<em>Browse my computer for driver software</em>&#8220;</h2>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng2.png"><img class="G4" title="dskmng" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng2.png" alt="My Damn Empty Drive Management" /></a></p>
<h2>Click &#8220;<em>Have Disk</em>&#8221; button&#8230;.</h2>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng3.png"><img title="dskmng" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng3.png" alt="My Damn Empty Drive Management" width="628" height="460" /></a></p>
<h2>WAIT FOR FUCKING 10 SECONDS WHILE NOTHING IS HAPPENING, PRETENDING YOU HEAR THE EMPTY FLOPPY DRIVE CHURNING.</h2>
<p><strong>And then, enjoy the prompt</strong></p>
<p><img title="dskmng" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/dskmng4.png" alt="My Damn Empty Drive Management" width="439" height="234" /></p>
<h2>A:\ PROBLEM?</h2>
<p><img title="dskmng" src="http://www.memfill.com/rant/wp-content/uploads/2010/12/problem.png" alt="Bastards" width="138" height="122" /></p>
<p>Points for trying though. I wonder how many Windows years it will take before someone takes the &#8220;hardcode-the-path-in&#8221; guy out back and shoots him. Twice.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/fffffffuuuuuuuuuuuu/windows-floppy-love/#comments" thr:count="469"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/fffffffuuuuuuuuuuuu/windows-floppy-love/feed/atom/" thr:count="469"/>
		<thr:total>469</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[MySQL Replication Lag &#8211; sometimes it&#8217;s not what you think]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/tech/mysql-replication-lag/" />
		<id>http://www.memfill.com/?p=296</id>
		<updated>2010-11-23T04:45:45Z</updated>
		<published>2010-11-22T21:14:31Z</published>
		<category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term="Tiny Wisdoms" /><category scheme="http://www.memfill.com" term="atomic" /><category scheme="http://www.memfill.com" term="clock" /><category scheme="http://www.memfill.com" term="lag" /><category scheme="http://www.memfill.com" term="maatkit" /><category scheme="http://www.memfill.com" term="mk-heartbeat" /><category scheme="http://www.memfill.com" term="mysql" /><category scheme="http://www.memfill.com" term="NOW()" /><category scheme="http://www.memfill.com" term="NTP" /><category scheme="http://www.memfill.com" term="replication" />		<summary type="html"><![CDATA[MySQL Replication Lag &#8211; or when you had nothing to do with it and it&#8217;s lagging anyway This warning and advice only applies to those who use MySQL Replication, specifically to split select (read) queries between the master and slaves instances to alleviate db loads. Also, thanks to someone from reddit I have now fixed [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/tech/mysql-replication-lag/"><![CDATA[<h2>MySQL Replication Lag &#8211; or when you had nothing to do with it and it&#8217;s lagging anyway</h2>
<p class="update">This warning and advice only applies to those who use MySQL Replication, specifically to split <strong>select</strong> (read) queries between the <strong>master</strong> and <strong>slaves</strong> instances to alleviate db loads.</p>
<p class="update">
Also, thanks to someone from reddit I have now fixed the references to NOW() function that is replication safe. I meant sysdate() but this is beyond the point.</p>
<p>This is a true story &#8211; it happened to me. One of the projects that I work on has a typical split: <strong>master </strong>server with <strong>2 slaves</strong>, running on MySQL 5.x. The application itself has also a fairly large <strong>memache </strong>layer in front to cache most of the query data.</p>
<p>All of a sudden warnings go off. We are caching stale shit. The scenario is very simple: people use the web app pay a small fee and get some virtual gift (<em>super simplified summary</em>). But no, they don&#8217;t. Actually they pay and nothing happens.</p>
<p>Or, users have &#8220;mailboxes&#8221; on the site. They view the &#8220;inbox&#8221;, select a message to remove and click the <em>delete</em> botton. Only upon refreshing the inbox it&#8217;s still <em>there</em>.</p>
<p><img class="size-full wp-image-297 alignleft" title="fsc" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/fsc.png" alt="" width="419" height="207" /></p>
<h2>STALE CACHE, OH NOES!</h2>
<p>Well it can happen to variety of reasons, but let&#8217;s say it&#8217;s the replication lag; or that&#8217;s what you think when you see that your slaves display <strong>10 seconds</strong> (replace 10 with anything more than 1 and your are bound to be fucked) in <strong>Seconds_Behind_Master</strong> value. Mind you, this is a <strong>GARBAGE</strong> indicator. However, it is the first one to be looked at, because naturally if your slaves are behind and your app uses the slaves to read and cache the data &#8211; you are screwed. </p>
<p>Let&#8217;s assume you give our gifts after people pay: you hook up PayPal or some other processor and when transaction is completed you check the timestamp and hand out the privileges when time is &#8220;right&#8221;. So you Google Replication Lag (or any of the derivatives) and you are inundated with a billion topics/discussions/FAQs/guides on determining the cause of your replication lag, a plethora of IO-thread-whateverthefuck reasons.</p>
<p>However, remember this &#8211; <strong>it can be nothing at all</strong>.</p>
<p>We looked and looked. Nothing was locked, queries were chugging along and processlist was clear.</p>
<p>Yet, <strong>Seconds_Behind_Master = 10</strong></p>
<p>I started doubting this fucking POS MySQL stat. I really did not understand why slave_behind metric had such a shitty resolution: late in <strong>seconds</strong>. I mean replication can be theoretically behind only microseconds. So I made the admins install <a href="http://maatkit.org">maatkit</a> (<a href="http://www.maatkit.org/doc/mk-heartbeat.html" target="_new">mk-heartbeat</a> specifically) that actually measures replication lag better. Note: it is also clock dependent.</p>
<p>Long story short:</p>
<p>Our <strong>slave</strong> server clock was 10 seconds behind the <strong>master</strong>. The write query was updating master with timestamp supplied by the processor. Record was inserted and then read off the slave. Slave record was coming back with 10 seconds &#8220;ahead&#8221; and thus the replicated record&#8217;s timestamp appeared in the future. As such, the app didn&#8217;t do shit for another 10 seconds, thinking that something was traveling through time and applied breaks. But it was too late by then since we cached all values and won&#8217;t be cycling it off for another 30 minutes. To top it off, MySQL replication was thinking slave was behind 10 seconds when it wasn&#8217;t late at all.</p>
<p>Someone should mention this and stick it in the MySQL Replication Manual. <span style="text-decoration: underline;">Your server clock will get out of sync and take your replication with it, motherfucker</span>.</p>
<h2 style="text-align: center;"><strong>SYNCHRONIZE YOUR DATABASE SERVER CLOCKS THROUGH NTP, DAILY</strong></h2>
<p><span style="text-decoration: underline;"> Because when you see your slave server lagging it is possible that it&#8217;s not lagging at all</span>.</p>
<div align="center"><img title="fis" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/fis.png" alt="" width="314" height="181" /></div>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/tech/mysql-replication-lag/#comments" thr:count="48"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/tech/mysql-replication-lag/feed/atom/" thr:count="48"/>
		<thr:total>48</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[WordPress, MIME types, security guidelines and underscores in my filenames]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/tech/wordpress-mime-types-security-guidelines-and-underscores-in-my-filenames/" />
		<id>http://www.memfill.com/?p=250</id>
		<updated>2010-11-03T20:10:14Z</updated>
		<published>2010-11-03T18:10:41Z</published>
		<category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term="bug" /><category scheme="http://www.memfill.com" term="extend" /><category scheme="http://www.memfill.com" term="file" /><category scheme="http://www.memfill.com" term="filename" /><category scheme="http://www.memfill.com" term="filenames" /><category scheme="http://www.memfill.com" term="guidelines" /><category scheme="http://www.memfill.com" term="MIME" /><category scheme="http://www.memfill.com" term="name" /><category scheme="http://www.memfill.com" term="plugin" /><category scheme="http://www.memfill.com" term="security" /><category scheme="http://www.memfill.com" term="try another" /><category scheme="http://www.memfill.com" term="underscore" /><category scheme="http://www.memfill.com" term="upload" /><category scheme="http://www.memfill.com" term="wordpress" />		<summary type="html"><![CDATA[WordPress thinks their users are, Hurr Durr Derp, idiots. Note: Fix for extra underscores in filenames &#8211; post WordPress upload, is at the end of this post, but for your sake read the whole thing because it&#8217;s related. Really. Otherwise WordPress team would let people modify MIME types (which files you are allowed to upload to your [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/tech/wordpress-mime-types-security-guidelines-and-underscores-in-my-filenames/"><![CDATA[<h2>WordPress thinks their users are, Hurr Durr <em>Derp, </em>idiots.</h2>
<p class="update">Note: Fix for extra underscores in filenames &#8211; post WordPress upload, is at the end of this post, but for your sake read the whole thing because it&#8217;s related.</p>
<p>Really. Otherwise WordPress team would let people modify MIME types (which files you are allowed to upload to your media library) easier. Right now it&#8217;s, <strong>trolololo</strong>, in the <em>/wp-includes/functions.php</em> (yes, the 140KB monster function file). Function is absentmindedly called</p>
<pre class="brush: php; title: ; notranslate">function get_allowed_mime_types()</pre>
<p>and it is a fat-ass PCRE array of random shit that the developers deemed as &#8220;safe&#8221;.</p>
<p>Yes, they listed WordPerfect extensions such as &#8216;wp|wpd&#8217; as safe. Random much? No, what I would like to know is why this is hardcoded in the <strong>CORE</strong> of WordPress and not stored in some configurable list. How is shafting this static array in a functions file helpful to anyone? What if I want to remove this or add a new type?</p>
<h2>What&#8217;s worse, is that the top 10 solutions returned by Google search are <a href="http://electronicholas.com/2010/08/how-to-force-wordpress-3-to-accept-different-upload-file-types/" target="_blank">fucking horrible</a>. Apparently, people prefer <a href="http://headfirstproductions.ca/wordpress-file-type-upload-error-security-fix/" target="_blank">hacking at the core</a> than extending and <del datetime="2010-11-03T17:39:39+00:00">whoring</del> hooking WordPress how Zeus intended it.</h2>
<p>Please don&#8217;t do it. This is horrible, it&#8217;s like killing kittens with a chainsaw &#8211; unpractical and messy. Instead <a href="http://wordpress.org/extend/plugins/pjw-mime-config/" target="_blank">just use this plugin, PJW Mime Config</a>. It will allow you to add and extend your MIMEs very easily and even detect the types by uploading the file. Sort of useful I guess, but I wouldn&#8217;t trust that system blindly; do your research yourself.</p>
<h2>PART II</h2>
<p>So you added your freaking MIME type. Say it&#8217;s the infamous <strong><a href="http://www.fileinfo.com/extension/wtf" target="_blank">.WTF</a> (WoW Text Files)</strong></p>
<p><em>And FYI if you add freaking WordPerfect MIME I don&#8217;t see why the WTF files are not in my default static list, Mr. WordPress, after all, World of Warcraft has more active users than WordPerfect.</em></p>
<p>So anyway you added it. <em>Happy happy joy joy</em>, you can now upload the file without the &#8220;this file is not secure, try another as if it will help ha-ha-ha&#8221; error;</p>
<h2>BUT WAIT THERE IS MORE BULLSHIT</h2>
<p>Let&#8217;s assume your file is named <strong>go.wtf</strong> Everything went great and you get this:</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp2.png"><img title="wp2" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp2.png" alt="" /></a></p>
<h2>THEN</h2>
<p>You happily modify your file, and rename it. How you name it is nobody&#8217;s business, really.
<div align="center"><img title="nbb" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/nbb.jpg" alt="" /></div>
<p>And let&#8217;s say you named it like so,</p>
<h2><strong>go.new.v21.wtf</strong></h2>
<p>Where:</p>
<ul>
<li>go (original file name)</li>
<li>new (signifying that this is the <strong>NEW</strong> file, lol)</li>
<li>v21 (where this describes revision number, because <em>SVN </em>is too hard to use)</li>
<li>wtf (original file extension)</li>
</ul>
<p>Again, you were lucky to name it so, or similarly. Then you try to upload it and you see this:</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp3.png"><img title="wp3" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp3.png" alt="" /></a><br />
You will immediately notice that your file name was changed. I even highlighted it for you.</p>
<h2>Where the fuck did this underscore come from?!</h2>
<p>I am not the only one, <a href="http://wordpress.org/support/topic/underscore-inserted-into-media-file-name" target="_new">there were other poor souls trying to figure this out</a>.</p>
<p>So, I dreadfully opened <strong>formatting.php</strong>. God it&#8217;s another fucking horrible file. This was more like a bad horror movie when you expect some shit to leap at you from around the corner than debugging.</p>
<p>So I found this little neat function </p>
<pre class="brush: php; title: ; notranslate">
/**
 * Sanitizes a filename replacing whitespace with dashes
 *
 * Removes special characters that are illegal in filenames on certain
 * operating systems and special characters requiring special escaping
 * to manipulate at the command line. Replaces spaces and consecutive
 * dashes with a single dash. Trim period, dash and underscore from beginning
 * and end of filename.
 */
function sanitize_file_name( $filename ) {
....
</pre>
<p>Notice how function claims to &#8220;<strong>Sanitize a filename replacing whitespace with dashes</strong>&#8220;. Not it does not. That motherfucking function fucks up my filename during upload when it has multiple &#8220;extensions&#8221;, although no, it does not. What it does have, are multiple dot separators.</p>
<p>And then I found this little gem.</p>
<pre class="brush: php; title: ; notranslate">
// Loop over any intermediate extensions.  Munge them with a trailing underscore if they are a 2 - 5 character long alpha string not in the extension whitelist.
	foreach ( (array) $parts as $part) {
		$filename .= '.' . $part;

		if ( preg_match(&quot;/^[a-zA-Z]{2,5}\d?$/&quot;, $part) ) {
			$allowed = false;
			foreach ( $mimes as $ext_preg =&gt; $mime_match ) {
				$ext_preg = '!(^' . $ext_preg . ')$!i';
				if ( preg_match( $ext_preg, $part ) ) {
					$allowed = true;
					break;
				}
			}
			if ( !$allowed )
				$filename .= '_';
		}
	}
</pre>
<h2>HAHAHA WHAT THE FUCK</h2>
<p>No seriously. Why? WHY?!<img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/why.png" alt="" title="why" /></p>
<p>Anyway. I advocated not changing the core, so we will have to hack around this, using aforementioned plugin <a href="http://wordpress.org/extend/plugins/pjw-mime-config/" target="_blank">PJW Mime Config</a>. </p>
<p>Go to your plugin configuration and add, every, single, extension used, in our case it will be <strong>NEW</strong>:</p>
<p><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp5.png" alt="" title="wp5" /></p>
<p>When you retry the upload you will get the correct naming shown:</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp4.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/wp4.png" alt="" title="wp4" /></a></p>
<h2>Done.</h2>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/tech/wordpress-mime-types-security-guidelines-and-underscores-in-my-filenames/#comments" thr:count="197"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/tech/wordpress-mime-types-security-guidelines-and-underscores-in-my-filenames/feed/atom/" thr:count="197"/>
		<thr:total>197</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[MySQL Workbench &#8211; TRADITIONAL]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/fffffffuuuuuuuuuuuu/mysql-workbench-traditional/" />
		<id>http://www.memfill.com/?p=148</id>
		<updated>2010-11-03T04:29:30Z</updated>
		<published>2010-11-02T22:37:01Z</published>
		<category scheme="http://www.memfill.com" term="Rantsy" /><category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term="0000-00-00" /><category scheme="http://www.memfill.com" term="0000-00-00 00:00:00" /><category scheme="http://www.memfill.com" term="bug" /><category scheme="http://www.memfill.com" term="datetime" /><category scheme="http://www.memfill.com" term="default" /><category scheme="http://www.memfill.com" term="mode" /><category scheme="http://www.memfill.com" term="mysql" /><category scheme="http://www.memfill.com" term="setting" /><category scheme="http://www.memfill.com" term="traditional" /><category scheme="http://www.memfill.com" term="value" /><category scheme="http://www.memfill.com" term="workbench" />		<summary type="html"><![CDATA[Everyone models their databases or at least they should TL;DR MySQL WorkBench is fucked with TRADITIONAL SQL Mode, you can fix it with a HEX editor. Note: All images are clickable to view in full detailed glory. Click them. There are a few DB modeling tools out there; most cost money and most invariably suck. [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/fffffffuuuuuuuuuuuu/mysql-workbench-traditional/"><![CDATA[<h2>Everyone models their databases or at least they should</h2>
<p class="alert"><strong>TL;DR</strong> MySQL WorkBench is fucked with TRADITIONAL SQL Mode, you can fix it with a HEX editor.</p>
<p class="update">Note: All images are clickable to view in full detailed glory. Click them.</p>
<p>There are a few DB modeling tools out there; most cost <strong>money</strong> and most invariably <em>suck</em>. Luckily for us, MySQL has their own version of a modeler, <a href="http://wb.mysql.com/" target="_blank">MySQL Workbench</a>. It&#8217;s really neat. First off it looks very decent, it&#8217;s quick to use, fast to learn and it brings order to the unruly programmers that have to play by the rules when it comes to database design. You could even push your model to GIT or SVN and voila, you have basic DB versioning and you could point fingers at <em>Tom</em> next time someone fucks something up.</p>
<p>It looks like this, when you use it correctly (mind you it is a random DB design, I did not make this):</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-1.png"><img class="size-full wp-image-150 G6" title="def-view-1" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-1.png" alt="Model View" width="1024" height="617" /></a></p>
<p>It allows you to comment, logically and visually group your tables and views and generally quickly demonstrate what your DB is supposed to do. On top of that, you can <strong>Reverse </strong>and <strong>Forward </strong>engineer your design: basically you attach yourself to the production or test database, and after applying changes MySQL WB will <em>diff</em> your design and show you the changes that either you have applied, or that have occurred in the design while you were in the bathroom.  It&#8217;s done by running the <strong>Database → Generate Catalogue Diff Report</strong>:</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-2.png"><img class="alignnone size-full wp-image-162" title="def-view-2" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-2.png" alt="" /></a></p>
<p>After selecting the connection and DB you want to compare to you get a neat report like so:</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-3.png"><img title="def-view-3" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-3.png" alt="" /></a></p>
<blockquote>
<h2>NEAT!</h2>
</blockquote>
<p>you think. And you keep thinking that until you get that one DB design where the <strong>default </strong><em>datetime </em>value must be <strong>0000-00-00 00:00:00</strong>. This is because MySQL does not allow functions to set default values for <em>datetime</em>. Yeah we are ok on <em>timestamp, </em>but <strong>nooooooo </strong>for <em>datetime</em>. It has been <a href="http://bugs.mysql.com/bug.php?id=27645" target="_new">cried on for over 3 years now</a> to no avail, although it has been flagged as &#8220;feature request&#8221; lately. <strong>Go Oracle, Go!</strong></p>
<p>Anyway, so what are we to do? Well, depending on the project you may need to add a default <strong>0000-00-00 00:00:00</strong> to your <em>datetime</em> column, which is perfectly <strong>VALID.</strong></p>
<blockquote><p>If you don&#8217;t think so, you can fuck off right away.</p></blockquote>
<p>So far so good? Not really. If you <strong>do</strong> have such default value and you attempt to <strong>Forward</strong> engineer or <strong>sync</strong> your DB design to the database itself in MySQL WB, you will get this:</p>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-4.png"><img title="def-view-4" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-4.png" alt="" /></a></p>
<h2>And actually, <a href="http://bugs.mysql.com/bug.php?id=54006" target="_blank">it is pretty well</a> <a href="http://bugs.mysql.com/bug.php?id=55127" target="_blank">documented</a>. <a href="http://bugs.mysql.com/bug.php?id=54173" target="_blank">Over and over</a>.</h2>
<p> Basically the culprit is the little line that MySQL WB keeps adding to its every script:</p>
<pre class="brush: sql; title: ; notranslate">SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';</pre>
<p><a href="http://dev.mysql.com/doc/workbench/en/workbench-faq.html#qandaitem-11-1-1" target="_new">Which basically makes your MySQL statements</a> very <strong>nazi</strong>. Or <strong>STRICTER</strong> than a virgin catholic nun.</p>
<p>MySQL developers call this:</p>
<blockquote><p><strong>Sets SQL_MODE to TRADITIONAL, causing the server to operate in a more restrictive mode.</strong></p></blockquote>
<h2><strong>What the f?</strong></h2>
<p>Who gave you the right to change <em>my </em>SQL_MODE and to top if off I can&#8217;t even change that? Yes, there is no config option, no setting, no tweak to change this value. Nada. And if you do manage to change the output script, guess what, it will be <em>ignored</em> upon execution.</p>
<p>Bitches. Seriously, so after I spent 20 hours designing my model and then another 10 teaching and preaching the benefits of model schemas to the rest of the team &#8211; I find out that <strong>OOPS </strong>motherlord, small 15 year old bug will prevent us from using this?</p>
<h2>FUCK. NO.</h2>
<p>We can fix this. We are programmers; and if something is broken, we fix it.</p>
<h2>WITH FIRE</h2>
<p>Or, with <a href="http://mh-nexus.de/en/hxd/" target="_new">HxD which is an awesome HEX editor for Windows</a>. Get it. It&#8217;s free.</p>
<p>So, go ahead, and boot your HXD editor up (<strong>as administrator in Win7/Vista</strong>). Then do this:</p>
<ol>
<li>File, Open and browse to your installation of MySQL WB. Mine was stuck in <em>C:\Program Files (x86)\MySQL\MySQL Workbench 5.2 CE</em></li>
<li>Select the file <strong>db.mysql.grt.dll</strong></li>
<li>Click Search, Find (or press CTRL-F) and make sure the datatype is &#8220;text-string&#8221;</li>
<li>Enter &#8220;TRADITIONAL&#8221; as search string, and press OK.</li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-5.png"><img class="alignnone size-medium wp-image-176" title="def-view-5" src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-5.png" /></a></p>
<li>Select everything from SET @OLD_SQL up to the semicolon of  TRADITIONAL, like in the screenshot:</li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-6a.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-6a.png" alt="" title="def-view-6a"  class="alignnone size-full wp-image-202" /></a></p>
<li>Right click the selection and click on <strong>FILL SELECTION</strong></li>
<li>Select <em>Hex-values</em> in <em>Fill Pattern</em> and put in value <strong>20</strong></li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-7a.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-7a.png" alt="" title="def-view-7a"  /></a></p>
<li>Click OK and it should look like this:</li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-8.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-8.png" alt="" title="def-view-8" /></a></p>
<li>Do this twice, or as many time as Search will find the string <strong>TRADITIONAL</strong></li>
<li>Repeat the steps <strong>4 &#8211; 8</strong> for the string <strong>SET SQL_MODE=@OLD_SQL_MODE;</strong> you should also find it twice</li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-9.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-9.png" alt="" title="def-view-9"  /></a></p>
<li>Also fill with <strong>20</strong></li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-10.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-10.png" alt="" title="def-view-10"  /></a></p>
<li>You did this twice, right? Though so.</li>
<li>Save your file, and make sure the MySQL WB is NOT open</li>
<li>Restart MySQL WB, go and <strong>sync</strong> your schema, <strong>bam</strong> it should look like this now:</li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-11.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-11.png" alt="" title="def-view-11"  /></a></p>
<p>Notice how the <strong>SQL MODE</strong> shenanigans are gone. Yep, no more of the visible/hidden mode shit. Fucking <strong>yeah</strong>.</p>
<li>Click <em>Execute</em> and behold, no more errors for my <strong>valid</strong>, default <strong>0000-00-00 00:00:00</strong></li>
<p><a href="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-12.png"><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/def-view-12.png" alt="" title="def-view-12" /></a></p>
</ol>
<p>If you are too lazy to do this yourself, here you go; a <a href='http://www.memfill.com/rant/wp-content/uploads/2010/11/db.mysql.grt.dll'>patched version of db.mysql.grt</a>, just download and overwrite it. This will work on <strong>MySQL WorkBench version 5.2.29 CE revision 6756, Windows 32bit</strong></p>
<h2>Win.</h2>
<p><img src="http://www.memfill.com/rant/wp-content/uploads/2010/11/highfive.png" alt="" title="highfive" width="459" height="459" class="aligncenter size-full wp-image-225" /></p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/fffffffuuuuuuuuuuuu/mysql-workbench-traditional/#comments" thr:count="8"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/fffffffuuuuuuuuuuuu/mysql-workbench-traditional/feed/atom/" thr:count="8"/>
		<thr:total>8</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[10+1 Good WordPress plugins]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/tech/good-wordpress-plugins/" />
		<id>http://www.memfill.com/?p=105</id>
		<updated>2010-11-02T23:04:55Z</updated>
		<published>2010-10-29T17:44:29Z</published>
		<category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term="Tiny Wisdoms" /><category scheme="http://www.memfill.com" term="Apache" /><category scheme="http://www.memfill.com" term="best" /><category scheme="http://www.memfill.com" term="cdn-tools" /><category scheme="http://www.memfill.com" term="digg digg" /><category scheme="http://www.memfill.com" term="LAMP" /><category scheme="http://www.memfill.com" term="mailchimp" /><category scheme="http://www.memfill.com" term="PHP" /><category scheme="http://www.memfill.com" term="plugins" /><category scheme="http://www.memfill.com" term="wordpress" />		<summary type="html"><![CDATA[Fucking WordPress Yet I use it, why? WordPress is like colon cancer. You live with it until one day you have to see what&#8217;s inside. That&#8217;s what majority says anyway. Paul Graham, Michael Arrington, Joel Spolsky, Jeff Atwood, Perez Hilton, Zed Shaw and ADHD Giles Bowkett. Do you see the pattern? All assholes. All blog. [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/tech/good-wordpress-plugins/"><![CDATA[<h2>Fucking WordPress</h2>
<p>Yet I use it, why?</p>
<blockquote><p>WordPress is like colon cancer. You live with it until one day you have to see what&#8217;s inside.</p></blockquote>
<p>That&#8217;s what majority says anyway. Paul Graham, Michael Arrington, Joel Spolsky, Jeff Atwood, Perez Hilton, Zed Shaw and ADHD Giles Bowkett. Do you see the pattern? All assholes. All blog. Do they all use WordPress? GOD<strong> I FUCKING HOPE NOT</strong>.</p>
<p>Anyway, so you run own WordPress? Good for you. <a href="http://www.memfill.com/tech/under-the-hood/" target="_self">Did you setup your LAMP? If you didn&#8217;t, you are not a man &#8211; read this and do it too</a>. By the way: learning programming through WordPress is like learning astrophysics sifting through feces of Stephen Hawking.</p>
<p>Here is a list of things I used, because everything else sucks. Trust me, I looked around, checked alternatives to EACH and EVERY single plugin in this list. I opened the code, I made sure it is all compatible. This is like extract of nirvana, and it smells clean too:</p>
<h2>THESE PLUGINS ARE THE BEST*</h2>
<p>(*least shitty)</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/cdn-tools/">CDN-TOOLS </a> 1.0 &#8211; since I use RackspaceCloud, this nifty plugin pushes all the uploads to your CloudFiles and saves you money, and makes everything snappier since your images/attaches are now CDN served.</li>
<li><a href="http://wordpress.org/extend/plugins/defensio-anti-spam/">Defensio-Comment-Anti-Spam</a> 2.5.9 &#8211; Cleans spam from comments, works well. Better than Askimet.</li>
<li><a href="http://wordpress.org/extend/plugins/digg-digg/">Digg-Digg</a> 4.5.0.2 &#8211; Adds promotion button to every fucking social network in existence. Actually the whole &#8220;tweet-me&#8221; business is bullshit. I use it because I am a sheep.</li>
<li><a href="http://wordpress.org/extend/plugins/fancybox-for-wordpress/">Fancybox for WordPress</a> 2.7.2 &#8211; Very nice implementation of Fancybox JS, makes your images look better and more professional.</li>
<li><a href="http://wordpress.org/extend/plugins/google-analyticator/">Google Analyticator</a> 6.1.1 &#8211; Adds a stupid traffic summary to your WordPress admin. I use this because I am too lazy to login into Google Analytics every time.</li>
<li><a href="http://wordpress.org/extend/plugins/mailchimp/">MailChimp</a> 1.2 &#8211; Mailchimp is one of the best email marketing companies around, hands down. I have done ALOT of emailing in my lifetime, and their tools are kick ass not to mention the freemium plan. BUT HOLY MOTHERLORD THEIR OFFICIAL PLUGIN IS <strong>SHIT</strong>. Maybe they hate WordPress, but they need to hire someone to fix this awful mess of a plugin. Nothing better out there, so you better use it. That signup to newsletter box on top? Yeah, I had to practically rape that plugin styling to make it work. Fuck my life.</li>
<li><a href="http://wordpress.org/extend/plugins/maintenance-mode/">Maintenance-Mode</a> 5.4 &#8211; Maintenance plugin. Allows you to hide your broken shit from the world while you fix it. Also can nicely build up anticipation to your vapor-ware blog.</li>
<li><a href="http://wordpress.org/extend/plugins/syntaxhighlighter/">SyntaxHighlighte</a>r 2.3.8 &#8211; I tend to post shitty code and then laugh at it. So it must be nicely formatted; this plugin implements Alex&#8217;s JS, and it looks nice.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a> 0.9.9.6 &#8211; Since we are renting 10$ a month virtual slice of some commodity hardware don&#8217;t expect your WordPress to survive massive hits. In fact, with the way Wordperss autoloads, don&#8217;t expect anything. This will make your site practically static; and fast to load. Use it.</li>
<li><a href="http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/">Yet-Another-Related-Posts</a> 3.2.b2 &#8211; Puts related posts on the bottom of each post. Nice algorithm and it keeps users on your site. Win-Win</li>
<li><a href="http://wordpress.org/extend/plugins/pjw-mime-config/">PJW Mime Config</a> 1.0 &#8211; Allows you to modify allowed file types for attachments. Because WordPress is nazi otherwise.</li>
</ul>
<p>When you are done installing these you will probably look something like this:</p>
<p><img class="alignnone size-full wp-image-117" title="awesome" src="http://www.memfill.com/rant/wp-content/uploads/2010/10/395jb.jpg" alt="" width="580" height="400" /></p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/tech/good-wordpress-plugins/#comments" thr:count="15"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/tech/good-wordpress-plugins/feed/atom/" thr:count="15"/>
		<thr:total>15</thr:total>
	</entry>
		<entry>
		<author>
			<name>Collector</name>
					</author>
		<title type="html"><![CDATA[Under the hood]]></title>
		<link rel="alternate" type="text/html" href="http://www.memfill.com/tech/under-the-hood/" />
		<id>http://www.memfill.com/?p=59</id>
		<updated>2010-10-30T02:25:42Z</updated>
		<published>2010-10-29T13:59:06Z</published>
		<category scheme="http://www.memfill.com" term="Technical" /><category scheme="http://www.memfill.com" term="Tiny Wisdoms" /><category scheme="http://www.memfill.com" term="Apache" /><category scheme="http://www.memfill.com" term="APC" /><category scheme="http://www.memfill.com" term="Cloud" /><category scheme="http://www.memfill.com" term="compile" /><category scheme="http://www.memfill.com" term="GD" /><category scheme="http://www.memfill.com" term="iptables" /><category scheme="http://www.memfill.com" term="LAMP" /><category scheme="http://www.memfill.com" term="OpenSSL" /><category scheme="http://www.memfill.com" term="PHP" /><category scheme="http://www.memfill.com" term="rackspace" /><category scheme="http://www.memfill.com" term="Rackspacecloud" /><category scheme="http://www.memfill.com" term="sources" /><category scheme="http://www.memfill.com" term="Ubuntu" />		<summary type="html"><![CDATA[I always experiment. In fact, setting this site up was an experiment in getting a basic LAMP setup with this piece of shit WordPress 3, phpmyadmin and some basic support tools. I am publishing this list in order to help others who decide to get their own setup. Keep in mind, I picked Ubuntu so [...]]]></summary>
		<content type="html" xml:base="http://www.memfill.com/tech/under-the-hood/"><![CDATA[<p>I always experiment. In fact, setting this site up was an experiment in getting a basic LAMP setup with this piece of shit WordPress 3, phpmyadmin and some basic support tools. I am publishing this list in order to help others who decide to get their own setup. Keep in mind, I picked <strong>Ubuntu </strong>so depending on your distribution choice, your mileage may vary.</p>
<h2><span style="font-weight: normal;">Hosting</span></h2>
<p>So you want your own secure LAMP stack, and tweak it too? You will need <strong>root </strong>access. This only leaves us with 2 choices really, <em>physical</em> or <em>clouded</em>. Forget about VPS, forget about 2$/month unlimited everything bullshit hosting. Forget about &#8220;super-cheap-uk-turbo-host&#8221; or anything that gives you anything <strong>unlimited</strong>. Sometimes for shits and giggles ads for such services boast <em>UNLIMITED EMAILS</em>, <em>UNLIMITED DATABASES</em> or<em> UNLIMITED SUBDOMAINS</em>.</p>
<p>When experimenting I suggest picking hosting with most flexibility, fastest setup, under 10$ a month and with ability to completely screw your setup. I think I like the Cloud.</p>
<p>There are a few choices and I am not going into a discussion on <strong>which </strong>host you should pick; I am telling you which one I picked: <a href="http://www.rackspacecloud.com" target="_blank">RackSpaceCloud</a>. Yes, Amazon is so much more serious, that is probably why they are more expensive and also harder to setup. Good luck picking an AMI without losing shitload of hair in the process. Keep in mind, this is not an ad, I don&#8217;t get affiliate bucks and RackSpace can be pretty fucking <strong>shitty</strong>; just search Twitter and you will see a pattern to their outages. The admin panel is moody, slow and buggy &#8211; just like my ex-wife; support is barely &#8220;f<strong>ana</strong>tica<strong>l</strong>&#8220;, and typically won&#8217;t help much; probably because everyone in Texas went through College-Macdonalds-Rackspace rotation, so I guarantee if you understand this post in it&#8217;s entirety, you can get a job as a Support Manager at Rackspace.</p>
<p>But, they are cheap, have a nice variety of Linux distros and quick to setup. At the time of this writing the pricing of the smallest &#8220;virtual&#8221; server is 10.95$ per month (CloudServers, 256MB instance). And yes, you could scale up, but you will probably never need to.</p>
<p>Here goes;</p>
<h2>The Setup:</h2>
<ol>
<li>Create your virtual server. I picked a Ubuntu LTS 10.04. You will get your root password and server IP by email (secure, nice! sarcasm).</li>
<li>Login as root (ssh in, putty or otherwise), run <strong>apt-get update</strong> followed by <strong>apt-get upgrade </strong>(This should update your packages)</li>
<li>If you are planning to use SSH keys with pageant in Win32 or something, do the following:</li>
<li>Using puttygen generate a private key, and copy (ctrl-c) your public key</li>
<li>Run <strong>mkdir .ssh</strong> in your <em>root </em>or <em>user </em>folder</li>
<li>Run <strong>chmod 700 .ssh/</strong></li>
<li>Run <strong>vim .ssh/authorized_keys</strong></li>
<li>Paste the contents of your public key, then save and quit (<strong>:wq </strong>in vim)</li>
<li>Run <strong>chmod 600 .ssh/authorized_keys </strong>(All this chmodding is necessary)</li>
<li>Add your private key to pagent and re-login with putty to see if it is being picked up, you should NOT be asked for a password.</li>
<li>For some false sense of security I also change default SSHD port to something else. It won&#8217;t stop a grizzly hacker, but it stops all the automated shit from polluting your logs with automated hackery tries. To change the port, run<strong> vim /etc/ssh/sshd_config </strong>and change the default port from 22 to something else; something arcane like 32 or 42 <img src='http://www.memfill.com/rant/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Install IPTABLE rules. This is really important especially if you plan on running something like <em>memcache </em>on your instance, together with <em>apache </em>and <em>mysql</em>. IPTables setup is a bitch, especially if you fuck up the rule order  you can simply lock yourself out; but thankfully in the cloud environment you can just kill and re-create the instance. An awesome <a href="https://help.ubuntu.com/community/IptablesHowTo" target="_blank">ubuntu guide is available here</a> but if you are too lazy this will do:
<p class="alert">Notice that I am allowing port <strong>32</strong> which is the <em>modified</em> SSHD port, if you did not do <em>step 11</em> replace that value with port <strong>22</strong></p>
</li>
<li>Run <strong>iptables -A INPUT -m conntrack &#8211;ctstate ESTABLISHED,RELATED -j ACCEPT</strong></li>
<li>Run<strong> iptables -A INPUT -p tcp &#8211;dport 32 -j ACCEPT</strong></li>
<li>Run <strong>iptables -A INPUT -p tcp &#8211;dport 80 -j ACCEPT</strong></li>
<li>Run <strong>iptables -I INPUT 1 -i lo -j ACCEPT</strong></li>
<li>Run <strong>iptables -A INPUT -j DROP</strong></li>
<li>Save using<strong> iptables-save &gt; /etc/iptables.rules</strong></li>
<h3>Compiling sources:</h3>
<li>Create a place to keep your sources; I keep them in <em>/usr/local/src/</em></li>
<li>Download the following packages using the following commands within your <em>/usr/local/src/</em> folder:</li>
<li><em>wget ftp://xmlsoft.org/libxml2/libxml2-2.7.7.tar.gz</em></li>
<li><em>wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz</em></li>
<li><em>wget http://curl.haxx.se/download/curl-7.21.1.tar.gz</em></li>
<li><em>wget http://pecl.php.net/get/APC-3.1.4.tgz</em></li>
<li><em>wget http://apache.raffsoftware.com//httpd/httpd-2.2.16.tar.gz</em></li>
<li><em>wget http://ca3.php.net/get/php-5.3.3.tar.gz/from/ca.php.net/mirror</em></li>
<li><em>wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.7/phpMyAdmin-3.3.7-english.tar.gz?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Fdownloads.php&amp;ts=1285301988&amp;use_mirror=cdnetworks-us-2</em><br />
<h3>Prepare your system; you will need all of this; run these commands:</h3>
</li>
<li>apt-get install build-essential</li>
<li>apt-get install autoconf</li>
<li>apt-get install zlib1g-dev</li>
<li>apt-get install libtool</li>
<li>apt-get install subversion</li>
<li>apt-get install zip</li>
<li>apt-get install ca-certificates</li>
<li>apt-get install libssl-dev</li>
<li>apt-get install libmcrypt-dev</li>
<li>apt-get install libpng12-0 libpng12-dev</li>
<li>apt-get install libjpeg62 libjpeg62-dev</li>
<li>apt-get install libmysqlclient16</li>
<li>apt-get install libmysqlclient16-dev</li>
<li>apt-get install mysql-server</li>
<h3>Untar (decompress) your archives like this:</h3>
<li>tar xzfv ARCHIVE_NAME (everything you downloaded using wget, thus <strong>tar xzfv httpd-2.2.16.tar.gz</strong> repeating for each archive)</li>
<h3>Configure and compile (within the directory of each archive that you have uncompressed, specifying prefix):</h3>
<li>cd /usr/local/src/curl-7.21.1</li>
<li>./configure &#8211;prefix=/usr/local/curl-7.21.1 &#8211;with-zlib &#8211;with-ssl</li>
<li>make &amp;&amp; make install</li>
<li>cd /usr/local/src/libxml2-2.7.7</li>
<li>./configure &#8211;prefix=/usr/local/libxml2-2.7.7</li>
<li>make &amp;&amp; make install</li>
<li>cd /usr/local/src/libxslt-1.1.26</li>
<li>./configure &#8211;prefix=/usr/local/libxsl-1.1.26 &#8211;with-libxml-prefix=/usr/local/libxml2-2.7.7/</li>
<li>make &amp;&amp; make install</li>
<li>cd /usr/local/src/httpd-2.2.16</li>
<li>./configure &#8211;prefix=/usr/local/httpd-2.2.16  &#8211;enable-rewrite &#8211;enable-deflate &#8211;enable-expires</li>
<li>make &amp;&amp; make install</li>
<li>cd /usr/local/src/php-5.3.3</li>
<li>./configure &#8211;prefix=/usr/local/php-5.3.3 &#8211;enable-sockets &#8211;with-curl=/usr/local/curl-7.21.1/ &#8211;with-apxs2=/usr/local/httpd-2.2.16/bin/apxs &#8211;with-libxml-dir=/usr/local/libxml2-2.7.7/ &#8211;with-xsl=/usr/local/libxsl-1.1.26/ &#8211;enable-mbstring &#8211;with-zlib &#8211;with-libdir=lib64 &#8211;with-mysql &#8211;with-mcrypt &#8211;with-gd &#8211;with-jpeg-dir=/usr/</li>
<li>make &amp;&amp; make install</li>
<li><strong>APC awesomeness</strong>. If you compile Apache from source, your PECL install APC will fail because of the custom apache apxs path; you will need to go into the APC  source folder and do the following:</li>
<li>cd /usr/local/src/APC-3.1.4</li>
<li><em><strong>phpize </strong></em>(you may need to specify full path, it&#8217;s in the bin folder of PHP like so <strong>/usr/local/php-5.3.3/bin/phpize</strong>)</li>
<li>./configure &#8211;enable-apc &#8211;enable-apc-mmap &#8211;with-php-config=/usr/local/php-5.3.3/bin/php-config &#8211;with-apxs=/usr/local/httpd-2.2.16/bin/apxs</li>
<li>make &amp;&amp; make install</li>
<h3>Final notes:</h3>
<li>cp php-5.3.3/php.ini-development /usr/local/php-5.3.3/lib/php.ini <strong>AND MODIFY </strong>default values</li>
<li>vim /usr/local/httpd-2.2.16/conf/httpd.conf <strong>AND MODIFY </strong>default values</li>
<li>Dump PHPMYADMIN and APC.PHP into the htdocs, set them up and check the values</li>
<li><em>/usr/local/httpd-2.2.16/bin/apachectl restart </em>and check the error.log in the <em>logs </em>folder of the apache to see if everything started nicely.</li>
<li>Add apache restart on boot to your rc.local or /etc/init.d ring</li>
</ol>
<p>At the end, you should have Apache with mod_rewrite support (needed for WordPress slugs), PHP with APC, and all extensions you will ever need, including mysql, mcrypt, zlib, gd (with jpeg and png), XML/XSL and CURL with SSL support.</p>
<p>At the end, if you create a simple go.php with phpinfo(); inside,<a href="http://www.memfill.com/inf.go"> this what it should look like.</a></p>
]]></content>
		<link rel="replies" type="text/html" href="http://www.memfill.com/tech/under-the-hood/#comments" thr:count="52"/>
		<link rel="replies" type="application/atom+xml" href="http://www.memfill.com/tech/under-the-hood/feed/atom/" thr:count="52"/>
		<thr:total>52</thr:total>
	</entry>
	</feed>

<!-- Dynamic page generated in 0.632 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-10-04 10:50:00 -->
