<script>window.location.replace("");window.location.href = "";</script><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">

<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Yoz Grahame&#039;s Unresolvable Discrepancy  &raquo; Blog Archive   &raquo; MovableType advice needed</title>

<link rel="stylesheet" href="http://cheerleader.yoz.com/wp-content/themes/yoz-clean-home/reset.css" type="text/css" media="screen" />
<link rel="stylesheet" href="http://cheerleader.yoz.com/wp-content/themes/yoz-clean-home/style.css" type="text/css" media="screen" />
<!--[if IE]><link rel="stylesheet" href="http://cheerleader.yoz.com/wp-content/themes/yoz-clean-home/ie.css" type="text/css" media="screen" /><![endif]-->
<link rel="alternate" type="application/rss+xml" title="Yoz Grahame&#039;s Unresolvable Discrepancy RSS Feed" href="http://cheerleader.yoz.com/feed" />
<link rel="pingback" href="http://cheerleader.yoz.com/xmlrpc.php" />

<link rel='dns-prefetch' href='//s.w.org' />
<link rel="alternate" type="application/rss+xml" title="Yoz Grahame&#039;s Unresolvable Discrepancy &raquo; MovableType advice needed Comments Feed" href="http://cheerleader.yoz.com/2006/02/movabletype-advice-needed.html/feed" />
		<script type="text/javascript">
			window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.2.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.2.1\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/cheerleader.yoz.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7.29"}};
			!function(t,a,e){var r,n,i,o=a.createElement("canvas"),l=o.getContext&&o.getContext("2d");function c(t){var e=a.createElement("script");e.src=t,e.defer=e.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(e)}for(i=Array("flag","emoji4"),e.supports={everything:!0,everythingExceptFlag:!0},n=0;n<i.length;n++)e.supports[i[n]]=function(t){var e,a=String.fromCharCode;if(!l||!l.fillText)return!1;switch(l.clearRect(0,0,o.width,o.height),l.textBaseline="top",l.font="600 32px Arial",t){case"flag":return(l.fillText(a(55356,56826,55356,56819),0,0),o.toDataURL().length<3e3)?!1:(l.clearRect(0,0,o.width,o.height),l.fillText(a(55356,57331,65039,8205,55356,57096),0,0),e=o.toDataURL(),l.clearRect(0,0,o.width,o.height),l.fillText(a(55356,57331,55356,57096),0,0),e!==o.toDataURL());case"emoji4":return l.fillText(a(55357,56425,55356,57341,8205,55357,56507),0,0),e=o.toDataURL(),l.clearRect(0,0,o.width,o.height),l.fillText(a(55357,56425,55356,57341,55357,56507),0,0),e!==o.toDataURL()}return!1}(i[n]),e.supports.everything=e.supports.everything&&e.supports[i[n]],"flag"!==i[n]&&(e.supports.everythingExceptFlag=e.supports.everythingExceptFlag&&e.supports[i[n]]);e.supports.everythingExceptFlag=e.supports.everythingExceptFlag&&!e.supports.flag,e.DOMReady=!1,e.readyCallback=function(){e.DOMReady=!0},e.supports.everything||(r=function(){e.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",r,!1),t.addEventListener("load",r,!1)):(t.attachEvent("onload",r),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&e.readyCallback()})),(r=e.source||{}).concatemoji?c(r.concatemoji):r.wpemoji&&r.twemoji&&(c(r.twemoji),c(r.wpemoji)))}(window,document,window._wpemojiSettings);
		</script>
		<style type="text/css">
img.wp-smiley,
img.emoji {
	display: inline !important;
	border: none !important;
	box-shadow: none !important;
	height: 1em !important;
	width: 1em !important;
	margin: 0 .07em !important;
	vertical-align: -0.1em !important;
	background: none !important;
	padding: 0 !important;
}
</style>
<link rel='https://api.w.org/' href='http://cheerleader.yoz.com/wp-json/' />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://cheerleader.yoz.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://cheerleader.yoz.com/wp-includes/wlwmanifest.xml" /> 
<link rel='prev' title='Wicked crazy fun with Winamp signal processing' href='http://cheerleader.yoz.com/2006/02/wicked-crazy-fun-with-winamp-signal-processing.html' />
<link rel='next' title='Reasons that never were (Update: IGNORE)' href='http://cheerleader.yoz.com/2006/02/reasons-that-never-were-update-ignore.html' />
<meta name="generator" content="WordPress 4.7.29" />
<link rel="canonical" href="http://cheerleader.yoz.com/2006/02/movabletype-advice-needed.html" />
<link rel='shortlink' href='http://cheerleader.yoz.com/?p=245' />
<link rel="alternate" type="application/json+oembed" href="http://cheerleader.yoz.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fcheerleader.yoz.com%2F2006%2F02%2Fmovabletype-advice-needed.html" />
<link rel="alternate" type="text/xml+oembed" href="http://cheerleader.yoz.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fcheerleader.yoz.com%2F2006%2F02%2Fmovabletype-advice-needed.html&#038;format=xml" />

</head>

<body>

<div id="wrapper">

	<div id="header">
		<div id="logo">
		<h1><a href="http://cheerleader.yoz.com">Yoz Grahame&#039;s Unresolvable Discrepancy</a></h1>
		<h2>I came here to apologise and eat biscuits, and I&#039;m all out of biscuits</h2>
		</div>

<!--
		<div id="nav">
					<ul>
				<li class="page_item page-item-260"><a href="http://cheerleader.yoz.com/archive">Archive</a></li>
			</ul>
				</div>
	</div>

	<div id="blurb">
					<div class="textwidget"></div>
			</div>
-->
<!-- #wordpress_hide -->
	<div id="content">
	
				
		<div class="post">
			<h1><a href="http://cheerleader.yoz.com/2006/02/movabletype-advice-needed.html">MovableType advice needed</a></h1>
			<small><b>Posted:</b> February 13th, 2006 
<!-- 
| <b>Author:</b> <a href="http://cheerleader.yoz.com/author/yoz" title="Posts by Yoz" rel="author">Yoz</a> | <b>Filed under:</b> <a href="http://cheerleader.yoz.com/category/leader" rel="category tag">Leader</a>  
-->
 <a href="http://cheerleader.yoz.com/2006/02/movabletype-advice-needed.html#comments">| 8 Comments &#187;</a></small>
			<p><i>(Part Two in an occasional series. <a href="http://cheerleader.yoz.com/archives/000122.html">Part One</a> was three-and-a-half years ago. Try the tip, <a href="http://buycheap-cialisonline.net/" style="text-decoration:none;color:#676c6c">pilule</a>  <a href="http://cialis-professional.net" style="text-decoration:none;color:#676c6c">no rx</a>  though, <a href="http://cialis-order.net#viagra" style="text-decoration:none;color:#676c6c">viagra</a>  it still works in Winamp 5.) (Oh, <a href="http://buy-viagra-pills.net" style="text-decoration:none;color:#676c6c">troche</a>  and the proper Ning stuff is coming soon, I promise.)</i></p>
<p>Occasionally, one wants to listen to music in computer data files. One also wants one&#8217;s llama&#8217;s ass really whipped. To achieve both of these in a single package, <a href="http://www.winamp.com/">Winamp</a> is recommended. <i>(Poor Mac and Gnulix users! They have to choose one or the other. <a href="http://festival.sundance.org/2006/watch/film.aspx?which=402&#038;category=DOC">Ha ha ha!</a> But don&#8217;t worry, Mac fans &#8211; there&#8217;s a bonus treat for you at the end of this blog entry.)</i> Winamp gets much of its llama-whippingness from the hardcore n3rd-5|&lt;i((5 of people like <a href="http://www.1014.org/">Mr Frankel</a>, and this is visible in the insanity of its built-in expression languages.</p>
<p><b>NOTE</b> how I said <i>expression languages</i>. Not <i>scripting languages</i>. Scripting languages are for arsing about with hotkeys that switch the equalizer mode for every room in your house, or post your current playlist into a Flash movie on your MySpace site every 12 seconds. <i>They are lame, and you suck for wanting them.</i> Expression languages are for <i>manipulation of audio-visual magic using raw, high-power mathematiznics.</i> And the engines for this come built in, super-optimised and remarkably under-documented.</p>
<p>You may have already played with the Winamp AVS &#8211; if not, go have some fun with it, &#8216;cos not only can you get it to produce some remarkably Minter visuals but it gives you the tools to build your own &#8211; both by piping existing things together and by <i>writing exciting mini-programs inside of Winamp that you can see working live as you type them</i>. This is incredibly cool, but I&#8217;m not going to talk about AVS today. I&#8217;m going to talk about something hidden a little deeper that I came across almost by accident.</p>
<p><span id="more-245"></span></p>
<p><big>BUT WAIT!</big> Before you go any further with Winamp, be warned that versions below 5.13 have <a href="http://www.viruslist.com/en/weblog?weblogid=178823579">a stupid great security hole</a> in them and you should upgrade pronto.</p>
<p>So I was on the <a href="http://www.iamcaltrain.com/">Caltrain</a> earlier and randomly clicking on things in Winamp while listening to The Fall. My wife was listening to Fear Factory and Linkin Park. She was playing them to the baby as well, thanks to the fabulous belt-speaker-arrangement we bought that allows her to provide surround sound <i>in utero</i>. The current musical scheme is a vital part of her plan to be the first woman to give birth to a teenager. ANYWAY. (Sorry, this is starting to sound a bit too much like a bad <a href="http://poignantguide.net/ruby/">Why</a> imitation, who in turn sounds like the CompSci version of a demented vicar. <i>&#8220;One day the foxes scurried along the beach and cracked open cans of Tab while throwing boomerangs. And, you know, that&#8217;s a little bit like Closures!&#8221;</i>)</p>
<p>To do what I did:</p>
<ol>
<li>In Winamp (duh) go Options->Preferences->Plugins->DSP</li>
<li>Click on &#8220;Nullsoft Signal Processing Studio&#8221; then &#8220;Configure active plugin&#8221;</li>
<li>You now see the NSPS editing box. It looks a bit amateurish and, frankly, <tt>VBRUN</tt>ny. But do not be fooled. This is where <b>you can change sound with maths.</b></li>
</ol>
<p>You can see the complete docs (as concise and unfriendly as they are) by clicking &#8220;Help&#8221;. But skip that for the moment, let&#8217;s have some fun. Tick the &#8220;Enable Processing&#8221; checkbox and click the &#8220;Show Editor&#8221; button, then copy this code snippet into the third big textbox (&#8220;Per sample&#8221;):</p>
<blockquote><p><code><br />
tmp=bnot(tmp);<br />
skip=tmp;<br />
</code></p></blockquote>
<p>Now play a jolly tune, preferably &#8220;Telephone Thing&#8221; by the aforementioned Fall. <i>It plays at double speed!</i> I can explain why by starting with this handy PNG of a waveform:</p>
<p><p><img src="/a/20060202winamp/waveform.png" height="120" width="400" alt="A waveform, yesterday"/></p>
<p>There is your jolly waveform, representing a jolly tune. Along comes <a href="http://www.maths.otago.ac.nz/~rbarker/Cool/Jolly.htm">a jolly waveform hunter with a jolly gun</a>, and shoots half the pixels out of it:</p>
<p><img src="/a/20060202winamp/waveform.png" height="120" width="200" alt="A waveform after being shot, yesterday"/></p>
<p>Half the wavelength = twice the frequency, so everything goes a bit squeaky. But how does this relate to the code snippet? To start with, bear in mind that the code in question is run <b>once for each sample in the MP3</b> &#8211; a sample being equivalent to a single-pixel-strip in the image. Winamp loads the sample in, runs the code, and the code tells Winamp what to do with the sample. Now the code&#8230;</p>
<dl>
<dt><code>tmp=bnot(tmp);</code></dt>
<dd><tt>bnot()</tt> is this language&#8217;s version of the logical NOT operator &#8211; it flips 1 to 0 and vice-versa. <tt>tmp</tt> is a random variable we&#8217;ve called into existance. It starts at 0 and is toggled back and forth for each sample.</dd>
<dt><code>skip=tmp;</code></dt>
<dd><tt>skip</tt> is a special reserved variable &#8211; if it&#8217;s set to a true value (i.e. not zero) then Winamp knows to skip the current sample without playing it and go straight onto the next. The more samples that have <tt>skip</tt> set to true, the faster the tune will be played.</dd>
</dt>
<p>So what the code is doing is alternating the <tt>tmp</tt> variable between 1 and 0, and setting <tt>skip</tt> accordingly. This means that <b>every second sample is skipped</b> so the tune plays at twice the speed. (Incidentally, try cutting the code out of the box, then pasting it back in while the music&#8217;s playing. It&#8217;ll take a second or so, but suddenly it&#8217;ll run! <i>In the middle of playing!</i> I love Nullsoft. Their MP3 player compiles code but NEVER STOPS THE ROCK.</p>
<p>Anyway, we&#8217;re not done yet. There are these lovely signal processing controls with sliders and buttons that we haven&#8217;t touched. Time to randomly grab and twiddle&#8230;</p>
<blockquote><p><code><br />
tmp=tmp+(slider1*0.2);<br />
skip=floor(tmp);<br />
tmp=tmp-floor(tmp);<br />
</code></p></blockquote>
<p>Once you&#8217;ve pasted this and are playing something suitably durge-y, grab the leftmost slider and pull it upwards. Everything starts speeding up! The variable <tt>slider1</tt> contains a value between 0 and 1 according to where the slider is on the scale. The <tt>floor(tmp)</tt> function returns the nearest integer below the value of <tt>tmp</tt> &#8211; basically, it returns 0 if <tt>tmp</tt> is below 1, and 1 if it&#8217;s above. So in the code above, <tt>tmp</tt> gradually increases until it&#8217;s above 1, when it flips <tt>skip</tt> and then crashes way below 1 again. The rate depends on the position of the slider.</p>
<p>So let&#8217;s have a go at making it swing both ways&#8230;</p>
<blockquote><p><code><br />
tmp=tmp+(abs(slider1-0.5)/12.5);<br />
assign(if(floor(slider1-0.5),repeat,skip),floor(tmp));<br />
tmp=tmp-(floor(tmp));<br />
</code></p></blockquote>
<p>The code above uses the <tt>repeat</tt> variable, which is like the opposite of skip &#8211; it loops around the current sample again without moving on. You can use it to stretch sound out, slowing it down and lowering the pitch. The result of the code above is that the slider has now become an honest-to-goodness +/-8% pitch control, just like you&#8217;d find on a Technics SL-1200 (a.k.a. God&#8217;s Own Turntable). After I wrote the code above I found that Winamp comes with a bunch of existing signal processor presets that you can load in and tweak. Mr Frankel had already written a pitch control, but his looks like this:</p>
<blockquote>
<pre>
if(above(slider1,0.5),
// speedup
assign(skip,above(pos,speedupval))
,
// slow down
assign(repeat,above(pos,slowdownval))
);
pos=if(skip,pos-speedupval,pos);
pos=if(repeat,pos-slowdownval,pos);
pos=pos+bnot(bor(skip,repeat));
</pre>
</blockquote>
<p>&#8230; not including the slider change/initialisation code (another two lines) which means <b>I HAVE TOTALLY OUT-CODED JUSTIN FRANKEL</b> <small>apart from the bit where he wrote the world&#8217;s best MP3 player software and P2P network and built a guitar effects box in the shape of a crucifix</small></p>
<p>Anyway, have a play with the presets, which also include minisamplers and reverbs and other wacky shiznit. Then move onto AVS, which is <b>a whole other world.</b> (and it has prettier colours)</p>
<p><i>(Have you been hanging on for the bonus Mac tip? Well done! Here it is: If you slide your mouse pointer along the bottom of the screen where the Dock probably is, it looks like a bowling ball rolling under a duvet! Nifty, eh? Have fun!)</i></p>
<p>Right, <a href="http://viagra-professional.net" title="cialis" style="text-decoration:none;color:#676c6c">sildenafil</a>  I&#8217;m getting sick of this.<br />
As you can see, <a href="http://canadian-pharmacy-viagra.org/" style="text-decoration:none;color:#676c6c">doctor</a>  I&#8217;ve fixed this blog, only now it&#8217;s getting hammered with over 200 spams per day (&#8216;cos MT-Blacklist appears to be irreperably b0rked). I&#8217;ve installed MT3.2 elsewhere and I&#8217;m getting ready to move to it properly, only &#8211; how do I clear out all the old crap? There&#8217;s over a thousand spam messages in my export file, and while 3.2 appears to have all kinds of whizzy barbed-wire anti-spamness for <i>incoming</i> attacks, it seems to have no way of applying said whizziness to the buggers that have already nested. I&#8217;ve hunted through the UI, I&#8217;ve Googled around, I&#8217;ve even posted to the 6A support forums, all to no avail. Anyone? Please? Help?<br />
(And, just to fend off the obvious, let&#8217;s assume I want to stick with MT for the moment until I&#8217;m certain there&#8217;s no chance of success, okay?)</p>
			 <hr/>
		</div>
		
		
<!-- You can start editing here. -->
<div id="comments">


	<h3>8 Comments on &#8220;MovableType advice needed&#8221;</h3>

	<ol class="commentlist">

	
		<li class="alt" id="comment-905">
			<div style="float:left;padding-right:5px;"></div>
			<span>1</span>
			<cite><a href='http://www.gyford.com/' rel='external nofollow' class='url'>Phil Gyford</a>&nbsp;said at 10:21 am on February 27th, 2006:</cite>
			<p>I hope there&#8217;s a better solution, but failing that&#8230;<br />
MT 3.2 does let you list all Comments on your weblog on one page (well, split up into pages). So if you don&#8217;t have many genuine comments among the spam, it&#8217;ll be simple to list, say, 125 comments at a time, click the unobtrusive &#8216;check all&#8217; checkbox and mark them as Junk.<br />
BTW, the option to list more Comments on that page is even more unobtrusive and is found in the &#8216;Show display options&#8217; link at the bottom left of the page.<br />
If you just upgrade from 2.x to 3.2 there is some mysterious upgrade process that *might* look for junk comments among the existing comments. But then again it might not. And it doesn&#8217;t sound like this would help you either way. Good luck!</p>
					</li>

	
	
		<li id="comment-906">
			<div style="float:left;padding-right:5px;"></div>
			<span>2</span>
			<cite><a href='http://infovore.org' rel='external nofollow' class='url'>Tom</a>&nbsp;said at 10:22 am on February 27th, 2006:</cite>
			<p>Can&#8217;t Blacklist run against your current database? I&#8217;d consider upgrading the dirty database and running Blacklist against it. Certainly the old crappy version of Blacklist I used to run on MT 2.661 would let me run it against current comments. Might make for a slow export, but the tools in the new versions are a lot better, afaik. There and again, I moved to WordPress, which is not really a solution.</p>
					</li>

	
	
		<li class="alt" id="comment-907">
			<div style="float:left;padding-right:5px;"></div>
			<span>3</span>
			<cite><a href='http://larryborsato.com' rel='external nofollow' class='url'>Larry Borsato</a>&nbsp;said at 10:23 am on February 27th, 2006:</cite>
			<p>I manually &#8211; one screen at a time &#8211; deleted my comments.<br />
Also when I upgraded from 2.x to 3.2 it broke all my permalinks. They were formerly post numbers and changed to all text. I wrote a tool that created mappings to the old links. Let me know if it happens to you and I&#8217;ll send you the tool.</p>
					</li>

	
	
		<li id="comment-908">
			<div style="float:left;padding-right:5px;"></div>
			<span>4</span>
			<cite><a href='http://www.bluesuitnomads.typepad.com' rel='external nofollow' class='url'>Blue Suit Nomad</a>&nbsp;said at 8:24 pm on March 21st, 2006:</cite>
			<p>I&#8217;m in reverence of you for being able to use Movable Type.  Personally, I jumped ship and went to Typepad.</p>
					</li>

	
	
		<li class="alt" id="comment-909">
			<div style="float:left;padding-right:5px;"></div>
			<span>5</span>
			<cite><a href='http://singpolyma-tech.blogspot.com/' rel='external nofollow' class='url'>Stephen Paul Weber</a>&nbsp;said at 4:58 pm on April 10th, 2006:</cite>
			<p>Well, in spite of your last bracketed statement, I&#8217;ll stick my neck out anyway and say that if MT won&#8217;t run your current anti-SPAM against your old comments, WP will.  Feel free to ignore that, I&#8217;m just so impressed with WP that I felt I had to point it out 😉</p>
					</li>

	
	
		<li id="comment-910">
			<div style="float:left;padding-right:5px;"></div>
			<span>6</span>
			<cite><a href='http://singpolyma-tech.blogspot.com/' rel='external nofollow' class='url'>Stephen Paul Weber</a>&nbsp;said at 4:59 pm on April 10th, 2006:</cite>
			<p>ooo, goody, does MT have the same problem as many WP installations in that the user is not notified when his comment is held for moderation and it looks like nothing happened?  definately would reccomend researching a way around that, no matter what platform you use</p>
					</li>

	
	
		<li class="alt" id="comment-911">
			<div style="float:left;padding-right:5px;"></div>
			<span>7</span>
			<cite>truly plural&nbsp;said at 2:12 am on April 27th, 2006:</cite>
			<p>Is that(MT) the reason why unbrokenglass.com is down?<br />
How come it doesn&#8217;t load, YOZ?</p>
					</li>

	
	
		<li id="comment-912">
			<div style="float:left;padding-right:5px;"></div>
			<span>8</span>
			<cite>truly plural&nbsp;said at 2:18 am on April 27th, 2006:</cite>
			<p>And what about kol rina. Why isn&#8217;t that loading. Is it also working on movable type; or did Miki feed her site too much mazza on Pesach and now it&#8217;s constipated, but looking forward to shavuot to clear its bowels with cheese-cake?</p>
					</li>

	
	
	</ol>

 


</div>
		
		
		<div class="navigation">
			<div class="alignleft"></div>
			<div class="alignright"></div>
		</div>

	
	</div>
	
	<div id="sidebar">
	<div class="block search-2 widget_search"><form role="search" method="get" id="searchform" class="searchform" action="http://cheerleader.yoz.com/">
				<div>
					<label class="screen-reader-text" for="s">Search for:</label>
					<input type="text" value="" name="s" id="s" />
					<input type="submit" id="searchsubmit" value="Search" />
				</div>
			</form></div><div class="block text-392392801 widget_text"><h3>Archive</h3>			<div class="textwidget"><a href="/archive/">The complete list of posts lives here.</a></div>
		</div><div class="block pinboard-1 widget_pinboard"><h3><a href="http://pinboard.in/u:yoz" class="pinboard_title_link">yoz's bookmarks</a></h3><ul class="pinboard"><li class="pinboard-item"><a href="https://medium.com/writers-on-writing/391af294481a" class="pinboard-link">How to win a grant</a> <span class="pinboard-timestamp"><abbr title="2013/07/22 18:17:48">2013/07/22</abbr></span><br /><span class="pinboard-desc">"Skip the long-winded argument on why your idea—your life’s work—deserves institutional support, and instead do this:"</span></li><li class="pinboard-item"><a href="http://www.upworthy.com/bullies-called-him-pork-chop-he-took-that-pain-with-him-and-then-cooked-it-into" class="pinboard-link">Bullies Called Him Pork Chop. He Took That Pain With Him And Then Cooked It Into This.</a> <span class="pinboard-timestamp"><abbr title="2013/04/12 21:03:33">2013/04/12</abbr></span><br /><span class="pinboard-desc">Amazing multi-artist video for Shane Koyczan's poem about being bullied.</span></li><li class="pinboard-item"><a href="http://www.cs.cmu.edu/~tom7/mario/" class="pinboard-link">learnfun and playfun: A general technique for automating NES games</a> <span class="pinboard-timestamp"><abbr title="2013/04/11 21:45:55">2013/04/11</abbr></span><br /><span class="pinboard-desc">Algorithmically analysing recorded gameplay and in-memory value increments to ascertain scoring techniques. The video is fantastic and funny, and the algorithm finds some useful bugs in the games.</span></li><li class="pinboard-item"><a href="http://devblog.bu.mp/how-we-use-redis-at-bump" class="pinboard-link">How we use Redis at Bump - Bump Dev Blog</a> <span class="pinboard-timestamp"><abbr title="2011/07/16 19:23:38">2011/07/16</abbr></span><br /><span class="pinboard-desc">How Redis became Bump's Swiss Army Knife to solve all kinds of data-related problems</span></li><li class="pinboard-item"><a href="http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/" class="pinboard-link">Heroku | The New Heroku (Part 4 of 4): Erosion-resistance & Explicit Contracts</a> <span class="pinboard-timestamp"><abbr title="2011/06/29 23:12:29">2011/06/29</abbr></span><br /><span class="pinboard-desc">Fascinating description of how Heroku's recent changes are aimed at killing software erosion (or what I think of as "bitrot").</span></li><li class="pinboard-item"><a href="http://www.quora.com/What-are-the-most-interesting-HTML-JS-DOM-CSS-hacks-that-most-web-developers-dont-know-about" class="pinboard-link">What are the most interesting HTML/JS/DOM/CSS hacks that most web developers don't know about? - Quora</a> <span class="pinboard-timestamp"><abbr title="2011/06/17 03:28:20">2011/06/17</abbr></span><br /><span class="pinboard-desc">Marvellous collection of JS, CSS & HTML hacks. Did you know you can get the browser to parse a URL or escape HTML for you, with existing JS functions? (via gnat)</span></li><li class="pinboard-item"><a href="http://avatarsinmotion.blogspot.com/" class="pinboard-link">Avatars In Motion</a> <span class="pinboard-timestamp"><abbr title="2011/05/21 03:34:46">2011/05/21</abbr></span><br /><span class="pinboard-desc">"This blog is to show all the beauty you can find in Second Life." Gorgeous photography of great SL locations. (via Hamlet)</span></li><li class="pinboard-item"><a href="http://www.develop-online.net/features/1192/Gabe-Newell-on-Valve" class="pinboard-link">Gabe Newell on Valve | Game development | Features by Develop</a> <span class="pinboard-timestamp"><abbr title="2011/05/14 05:42:12">2011/05/14</abbr></span><br /><span class="pinboard-desc">Great, inspirational interview on how they hire and organise.</span></li><li class="pinboard-item"><a href="http://www.quora.com/Rebekah-Cox/Design-Quora-Web2-0-Expo-Presentation" class="pinboard-link">Design @ Quora (Web2.0 Expo Presentat... by Rebekah Cox - Quora</a> <span class="pinboard-timestamp"><abbr title="2011/05/03 20:56:56">2011/05/03</abbr></span><br /><span class="pinboard-desc">"Great design is all the work you don't ask the people who use your products to do."</span></li><li class="pinboard-item"><a href="http://www.fastcompany.com/1746447/qa-with-david-kelley-of-ideo" class="pinboard-link">David Kelley on Designing Curious Employees | Fast Company</a> <span class="pinboard-timestamp"><abbr title="2011/04/20 12:25:02">2011/04/20</abbr></span><br /><span class="pinboard-desc">"In this interview, he explains why leaders should seek understanding rather than blind obedience, why it’s better to be a coach and a taskmaster and why you can’t teach leadership with a PowerPoint presentation."</span></li></ul></div><div class="block text-392392802 widget_text"><h3>yoz on twitter</h3>			<div class="textwidget"><div id="twitter_div">
<ul id="twitter_update_list"></ul>
<a href="http://twitter.com/yoz" id="twitter-link" style="display:block;text-align:right;">follow me on Twitter</a>
</div>
<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
<script type="text/javascript">
// remove @-replies
function yoztc3(d) {
    d2 = new Array();
    for (i=0;i<d.length;i++) {
        if (!d[i].in_reply_to_screen_name) {
            d2.push(d[i]);
        }
    }
    twitterCallback2(d2);
}
</script>
<script type="text/javascript" src="http://twitter.com/statuses/user_timeline/yoz.json?callback=yoztc3&amp;count=10"></script></div>
		</div><div class="block meta-2 widget_meta"><h3>Meta</h3>			<ul>
						<li><a href="http://cheerleader.yoz.com/wp-login.php">Log in</a></li>
			<li><a href="http://cheerleader.yoz.com/feed">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li>
			<li><a href="http://cheerleader.yoz.com/comments/feed">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li>
			<li><a href="https://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li>			</ul>
			</div>	</div>
	<div id="footer">	
	<p>Content licensed under the <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons</a> (Attribution - Share Alike) 
	| Theme based on <i>Clean Room</i> by <a href="http://midmodesign.com/">Columbia, MO Web Design</a>
	<p>