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

<channel>
	<title>Ragged Clown</title>
	<atom:link href="http://www.raggedclown.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.raggedclown.com</link>
	<description>It&#039;s just a shadow you&#039;re seeing that he&#039;s chasing...</description>
	<lastBuildDate>Tue, 15 May 2012 00:36:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Who else wants some?</title>
		<link>http://www.raggedclown.com/2012/05/13/who-else-wants-some/</link>
		<comments>http://www.raggedclown.com/2012/05/13/who-else-wants-some/#comments</comments>
		<pubDate>Sun, 13 May 2012 16:01:25 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[funny]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3157</guid>
		<description><![CDATA[Oglaf. The funniest comic on the interwebs (sometimes). It&#8217;s very naughty.]]></description>
			<content:encoded><![CDATA[<p><a title="Oglaf" href="http://oglaf.com/intermission2/">Oglaf</a>. The funniest comic on the interwebs (sometimes). It&#8217;s very naughty.</p>
<p style="text-align: center;"><a href="http://oglaf.com/intermission/2/"><img class="aligncenter  wp-image-3169" title="intermission2 by Oglaf" src="http://www.raggedclown.com/wp-content/uploads/2012/05/intermission2.jpg" alt="" width="608" height="477" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/05/13/who-else-wants-some/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What&#8217;s your trick, Python?</title>
		<link>http://www.raggedclown.com/2012/05/12/whats-your-trick-python/</link>
		<comments>http://www.raggedclown.com/2012/05/12/whats-your-trick-python/#comments</comments>
		<pubDate>Sun, 13 May 2012 01:28:34 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[favourite]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3100</guid>
		<description><![CDATA[The folks who wrote Pragmatic Programming recommend that you learn a new language frequently because, with each language, you&#8217;ll learn a new trick or a new way of thinking about programming that you never thought of before. When you go back &#8230; <a href="http://www.raggedclown.com/2012/05/12/whats-your-trick-python/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://pragprog.com/categories/all"><img class="size-full wp-image-3102 alignleft" title="Seven Languages in Seven Weeks" src="http://www.raggedclown.com/wp-content/uploads/2012/05/seven-languages.jpeg" alt="" width="120" height="144" /></a>The folks who wrote <em><a title="Pragmatic Programmers" href="http://pragprog.com/titles">Pragmatic Programming</a> </em>recommend that you learn a new language frequently because, with each language, you&#8217;ll learn a new trick or a new way of thinking about programming that you never thought of before. When you go back to your old language you&#8217;ll take your new trick with you. Last year, I learned Objective C.</p>
<p>There is a lot to hate about Objective C. When I first started learning it, I felt like I had been time-warped back to 1987 along with some aliens from the planet Zarg but, over the last year, the language has improved so dramatically and so many of the rough edges have been smoothed that I could almost recommend it.</p>
<p><img class="wp-image-3140 alignright" title="objective-c-logo" src="http://www.raggedclown.com/wp-content/uploads/2012/05/objective-c-logo.jpeg" alt="" width="170" height="152" />It&#8217;s still an ugly language, of course. The moments when you are confronted with bits of C in the middle of your Objective C method are like discovering that your ice cream topping is cod-liver oil.</p>
<p>It&#8217;s verbose too. The libraries feel like they were designed by colonial administrators in early-nineteenth century India. But, with automatic reference counting (ARC), it is no longer daunting to programmers who have forgotten how to alloc and dealloc.</p>
<p>Objective C has a couple of nice tricks though. My favourite is the fact that <strong>nil</strong> is an object and you can call its methods. In most languages, <em>this</em> would explode (or at least start a small fire):</p>
<blockquote>
<pre>collection = nil;
for (int i = 0; i &lt; collection.length; i++) {
  id item = [collection objectAt: i];
  [item doSomething];
}</pre>
</blockquote>
<p>but it&#8217;s perfectly natural in Objective C. You can happily call methods on <strong>nil</strong>, it will return <strong>nil</strong> or <span style="color: #000000;"><strong>0</strong> </span>so you can just get on with your work without dodging <span style="color: #000000;"><em>NullPointerExceptions </em>at every turn.</span></p>
<p>I like Objective C&#8217;s syntax for calling methods too, strange as it is. There is something heart-warming about the way that the method name wraps itself around the arguments so that in,</p>
<blockquote>
<pre>[object populate: collection
        fromFile: filename]</pre>
</blockquote>
<p>the method name is actually <strong>populate:fromFile:</strong>. It feels more comfortable than named arguments, in my humble opinion, and the way Xcode wraps the method call and aligns the colons makes it easy to read. If only the method names weren&#8217;t designed by colonial civil servants who mistook verbosity for clarity, it would be pleasant even. The names in the Cocoa libraries have that odd <em>do the needful</em> feel about them, like the authors learned grammar in a faraway country, probably one with steam trains, punkah wallahs and government forms in triplicate and it&#8217;s hard to love a language that doesn&#8217;t have a syntax for accessing array elements.</p>
<p><img class="size-thumbnail wp-image-3144 alignright" style="line-height: 24px; font-size: 16px;" title="ruby-logo" src="http://www.raggedclown.com/wp-content/uploads/2012/05/ruby-logo-150x150.jpg" alt="" width="150" height="150" /></p>
<p>Ruby is the biggest trickster of them all. My only complaint about that language is that sometimes &#8211; especially in Rails &#8211; the whole language feels like one big trick. Every time I come back to it, I am constantly saying &#8211; <em>&#8220;Wow! You can do that? That is awesome! Wait! How does that work again?&#8221;</em>.</p>
<p>Ruby taught me blocks:</p>
<blockquote>
<pre>collection.each { |item|  item.do_something }</pre>
</blockquote>
<p>&nbsp;</p>
<p>Sure, every language has blocks or lambdas these days, but there is just something very soothing about the simplicity of Ruby&#8217;s syntax that puts me at ease. In C#, I have to concentrate really hard to get the syntax right and, in Objective C, I don&#8217;t there is anyone in the world who remembers how to make a callback without looking it up online. I like to imagine that there was one primordial Objective C block written in a prototype at One Infinite Loop in 1994 and it has been copy-pasted ever since.</p>
<p>The trait I like most about Ruby is its humanity. If it seems like you can do something, you can. All these expressions work and do exactly what you might expect:</p>
<blockquote>
<pre>2.years.ago
3.times { print 'Ho! ' }
Date.today + 5.days</pre>
<pre>[1..100].each do |number|
  puts "#{number} is even." if number.even?
end</pre>
</blockquote>
<p>If only the Objective C folks would glance at the Ruby libraries and learn that terse does not have to be obscure and that verbosity is not intrinsically a good thing. Just ask the COBOL people.</p>
<p>A couple of years ago there was a <a title="Humane Methods" href="http://martinfowler.com/bliki/HumaneInterface.html">debate</a> online about the relative benefits of adding methods to objects to make a programmer&#8217;s life easier. The proposition was that such methods result in bloat which makes the API harder to learn but, really, how can you <a title="Java is better than Ruby" href="http://www.cafeaulait.org/oldnews/news2005December6.html">seriously argue</a> that this:</p>
<blockquote>
<pre>if( array.length &gt; 0 )
  element = array[array.length-1];</pre>
</blockquote>
<p>is more humane than this:</p>
<blockquote>
<pre>element = array.last</pre>
</blockquote>
<p>Meta-programming takes the Ruby language into the astroplane where the angels live and foolish mortals tread carefully. Here&#8217;s a builder for generating an xml file:</p>
<blockquote>
<pre>xml.slimmers do
  @slimmers.each do |slimmer|
    xml.slimmer do
      xml.name slimmer.first_name
    end
  end
end</pre>
</blockquote>
<p>And here&#8217;s the code for parsing some xml (OK, it&#8217;s not meta-programming but it is neat and tidy):</p>
<blockquote>
<pre>xml = File.read('posts.xml')
parser = XML::Parser.new
doc = parser.parse xml
doc.find('//posts/post').each do |post|
  puts post['title']
end</pre>
</blockquote>
<p>In Objective C, that would be over 7 million lines of code.</p>
<p><img class="size-thumbnail wp-image-3139 alignright" title="csharp-logo" src="http://www.raggedclown.com/wp-content/uploads/2012/05/csharp-logo-150x150.jpg" alt="" width="150" height="150" />C# learned all of Java&#8217;s tricks and smoothed away its rough edges. It added lots of little tricks of its own to make it at least 9% better than Java. But its big, new trick is LINQ.</p>
<p>LINQ is essentially a functional language rammed right in the middle of a curly-braced imperative language. Once you get the hang of it, it&#8217;s amazing. I never did get the hang of it though and wrote all of my LINQ by typing it out in longhand and then clicking the helpful green squigglies that cause Resharper to turn this:</p>
<pre>public IList&lt;Album&gt; FindAlbumsToGiveAway(IList&lt;Album&gt; albums)
{
  var badAlbums = new List&lt;Album&gt;();

  foreach (Album album in albums)
  {
    if (album.Genre == "Country")
    {
      badAlbums.Add(album);
    }
  }
  return badAlbums;
}</pre>
<p>into this:</p>
<pre>public IList&lt;Album&gt; FindAlbumsToGiveAway(IList&lt;Album&gt; albums)
{
  return albums.Where(album =&gt; album.Genre == "Country").ToList();
}</pre>
<p>or, more ambitiously, into:</p>
<pre>public IList&lt;Album&gt; FindAlbumsToGiveAway(IList&lt;Album&gt; albums)
{
  return from album in albums
         where album.Genre == "Country";
         select album
}</pre>
<p>if I was in a functional mood<em> (example stolen shamelessly from <a title="Alvin's Tips" href="http://www.alvinashcraft.com/2011/12/16/c-resharper-awesome-tip-3-convert-into-linq-expression/">Alvin Ashcraft</a>).</em></p>
<p>To achieve its lofty status of <em>9% better than Java, </em>C# has had to add about 83% more syntax and therein lies its downfall. There is no way that one person can fit all that syntax into their brain unless he dedicates a lifetime to learning it, and why would anyone do that when there are so many finer languages to learn?</p>
<p>Less syntax is more,<em> et cetera paribus</em>, and this:</p>
<pre>frequency = {}</pre>
<p>is nicer than this:</p>
<pre>Dictionary&lt;string, int&gt; frequency = new Dictionary&lt;string, int&gt;();</pre>
<p>which brings us to Python, the language where whitespace is syntax.</p>
<p><img class="size-thumbnail wp-image-3145 alignright" title="python-logo" src="http://www.raggedclown.com/wp-content/uploads/2012/05/python-logo-150x150.jpg" alt="" width="150" height="150" />At first blush, significant whitespace is Python&#8217;s big trick. There&#8217;s no need to add loop delimiters; just indent correctly &#8211; and you were going to do that anyway, right? &#8211; and Python will know what you mean. Once you get used to it, indenting loops is just so easy and obvious that you wonder a) why all the other languages didn&#8217;t copy it years ago and b) if Python has a better trick for me to learn.</p>
<p>Since Ruby, I am no longer impressed by parallel assignment,</p>
<blockquote>
<pre>a,b = 2,3</pre>
</blockquote>
<p>or generators,</p>
<blockquote>
<pre>def fib():
     a, b = 1, 1
     while True:
         yield a
         a, b = b, a + b 

sequence = fib() 

sequence.next()
&gt;&gt;&gt; 1 

sequence.next()
&gt;&gt;&gt; 1 

sequence.next()
&gt;&gt;&gt; 2</pre>
</blockquote>
<p>or default values for arguments,</p>
<blockquote>
<pre>def f(a, b=100):
  return a + b

f(2)
&gt;&gt;&gt; 102</pre>
</blockquote>
<p>or the <a title="Python isn't java etc" href="http://bitworking.org/news/Python_isnt_Java_without_the_compile">myriad other ways that Ruby and Python are more pleasant</a> to use than Java or C# <em>(OK. I am a still a little bit impressed by generators)</em>.</p>
<p>List comprehension is a nice <em>little</em> trick,</p>
<blockquote>
<pre>numbers = range(1..100)
squares = [x*x for x in numbers]</pre>
</blockquote>
<p>but it&#8217;s not dramatically better than Ruby&#8217;s collect method,</p>
<blockquote>
<pre>numbers = 1..100
squares =  numbers.collect { |x| x*x }</pre>
</blockquote>
<p>or C#&#8217;s,</p>
<blockquote>
<pre>var numbers = Enumerable.Range(4, 3);
var squares = numbers.Select(x =&gt; x * x);</pre>
</blockquote>
<p><em>(OK, it&#8217;s a lot better than C#&#8217;s)</em></p>
<p>In fact, Python is so similar to Ruby that I feel forced to compare based on æsthetic terms alone and, æsthetically Python loses big time. If Guido and Matz were cousins, Guido would be the awkward, bookish cousin who is perfectly happy typing <em>underbar underbar init underbar underbar open paren self close paren colon</em> instead of <em>initialize</em>. Python has a strong mark of the geek about it.</p>
<p>Python also throws a lot of exceptions and you can barely shake a stick without causing a ShakenStickException. I mean, honestly, what is exceptional about getting something from a hash without checking to see if it&#8217;s in the hash first? Even Java gets that right, for Gosling&#8217;s sake!</p>
<p>Python&#8217;s inclination to hurl exceptions at the slightest provocation has cured me of the last traces of a youthful folly that said you should write the happiest of happy paths inline and put the rarer cases in exception handlers. Exceptions are nasty things and shouldn&#8217;t be tossed around lightly and guard clauses are not much better. The PragProgs (again) have a <a title="Prag Prog Coding Kata" href="http://codekata.pragprog.com/2007/01/kata_twenty_one.html">coding kata that requires you to minimize the number of boundary conditions in the implementation of a linked list</a>. It&#8217;s a fine aspiration and finessing boundary conditions seems to result in less complexity and complexity is where the bugs hide.</p>
<p>The one Python feature that I haven&#8217;t seen anywhere else is the <em>tuple. </em>They are said to be magnificent and the distinction between</p>
<blockquote>
<pre>[1,2,3]</pre>
</blockquote>
<p>and</p>
<blockquote>
<pre>(1,2,3)</pre>
</blockquote>
<p>is allegedly profound but so far the significance escapes me. I&#8217;d be delighted if a commenter would help me understand or point me to some other feature that would make them choose Python over Ruby.</p>
<p>All this harsh buzz over Python might make you wonder why I would be foolish enough to decide to choose <a title="Ragged Clown" href="http://www.raggedclown.com/2012/05/11/how-to-choose-a-programming-language/">Python rather than Ruby at my new gig</a>. The answer is that there is a specific library, <strong>nltk</strong>, I needed to use.</p>
<p>The natural language toolkit does cool stuff like this:</p>
<pre>text = 'Mary had a little lamb. Its fleece was white as snow.'
sentences = nltk.sent_tokenize(text)
&gt;&gt;&gt; ['Mary had a little lamb.', 'Its fleece was white as snow.']</pre>
<p>which is harder than it looks. Once you have your sentences, you can find the words and, teleporting back to 6th grade language arts (assuming you grew up in America) or first year Latin (if you didn&#8217;t) you can analyse the parts of speech with:</p>
<pre>words = [nltk.word_tokenize(sentence) for sentence in sentences]
&gt;&gt;&gt; [
  ['Mary', 'had', 'a', 'little', 'lamb', '.'],
  ['Its', 'fleece', 'was', 'white', 'as', 'snow', '.']
]
parts_of_speech = nltk.pos_tag(words[0])
&gt;&gt;&gt; [('Mary', 'NNP'), ('had', 'VBD'),
    ('a', 'DT'), ('little', 'RB'), ('lamb', 'NN'), ('.', '.')]</pre>
<p>Hmmm. I think Mr Hickey would&#8217;ve gone with <em>adjective</em> rather than <em>adverb</em> for &#8216;little&#8217; there. So would I. Anyhoo&#8230;</p>
<p>Once you have your parts of speech, you can diagram the sentence automatically <em>(ssshhhh. Don&#8217;t tell your middle school kids):</em></p>
<p><a href="http://www.raggedclown.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-12-at-4.25.45-PM.png"><img class="aligncenter size-full wp-image-3124" title="Diagrammed Sentence" src="http://www.raggedclown.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-12-at-4.25.45-PM.png" alt="" width="334" height="112" /></a>That&#8217;s gotta be handy for something, right?</p>
<p>Now that we are stuck with Python, we get to wrestle with Django which is like Rails but brought to you by the same people that thought <em>def __init__(self):</em> was a good idea. I&#8217;m sure it&#8217;ll be great when it catches up with the state of the art but, <em>Dudes!</em> A separate language for templating!? I&#8217;m already learning a new language? You&#8217;re gonna make me learn another one for generating HTML? Didn&#8217;t you learn anything from JSP?</p>
<p>I think the folks who decided that separate languages for templates are descended from the folks who thought separate drinking fountains were a good idea. Is it really easier for designer folks to type</p>
<blockquote>
<pre>&lt;ul&gt;
{% for slimmer in slimmers %}
    &lt;li&gt;{{ slimmer.name|lower }}&lt;/li&gt;
{% endfor %}
&lt;/ul&gt;</pre>
</blockquote>
<p>than</p>
<blockquote>
<pre>&lt;ul&gt;
{% for slimmer in slimmers %}
    &lt;li&gt;{{ slimmer.name.lower() }}&lt;/li&gt;
{% endfor %}
&lt;/ul&gt;</pre>
</blockquote>
<p>Suddenly that <em>significant whitespace</em> business doesn&#8217;t seem so clever, does it? But, seriously, separate is rarely equal when it comes to template languages and the soft bigotry of low expectations hurts those it aims to help.</p>
<p>Template languages are the one area where the microsofties are ahead of the game with their Razor template syntax. It reduces the number of angle brackets and other unwanted syntax by 83%. Guaranteed!</p>
<blockquote>
<pre>&lt;ul&gt;
@foreach (var slimmer in slimmers)
{
   &lt;li&gt;@slimmer.name.ToLower();&lt;/li&gt;
}
&lt;/ul&gt;</pre>
</blockquote>
<p>How, you might wonder, if you know all these languages, are you supposed to keep all the various syntaxes straight? The plain answer is&#8230; you don&#8217;t. You immediately forget everything you knew about the previous language about two weeks after you stopped using it. That makes for embarrassing interviews when they ask you a Java question and, despite having 12 years of Java on your resume, you can&#8217;t remember how to construct and initialize a List, or is that a Vector? Or an ArrayList? One of them, anyway.</p>
<p>Fortunately for the forgetful among us, there is JetBrains. Even more fortunately, they have just released a brilliant Python IDE, <a title="PyCharm" href="http://www.jetbrains.com/pycharm/">PyCharm</a>, to go along with the also brilliant, <a title="RubyMine" href="http://www.jetbrains.com/ruby/">RubyMine</a> and <a title="IntelliJ" href="http://www.jetbrains.com/idea/">IntelliJ</a>. They also have the brilliant Resharper for the microsofties but you have to use it inside the not-quite-so-brilliant Visual Studio and they don&#8217;t get along entirely well together. They both enjoy a lot of memory consumption for a start.</p>
<p><a href="http://www.raggedclown.com/wp-content/uploads/2012/05/pycharm_logo142x29.gif"><img class="aligncenter size-full wp-image-3141" title="pycharm_logo142x29" src="http://www.raggedclown.com/wp-content/uploads/2012/05/pycharm_logo142x29.gif" alt="" width="142" height="29" /></a>PyCharm amazes me a little bit every day despite my 10 years of being amazed by JetBrains. The type inference system is, frankly, spooky. PyCharm knows the type of a variable that I merely whispered to a colleague the day before and knows all its methods and parameters, what it likes to have for lunch and its taste in science fiction. It handles renaming and more sophisticated refactorings even better than Resharper and it doesn&#8217;t even have .NET&#8217;s type system to help it along.</p>
<p>So. Python.</p>
<p>To summarize:</p>
<ul>
<li>It&#8217;s not quite Ruby.</li>
<li>It&#8217;s jolly excellent at text mining.</li>
<li>It&#8217;s a lot nicer than C# (except in html templates) or Java.</li>
<li>PyCharm. Oh yeah.</li>
</ul>
<p>I&#8217;m happy with our choice so far but ask me again when I get good enough to stop needing to refer to my <a title="Polyglot CheatSheet" href="http://hyperpolyglot.org/scripting">cheat sheet</a> every ten minutes. I might have a more informed opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/05/12/whats-your-trick-python/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Still dancing after all these years</title>
		<link>http://www.raggedclown.com/2012/05/12/still-dancing-after-all-these-years/</link>
		<comments>http://www.raggedclown.com/2012/05/12/still-dancing-after-all-these-years/#comments</comments>
		<pubDate>Sat, 12 May 2012 18:55:53 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Dylan]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3109</guid>
		<description><![CDATA[I&#8217;ll celebrate my thousandth post with a quote from the same song that I quoted in my first. Yes, to dance beneath the diamond sky With one hand waving free, Silhouetted by the sea, Circled by the circus sands, With &#8230; <a href="http://www.raggedclown.com/2012/05/12/still-dancing-after-all-these-years/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="background-image: url(/wp-content/uploads/2012/05/blurry-clown1.gif); background-repeat: no-repeat; background-position-x: 100px; padding-top: 200px; padding-right:200px;">
I&#8217;ll celebrate my thousandth post with a quote from the same song that I quoted in <a title="Ragged Clown - First Post" href="http://www.raggedclown.com/2006/05/01/ragged-clown-is-in-da-house/">my first</a>.</p>
<blockquote style="margin-left: 0"><p><em>Yes, to dance beneath the diamond sky<br />
With one hand waving free,<br />
Silhouetted by the sea,<br />
Circled by the circus sands,<br />
With all memory and fate<br />
Driven deep beneath the waves,<br />
Let me forget about today until tomorrow.</em></p>
<p>-Bob Dylan</p></blockquote>
</div>
<p><img src="http://www.raggedclown.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-12-at-12.41.40-PM.png" alt="" title="Wordpress Dashboard" width="640" height="314" class="aligncenter size-full wp-image-3118" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/05/12/still-dancing-after-all-these-years/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to choose a programming language</title>
		<link>http://www.raggedclown.com/2012/05/11/how-to-choose-a-programming-language/</link>
		<comments>http://www.raggedclown.com/2012/05/11/how-to-choose-a-programming-language/#comments</comments>
		<pubDate>Fri, 11 May 2012 15:01:20 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3097</guid>
		<description><![CDATA[Me: Do you know ruby or java? Other guy: No. Php and Javascript. Me: How about you? C#, maybe? Third guy: No. Just Perl. Me: Anyone know Python? All: No. Me: OK, me neither. Let&#8217;s do Python, then.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Me: Do you know ruby or java?</p>
<p>Other guy: No. Php and Javascript.</p>
<p>Me: How about you? C#, maybe?</p>
<p>Third guy: No. Just Perl.</p>
<p>Me: Anyone know Python?</p>
<p>All: No.</p>
<p>Me: OK, me neither. Let&#8217;s do Python, then.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/05/11/how-to-choose-a-programming-language/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>1984 Starts Here</title>
		<link>http://www.raggedclown.com/2012/04/27/1984-starts-here/</link>
		<comments>http://www.raggedclown.com/2012/04/27/1984-starts-here/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 14:04:38 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3093</guid>
		<description><![CDATA[Orwell&#8217;s Diaries have been serialized daily online for the last few years as though Orwell were a contemporary blogger. His diary started with Word War II and each entry is posted on the day it was written but time-shifted 70 years &#8230; <a href="http://www.raggedclown.com/2012/04/27/1984-starts-here/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Orwell's Diaries" href="http://orwelldiaries.wordpress.com/">Orwell&#8217;s Diaries have been serialized daily online</a> for the last few years as though Orwell were a contemporary blogger. His diary started with Word War II and each entry is posted on the day it was written but time-shifted 70 years into the future.</p>
<p>The early entries were fascinating for their fleeting glimpse into the every day lives of people during the war. Orwell talks more about the price of eggs and about how his petunias are faring than about the bombs falling on London but, as times passes, he begins to talk more and more about politics.</p>
<p><a title="Orwell's Diaries" href="http://orwelldiaries.wordpress.com/2012/04/27/27-4-42/">Today&#8217;s post (from April 27, 1942)</a> is about propaganda from Italy and I wonder if this was the moment when he decided to write 1984.</p>
<blockquote><p><em>[...Nowadays, whatever is said or done, one looks instantly for hidden motives and assumes that words mean anything except what they appear to mean.</em>]</p>
<p>From the Italian radio, describing life in London:</p>
<blockquote><p>“Five shillings were given for one egg yesterday, and one pound sterling for a kilogram of potatoes. Rice has disappeared, even from the Black Market, and peas have become the prerogative of millionaires. There is no sugar on the market, although small quantities are still to be found at prohibitive prices”.</p></blockquote>
<p>One would say that this is stupid propaganda, because if such conditions really existed England would stop fighting in a few weeks, and when this fails to happen the listener is bound to see that he has been deceived. But in fact there is no such reaction. You can go on and on telling lies, and the most palpable lies at that, and even if they are not actually believed, there is no strong revulsion either.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/04/27/1984-starts-here/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Try to watch just one&#8230;</title>
		<link>http://www.raggedclown.com/2012/04/26/try-to-watch-just-one/</link>
		<comments>http://www.raggedclown.com/2012/04/26/try-to-watch-just-one/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 06:27:21 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[maths]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3087</guid>
		<description><![CDATA[&#8230;and then watch the stars&#8230; and the triangles&#8230; and the one about zigfinity&#8230;.and&#8230;and&#8230;and&#8230; She&#8217;s the champion.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/heKK95DAKms" frameborder="0" width="420" height="315"></iframe></p>
<p>&#8230;and then watch the stars&#8230; and the triangles&#8230; and the one about zigfinity&#8230;.and&#8230;and&#8230;and&#8230;</p>
<p>She&#8217;s the champion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/04/26/try-to-watch-just-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Here we go out of the sleep of mild people, into the wild rippling water</title>
		<link>http://www.raggedclown.com/2012/04/22/here-we-go-out-of-the-sleep-of-mild-people-into-the-wild-rippling-water/</link>
		<comments>http://www.raggedclown.com/2012/04/22/here-we-go-out-of-the-sleep-of-mild-people-into-the-wild-rippling-water/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 05:04:05 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[dreams]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[portland]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3064</guid>
		<description><![CDATA[Four years ago, I drove up to Portland, Oregon to make a new life and I fell entirely in love with every detail of the city. I loved exploring Portland and I found something new each time I looked. I have &#8230; <a href="http://www.raggedclown.com/2012/04/22/here-we-go-out-of-the-sleep-of-mild-people-into-the-wild-rippling-water/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.raggedclown.com/wp-content/uploads/2012/04/300px-MadeinOregonsign.jpg"><img class="size-full wp-image-3069 alignleft" title="Made in Oregon" src="http://www.raggedclown.com/wp-content/uploads/2012/04/300px-MadeinOregonsign.jpg" alt="" width="300" height="230" /></a>Four years ago, I drove up to Portland, Oregon to make a new life and I fell entirely in love with every detail of the city. I loved exploring Portland and I found something new each time I looked.</p>
<p>I have a sense that the puritans never made it as far as Portland. In San Jose, the mayor is proud that they haven&#8217;t handed out a new liquor license in years. They just recycle the old ones. They make-believe it&#8217;s a virtue. In Portland, the mayor is named after a beer. In San Jose, bars are either dingy and shallow or new, shiny and shallow and when they die, they are replaced by another just the same. In Portland, bars spring up on every corner and reach for the sky as a tree in the rainforest reaches for the canopy and the sunlight beyond.  Undaunted by the diversity of what came before, new bars are excited and eager to become part of the diverse ecosystem where everyone feeds off everyone else&#8217;s success.</p>
<p>I loved the little details of the city. I loved finding the kind of place that has 27 beers on a blackboard, ranked by IBU and scribbled out as new beers are put on tap and old ones run dry. I loved that Portland has more strip clubs per resident than anywhere in the United States and I loved finding myself in the middle of a World <a href="http://bikeportland.org/2011/06/19/world-naked-bike-ride-how-was-it-for-you-55083"><img class="alignright size-medium wp-image-3070" title="World Naked Bike Ride" src="http://www.raggedclown.com/wp-content/uploads/2012/04/World_naked_bike_ride_8-400x293.jpg" alt="" width="400" height="293" /></a>Naked Bike Ride and seeing co-workers cycle by with a delighted wave. I loved going to the movies and being brought my dinner on a tray. I loved seeing the realtime display above the bar announcing who had just checked in on FourSquare and I loved that every new bar had three new beers that I had never previously tried.</p>
<p>My favourite bit of Portland was the New Old Lompoc on 23rd. It was the kind of crappy, divey, dingy bar that is always filled with real people and even when it wasn&#8217;t made you feel real. The Lompoc brewed their own beer and I began with the Condor because I had been warned that the hoppier IPAs would shrivel my labia. Condor gave me cramps in my calfs just like <a title="CSB" href="http://www.jimsbeerkit.co.uk/forum/viewtopic.php?f=5&amp;t=1006">Courage Sparkling Bitter</a> did all those years ago and like no other beer since. By the time I was done with Portland, I always looked for the hoppiest beer or the strongest beer on the blackboard, genitalia be damned. In Portland, I found barley wines and even, for the first time in 25 years, a prize old ale at <a title="Cheese Bar" href="http://www.cheese-bar.com/">Steve&#8217;s wonderful Cheese Shop</a> that took me back to that tiny pub in <a title="Gale's Prize Old Ale" href="http://www.beer-pages.com/stories/gales-prize-old-ale.htm">Horndean</a>.</p>
<p><a href="http://www.raggedclown.com/wp-content/uploads/2012/04/logo_325.png"><img class="alignleft size-medium wp-image-3071" title="logo_325" src="http://www.raggedclown.com/wp-content/uploads/2012/04/logo_325-300x300.png" alt="" width="300" height="300" /></a>On my first visit to the Lompoc, four long years ago, the waitress brought me my Portland Dip and a pint of <a title="Condor" href="http://www.flickr.com/photos/benmcleod/4924219227/">Condor</a> and smiled the brightest, widest smile I have ever seen outside of a Hollywood movie. Last Monday, the same waitress smiled the same bright smile as she delivered my labia-shrivelling <a title="Kick Axe" href="http://www.newoldlompoc.com/brewery_seasonals_summer_kick_axe_pale.html">Kick Axe</a> at my last farewell to Portland before I departed for my new life back in San Jose. The Lompoc is closing down next week to make way for some nice new condominiums. They tell me that it will reopen in a couple of years, but it won&#8217;t be the same. It feels oddly fitting that the Lompoc will close down just as my love affair with Portland ends and my new life begins.</p>
<p>This week, I started a new job with a brand new startup. The kind of startup where everyone looks at each other and decides whether we should use Python or Ruby or, perhaps, Perl because no one has really thought about trivial details like which technology to use yet. The kind of startup where the furniture is scavenged from a previous tenant and where, if you want to talk to the CEO, you swing your chair around and talk to him. WebMD wasn&#8217;t an especially big company but, in many ways, it felt like the biggest company I had ever worked for and by the end it felt very safe and comfortable. It&#8217;s time for something a little more dangerous and exciting.</p>
<p>The title quote, by the way, is stolen from the book I am reading.</p>
<blockquote><p>Here we go out of the sleep of mild people, into the wild rippling water.</p></blockquote>
<p><a href="http://www.raggedclown.com/wp-content/uploads/2012/04/deliverance-dickey-def-54325515.jpg"><img class="alignright size-medium wp-image-3072" title="Deliverance Book Cover" src="http://www.raggedclown.com/wp-content/uploads/2012/04/deliverance-dickey-def-54325515-185x300.jpg" alt="" width="185" height="300" /></a><br />
I have seen the movie, Deliverance, three or four times already but no one ever told me I should read the book too until now. The writing sears my senses.</p>
<p>In many ways it reminds me of <em>One Flew Over the Cuckoo&#8217;s Nest. </em> There too, I had seen the movie so many times that I could almost recite the lines but the quality of the writing in the book just took my breath away. I was totally unprepared for how it would move me. I remember reading a paragraph of Cuckoo&#8217;s Nest and putting the book down gasping for breath at the audacity of the words and then rereading the paragraph to check that it was as good a second time. It almost didn&#8217;t matter whether the plot was good. He could&#8217;ve been writing about turnip farming and I&#8217;d still read it with joy for every root vegetable and planting.</p>
<p>Deliverance has that same quality. The movie catches a little of the delight of creating a scene where nothing happens but the nothingness is burned into your consciousness as when the albino kid joins Drew in Duelling Banjos. Who has ever seen the movie and forgotten that scene? It has nothing to do with the plot. The plot almost does not matter and those scenes keep coming and coming.</p>
<p><iframe src="http://www.youtube.com/embed/Uzae_SqbmDE" frameborder="0" width="420" height="315"></iframe></p>
<p>I am just at the point in the book where they put their canoes in the river, a little afraid of what&#8217;s around the next bend. For now, they know nothing of squealing like a pig or of what they will have to do to survive as their adventure turns dangerous but they have a sense that something important is going to happen.</p>
<p>I like to think that even if they knew all the things that might happen downstream, they&#8217;d still get in those canoes and paddle down that river and enjoy the thrill of the whitewater along with the calm certainty of future success. Anyone who has ever joined a startup knows the feeling of pregnant possibility and the quickening as the ideas swell and kick the new company into life.</p>
<p>It feels great to dip my paddle in new waters and to bend my bow knowing that the shot I fire will change the world. The rednecks hardly scare me at all.</p>
<p><em>Photo Credit: <a title="Wikipedia" href="http://en.wikipedia.org/wiki/File:World_naked_bike_ride_8.jpg">Naked Bike Ride by Stefan</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/04/22/here-we-go-out-of-the-sleep-of-mild-people-into-the-wild-rippling-water/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thanks, AT&amp;T!</title>
		<link>http://www.raggedclown.com/2012/04/11/thanks-att/</link>
		<comments>http://www.raggedclown.com/2012/04/11/thanks-att/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 04:20:03 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3057</guid>
		<description><![CDATA[I&#8217;ve just spent 20 minutes searching the AT&#38;T web site for somewhere to register my disenchantment with their services. The AT&#38;T home page has a link to a contact us page which links to a message saying if you prefer to &#8230; <a href="http://www.raggedclown.com/2012/04/11/thanks-att/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just spent 20 minutes searching the AT&amp;T web site for somewhere to register my disenchantment with their services.</p>
<p>The AT&amp;T home page has a link to a <em><a title="AT&amp;T" href="http://www.att.com/gen/general?pid=5394#tab7">contact us</a></em> page which links to a message saying <em>if you prefer to email us click here</em>. Click that and you get a phone number and a link back to the original <em>contact us</em> page. Hmmm.. Maybe they don&#8217;t want me to email them. Maybe if I leave a message for AT&amp;T on the internet they&#8217;ll find it? Even if they don&#8217;t, it might make me feel a little better.</p>
<blockquote><p>Dear AT&amp;T,</p>
<p>I&#8217;ve just spent several hours (2? 3? 4? I lost count) talking to your representatives online in an effort to transfer my phone number from my company&#8217;s corporate account to a personal account with Verizon. It was an extremely frustrating experience.</p>
<p>The last gentleman that I spoke with assured me that all of my calls had been monitored and that you would have a record of all 8 or 10 people that tried to assist me. The most striking thing about the whole experience was how eager every one of your representatives was to hang up as quickly as possible or to give me a different number to call so that I would become someone else&#8217;s problem. Perhaps you could use the recordings of my calls for quality purposes.</p>
<p>Here&#8217;s my story. I&#8217;ll start at the beginning.</p>
<p>I ordered a new iPhone from Verizon&#8217;s website on Friday and requested that my number be transferred from AT&amp;T. My number is registered with a corporate account and I don&#8217;t know the account details so I left them blank. About 20 minutes later, a nice lady from Verizon called to confirm my order and to note that I hadn&#8217;t entered my account details. I told her I would get them from my company on Monday.</p>
<p>On Monday, I contacted our desktop services and the next day, they gave me a number to call at AT&amp;T. This is where my saga began to generate heat.</p>
<p>I called the AT&amp;T number. The nice gentleman at the other end explained that I wasn&#8217;t allowed to port my number from a business account but I could create a personal account, transfer the number to the personal account and then port the number from there. &#8220;Let&#8217;s do that!&#8221; I said.</p>
<p>The nice gentleman explained that I&#8217;d have to create a new contract with AT&amp;T (<em>don&#8217;t worry sir! you won&#8217;t be held to a long term contract</em>), that there was a transfer fee ($25?) and that I would have to assume financial number responsibility for the account. I&#8217;d be on the cheapest contract available which meant that they would charge me  30c for each text and some similarly crazy amount for each minute of calling. But, don&#8217;t worry sir! If the transfer goes through quickly, you won&#8217;t even be charged! He gave me the account details and I called Verizon right away.</p>
<p>I called Verizon to arrange the port, gave them the account details, and they said it would probably go through in an hour or so.</p>
<p>About 10 minutes later, my iPhone started vibrating furiously. It continued to vibrate for about 10 minutes heedless of all my button-mashing attempts to try to make it stop. At the end of 10 minutes, the buzzing stopped and my iPhone did a very fine impersonation of a brick. I assume it had been <em>remote-wiped</em> either by AT&amp;T or my employer to celebrate the successful porting of my number. Either that or it was an amazing coincidence. Would&#8217;ve been nice to have a chance to get my data off my phone before it was wiped but, oh well! New phone arrives tomorrow!</p>
<p>The next day, the nice man from FedEx delivered my new iPhone and I checked with Verizon to see if the port had completed. It had not. AT&amp;T had refused it.</p>
<p>I called AT&amp;T and (spoiler alert!) this was where my troubles truly began as I was shunted from office to office, assistant to assistant and put on hold endlessly. Each conversation carried an odd echo of the last. They all went something like this:</p>
<p>AT&amp;T: Hello? AT&amp;T how can we help you?</p>
<p>Me: I am trying to port my number.</p>
<p>AT&amp;T: What number?</p>
<p>Me: 408 555 1212</p>
<p>AT&amp;T: Certainly sir, let me just verify the account details. What&#8217;s the account number?</p>
<p>The conversation varied at this point as I tried different strategies to make progress.</p>
<p>Strategy 1: Explain that it was a business account and that I did not have the account details.</p>
<p>Strategy 2: Give them the temporary account details that the nice gentleman gave me the day before.</p>
<p>Strategy 3: Tell them the whole story and that my number was stuck in AT&amp;T limbo between a personal account and a corporate account.</p>
<p>I tried each strategy maybe 3 or 4 times each. Each time they listened patiently before transferring me onto another department that could assist me better. Eventually, a kind lady took pity and dug a little deeper. She explained that the port request from Verizon had caused the transfer of my number to a personal account to be put on hold. I would need to</p>
<ol>
<li>Call Verizon to cancel the port request.</li>
<li>Call AT&amp;T back to re-request the transfer to a personal account.</li>
<li>Call Verizon again to re-request the port request.</li>
</ol>
<p>We had a brief exchange about the likelihood of this plan succeeding (&#8220;you are kidding right??&#8221;) before the nice lady offered to transfer me directly to Verizon for step 1. <em>Go for it</em>, I sighed.</p>
<p>The nice man at Verizon dealt with my request immediately but the nice AT&amp;T lady was already gone. I called them back. This is the part where my story entered the surreal hinterland between purgatory and absurdity.</p>
<p>I re-entered that strange loop of trying to persuade someone &#8211; anyone! &#8211; at AT&amp;T that I should be allowed to transfer my number out to another carrier. At this point, I wondered whether AT&amp;T&#8217;s CRM system had any record of my previous gazillion calls and explanations and whether the operators had access to them. Strategies 1, 2 &amp; 3 all failed me this time around and I was finally forced to ask for a supervisor when the 6th or 7th operator flatly told me that there was nothing she could do if I didn&#8217;t even know my own account details.</p>
<p>The nice supervisor, Otto, was very patient and explained that port requests had to initiated by the receiving carrier and that there was nothing he could do. I told Otto my whole story and he took pity on me. Otto tried several different tactics to try to get me off the line before, eventually, he told me to just hang up, call Verizon back and give them the same account details that I had given before.</p>
<p>Me: And will that help?</p>
<p>Otto: Ah, not really, sir. You see, we are not allowed to release numbers associated with corporate accounts.</p>
<p>At this point, even Otto saw the absurdity of the situation and offered to transfer me to some other department and stay on the line while he assisted me. Uncountable minutes later, interrupted by several assurances that it wouldn&#8217;t be long now sir and I was connected to Marvin.</p>
<p>I imagined Marvin to be deep in some secret AT&amp;T organization with extra-high-powered access to their internal systems. Marvin was able to verify my identity, and my account details, and confirm my whole sorry tale and put it all straight in just a couple of minutes. Go Marvin!</p>
<p>Then Marvin explained that I would just have to recreate that temporary account and re-initiate the port request but he wouldn&#8217;t be able to help me with that. I&#8217;d need to call another number &#8211; the same number I had called a hundred times already today; the same number that got me to Marvin in the first place.</p>
<p>Otto was ahead of me.</p>
<p>Otto: Ah, Marvin, the customer needs you to create that account for him.</p>
<p>Marvin: I don&#8217;t have access to that system.</p>
<p>Otto: Ah, then you need to find him someone who does.</p>
<p>Marvin offered to transfer me directly to the other department but after five or ten minutes of silence punctuated by Otto occasionally asking &#8220;Has he forgotten us?&#8221; Marvin eventually came back and explained that their system was unable to transfer calls to the other department. Otto demanded to know why.</p>
<p>Marvin: I don&#8217;t know why but someone else here had the same problem just now.</p>
<p>Otto: What system are you using?</p>
<p>Marvin: I am not willing to explain which system we have.</p>
<p>Otto: I need to know what phone system you have.</p>
<p>This went backwards and forwards, round and round before eventually Otto asked to speak with Marvin&#8217;s supervisor. The supervisor explained that, as we had, by now, talked late into the night, that other office was now closed for the day.</p>
<p>Otto asked if I could call back the next day.</p>
<p>Me: I&#8217;m travelling on business tomorrow and&#8230;er&#8230; I don&#8217;t have a phone.</p>
<p>Otto: Perhaps we could call you then?</p>
<p>Me: Er&#8230; I don&#8217;t have a phone.</p>
<p>After a surprising number of goes around with this conversation, I finally admitted defeat. AT&amp;T had beaten me. I thanked Otto for his help and hung up.</p>
<p>On a whim, I tried calling Verizon. I explained my story to the nice man at the other end and wondered if there was any way I could get a temporary number. He said, &#8220;I have never had that request before but let&#8217;s see what we can do, shall we?&#8221;</p>
<p>The nice man called sales for me and, three minutes later, I had a new temporary number and everything was straightened out.</p>
<p>So, AT&amp;T, at this point I don&#8217;t really need you any more.</p>
<p>I really liked my old number. I had it for years and grew to like it but now it feels kind of dirty. Maybe, now that I have a working phone again, I&#8217;ll steel myself for another round of battle with your so-called customer service tomorrow&#8230; or maybe I&#8217;ll just stick with my new number.</p>
<p>Either way, I hope you won&#8217;t be charging me for the temporary account that never actually came into being or for the brief period of service where I had no actual service. If past performance is any predictor of the future, I will be entirely unable to verify myself sufficiently to cancel the service that I never actually had. I hope this undead account doesn&#8217;t arise from the hideous depths to haunt me in the future.</p>
<p>Anyway AT&amp;T I have a number of suggestions that I offer, gratis, to help you improve your customer service.</p>
<ol>
<li> Once a customer has verified himself to one rep, the next rep should have access to that same information. It annoys the customer to no end when Rep A verifies the customer and then transfers the customer to a Rep B who says there is nothing they can do without verification.</li>
<li>Try to encourage your service reps to help the customer rather than transfer them on to some other department.</li>
<li>Keep a history of the customer&#8217;s interactions so the customer does not have to explain it over and over.</li>
<li>Improve your process for porting numbers to other carriers. You are going to be needing it. A lot.</li>
</ol>
<p>So, AT&amp;T, depending on how much fortitude I have for recovering my lost phone number tomorrow, you may or may not be hearing from me again. I sincerely hope that that zombie account does not come back to haunt me.</p>
<p>Yours faithfully,</p>
<p>Ragged Clown</p></blockquote>
<p>To everyone else: I have a new (possibly temporary) phone number. Email me if you need it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/04/11/thanks-att/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Family Fun</title>
		<link>http://www.raggedclown.com/2012/04/07/family-fun/</link>
		<comments>http://www.raggedclown.com/2012/04/07/family-fun/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 05:19:07 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[education]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3055</guid>
		<description><![CDATA[Here&#8217;s a fun game to play with your american-speaking children. Write out these three words on three separate cards and hand the cards to one of your children to read. Merry Mary Marry Have child number one read out the &#8230; <a href="http://www.raggedclown.com/2012/04/07/family-fun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a fun game to play with your american-speaking children.</p>
<p>Write out these three words on three separate cards and hand the cards to one of your children to read.</p>
<blockquote><p>Merry</p>
<p>Mary</p>
<p>Marry</p></blockquote>
<p>Have child number one read out the cards and have child number two write down the words that they hear. Score 1 point for each word that they hear correctly.</p>
<p>Endless fun for the whole family!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/04/07/family-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Telling Stories with Technology</title>
		<link>http://www.raggedclown.com/2012/04/03/telling-stories-with-technology/</link>
		<comments>http://www.raggedclown.com/2012/04/03/telling-stories-with-technology/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 03:51:50 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Categories Suck]]></category>
		<category><![CDATA[Ted]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.raggedclown.com/?p=3051</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/TNAJx__VDvQ" frameborder="0" width="560" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.raggedclown.com/2012/04/03/telling-stories-with-technology/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

