<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Verbose Logging</title>
    <link>http://blog.darkhax.com/</link>
    <description>software development with some really amazing hair</description>
    <language>en-us</language>
    <managingEditor>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</managingEditor>
    <webMaster>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</webMaster>
    <lastBuildDate>Thu, 04 Mar 2010 15:00:00 +0000</lastBuildDate>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/VerboseLogging" /><feedburner:info uri="verboselogging" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.5/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item>
      <title>Make your own badge with jQuery and Jaml</title>
      <category>Programming</category>
      <pubDate>Thu, 04 Mar 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/7XM2UXMapTs/make-your-own-badge-with-jquery-and-jaml</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/03/04/make-your-own-badge-with-jquery-and-jaml</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; is pretty much the gold standard for Javascript goodness, at least in my opinion. I use it for everything, and you should too.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://github.com/edspencer/jaml"&gt;Jaml&lt;/a&gt; has only been around &lt;a href="http://github.com/edspencer/jaml/commit/6a67767d08ac78f1c07487ac60587bfd033fe50c"&gt;since October&lt;/a&gt; but it&amp;#8217;s already pretty damn awesome.&lt;/p&gt;
&lt;p&gt;Combining these two powers like peanut butter and jelly results in &lt;strong&gt;awesome&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Jaml&lt;/h2&gt;
&lt;p&gt;Jaml is a templating engine for Javascript based loosely on &lt;a href="http://haml-lang.com/"&gt;Haml&lt;/a&gt;. It lets you write code like this:&lt;/p&gt;
&lt;script src="http://gist.github.com/321408.js?file=jaml-example.js"&gt;&lt;/script&gt;&lt;p&gt;So you can call this:&lt;/p&gt;
&lt;pre&gt;Jaml.render('simple');&lt;/pre&gt;
&lt;p&gt;To output this:&lt;/p&gt;
&lt;script src="http://gist.github.com/321408.js?file=jaml-output.html"&gt;&lt;/script&gt;&lt;p&gt;You can also do fancier things, like setting class, id, and really any other property of an element.&lt;/p&gt;
&lt;p&gt;Anyway.&lt;/p&gt;
&lt;h2&gt;So you want a Github badge&lt;/h2&gt;
&lt;p&gt;Or any other badge for that matter. I have some Github repos and my latest shared items from Google Reader in the top panel area. I used to grab them from the server, and cache them in the database. This means they didn&amp;#8217;t get updated as often, and it was just another thing the server &lt;em&gt;had&lt;/em&gt; to do that the client &lt;em&gt;could&lt;/em&gt; do.&lt;/p&gt;
&lt;p&gt;So I made them into Javascript badges.&lt;/p&gt;
&lt;h2&gt;A &lt;span class="caps"&gt;URL&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;First you need a &lt;span class="caps"&gt;URL&lt;/span&gt;. Something that gets you the information you want. For Github it&amp;#8217;s something like this:&lt;/p&gt;
&lt;pre&gt;http://github.com/api/v1/json/darkhelmet&lt;/pre&gt;
&lt;p&gt;Where &lt;code&gt;darkhelmet&lt;/code&gt; is my username. You can see the output of this &lt;span class="caps"&gt;URL&lt;/span&gt; with &lt;a href="http://hurl.it/hurls/c12f737201668e7c9c188c3a8a372aea2a65240b/832e02bc6695720f6246d72de001796f46860d6a"&gt;Hurl&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;A Callback&lt;/h2&gt;
&lt;p&gt;The other thing you need is a callback function. The place you&amp;#8217;re getting &lt;span class="caps"&gt;JSON&lt;/span&gt; from has to support this, and the syntax might be different, but you pass the name of a callback function which the &lt;span class="caps"&gt;JSON&lt;/span&gt; gets wrapped in, so the script that&amp;#8217;s getting loaded is a function call, with the only param being the &lt;span class="caps"&gt;JSON&lt;/span&gt; with all your data. So now your &lt;span class="caps"&gt;URL&lt;/span&gt; looks like this:&lt;/p&gt;
&lt;pre&gt;http://github.com/api/v1/json/darkhelmet?callback=GithubBadge&lt;/pre&gt;
&lt;p&gt;And it&amp;#8217;ll come back looking like this:&lt;/p&gt;
&lt;pre&gt;GithubBadge({ ... });&lt;/pre&gt;
&lt;p&gt;So let&amp;#8217;s define the callback:&lt;/p&gt;
&lt;script src="http://gist.github.com/321408.js?file=GithubBadge.js"&gt;&lt;/script&gt;&lt;p&gt;Ignore some of that, but basically I take the &lt;span class="caps"&gt;JSON&lt;/span&gt;, select repositories that aren&amp;#8217;t forks and have a description, sort them randomly, and take 12 of them. The important part is:&lt;/p&gt;
&lt;pre&gt;$('#github-badge').html(Jaml.render('github-badge', badge));&lt;/pre&gt;
&lt;p&gt;This sets the &lt;span class="caps"&gt;HTML&lt;/span&gt; of the element with the id &lt;code&gt;github-badge&lt;/code&gt; to the output of Jaml rendering the &lt;code&gt;github-badge&lt;/code&gt; template with the badge object as the parameter.&lt;/p&gt;
&lt;p&gt;Now I define the templates:&lt;/p&gt;
&lt;script src="http://gist.github.com/321408.js?file=GithubBadgeTemplate.js"&gt;&lt;/script&gt;&lt;p&gt;I render a &lt;code&gt;div&lt;/code&gt; with a &lt;span class="caps"&gt;CSS&lt;/span&gt; class, which has a header, then an unordered list containing all the rendered repos, which consist of a link within a list item. Then I tack on a link to my profile page on Github.&lt;/p&gt;
&lt;p&gt;To make it all work, you use jQuery and do this:&lt;/p&gt;
&lt;pre&gt;$.getScript('http://github.com/api/v1/json/darkhelmet?callback=GithubBadge');&lt;/pre&gt;
&lt;p&gt;This loads the script as though you included a script tag in your page, except you do this in your body load stuff so it doesn&amp;#8217;t block the page load. It has to wait until the page is loaded anyway to it can be sure to find the element to insert the &lt;span class="caps"&gt;HTML&lt;/span&gt;. Don&amp;#8217;t forget to put in an element in your page with the proper id:&lt;/p&gt;
&lt;pre&gt;&amp;lt;div id='github-badge'&amp;gt;Loading repositories...&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;Boom. Github badge on your page. I do the same thing for the Google Reader badge. Now go forth and template!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7XM2UXMapTs:741_EScQbTU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7XM2UXMapTs:741_EScQbTU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=7XM2UXMapTs:741_EScQbTU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7XM2UXMapTs:741_EScQbTU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=7XM2UXMapTs:741_EScQbTU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7XM2UXMapTs:741_EScQbTU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7XM2UXMapTs:741_EScQbTU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7XM2UXMapTs:741_EScQbTU:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=7XM2UXMapTs:741_EScQbTU:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/7XM2UXMapTs" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/03/04/make-your-own-badge-with-jquery-and-jaml</feedburner:origLink></item>
    <item>
      <title>Why I use Google Mail</title>
      <category>Editorial</category>
      <pubDate>Thu, 25 Feb 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/OOEWKtFcL7s/why-i-use-google-mail</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/25/why-i-use-google-mail</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;I had a conversation with &lt;a href="http://gnuu.org/"&gt;Loren Segal&lt;/a&gt; a couple weeks ago about email. He made &lt;a href="http://twitter.com/lsegal/status/8949671443"&gt;a comment about Google Buzz&lt;/a&gt; mentioning that he has never used Gmail, and &lt;a href="http://www.bettween.com/darkhelmetlive/lsegal/conversation/5578608"&gt;our conversation&lt;/a&gt; ensued.&lt;/p&gt;
&lt;p&gt;My first email address was with Hotmail, as I&amp;#8217;m sure a lot of people&amp;#8217;s was. Then I moved to Gmail proper and was hooked. I wondered why anybody would use any other email system.&lt;/p&gt;
&lt;p&gt;I had a few university emails (ualberta, cs.ualberta, ece.ualberta), but I also started up an online life at my darkhelmetlive.com domain (the only thing I have there anymore is a goofy tumblog). I still use my darkhelmetlive.com email as my primary email to this day, but I wasn&amp;#8217;t always on Google Apps Mail.&lt;/p&gt;
&lt;p&gt;I used to run my own server from my home, as recommended on &lt;a href="http://news.ycombinator.com/item?id=1121269"&gt;Hacker News&lt;/a&gt;. It wasn&amp;#8217;t accessible from the outside world, and I tried to get a spam filter setup, but it was just too much of a pain. I had to constantly remember to train the spam filter, and my internet connection, while fast, would sometimes just cut out for up to a few hours at a time. I couldn&amp;#8217;t rely on this setup to receive email. Oh, and I couldn&amp;#8217;t find a decent web interface to use. I don&amp;#8217;t want to require a specific computer with some mail client to check my email (and like I said, it wasn&amp;#8217;t available outside my network).&lt;/p&gt;
&lt;p&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/02/gmail_medium.jpg" class="fright bleft bbottom" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;So then I discovered that I could get Google Apps for my domain for free, which meant email. Money in the bank. Some of this is personal preference, but &lt;strong&gt;this is why I use Google Mail:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;It has the best damn spam filter known to man.&lt;/strong&gt; When you process as much email as Google does, it gets scary good. When you get one random spam message in your inbox, just think about how many it correctly caught (remember this is over the whole Google Mail user base).&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It has a snappy and useful interface.&lt;/strong&gt; I can quickly read emails in their context, reply, save drafts, and do everything else I want to do with email. It&amp;#8217;s fast and functional.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It has mad amounts of storage.&lt;/strong&gt; I&amp;#8217;m sitting at 506MB out of 7426MB, and I&amp;#8217;m never going to run out of space.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It&amp;#8217;s backed up.&lt;/strong&gt; I trust Google to not lose my data. If I did it myself, I&amp;#8217;d have to back that up, have plans to restore if needed, and all that sysadmin stuff that I&amp;#8217;d rather not be doing.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It talks to everything.&lt;/strong&gt; You can turn on &lt;span class="caps"&gt;POP&lt;/span&gt; and &lt;span class="caps"&gt;IMAP&lt;/span&gt; and it just works, because Google knows how to setup their servers.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It&amp;#8217;s redundant.&lt;/strong&gt; When you setup email for your domain, you have to add about 7 &lt;a href="http://en.wikipedia.org/wiki/Mx_record"&gt;MX records&lt;/a&gt; so there&amp;#8217;s almost no way your email is getting lost.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It&amp;#8217;s redundant.&lt;/strong&gt; When you setup email for your domain, you have to add about 7 &lt;a href="http://en.wikipedia.org/wiki/Mx_record"&gt;MX records&lt;/a&gt; so there&amp;#8217;s almost no way your email is getting lost.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;It&amp;#8217;s got Google Search backing it.&lt;/strong&gt; I don&amp;#8217;t like to bookmark things, I just want to be able to find things again, and I can do that with Google&amp;#8217;s amazing search technology indexing my email.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All in all, I don&amp;#8217;t have to worry about my email. Google Mail solves all the problems. Everything is managed by their sysadmins who know what they&amp;#8217;re doing. I just sit back and hit &lt;em&gt;Archive&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Alternatives&lt;/h2&gt;
&lt;p&gt;Oh sure there are other things I could do.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Hotmail.&lt;/strong&gt; I really don&amp;#8217;t like the interface, and I want it for my domain, not a hotmail.com address.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Yahoo.&lt;/strong&gt; See #1.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Host my own. Again.&lt;/strong&gt; Internet still likes to cut out randomly, and I don&amp;#8217;t like being a sysadmin. I&amp;#8217;d have to pay for a server to get the reliability, and I&amp;#8217;d rather not.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Any other email provider, I don&amp;#8217;t know if I would trust them more than Google, honestly.&lt;/p&gt;
&lt;p&gt;I use Google Mail because it&amp;#8217;s better. It&amp;#8217;s better than everything else. Why do you use Google Mail? Why don&amp;#8217;t you?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=OOEWKtFcL7s:RzphPmASo3A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=OOEWKtFcL7s:RzphPmASo3A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=OOEWKtFcL7s:RzphPmASo3A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=OOEWKtFcL7s:RzphPmASo3A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=OOEWKtFcL7s:RzphPmASo3A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=OOEWKtFcL7s:RzphPmASo3A:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=OOEWKtFcL7s:RzphPmASo3A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=OOEWKtFcL7s:RzphPmASo3A:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=OOEWKtFcL7s:RzphPmASo3A:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/OOEWKtFcL7s" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/25/why-i-use-google-mail</feedburner:origLink></item>
    <item>
      <title>sinatra-bundles plays nice with eval</title>
      <category>Programming</category>
      <pubDate>Mon, 22 Feb 2010 00:08:41 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/YQan6CdmjOg/sinatra-bundles-plays-nice-with-eval</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/21/sinatra-bundles-plays-nice-with-eval</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;I recently added a Javascript file to my bundle with &lt;a href="http://github.com/darkhelmet/sinatra-bundles"&gt;sinatra-bundles&lt;/a&gt; that uses Javascript&amp;#8217;s &lt;code&gt;eval&lt;/code&gt; functionality. The call to &lt;code&gt;eval&lt;/code&gt; executed code that referenced a method parameter. sinatra-bundles compresses Javascript files, and as part of that, shrinks variable names.&lt;/p&gt;
&lt;p&gt;Normally this isn&amp;#8217;t a problem, but in &lt;em&gt;this&lt;/em&gt; case of &lt;code&gt;eval&lt;/code&gt;, it became a problem, since it was trying to reference a local variable that no longer existed (because it got shrunk to something like &lt;code&gt;a&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://github.com/darkhelmet/sinatra-bundles/commit/febdfbbdcddba331c04b353bb857a40283f20814"&gt;this&lt;/a&gt; commit, I rearranged a bunch of stuff, upgraded some stuff, but I also fixed this. It&amp;#8217;s straight forward, and only shrinks variables if the Javascript doesn&amp;#8217;t include the string &lt;code&gt;eval(&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you need this functionality, use the new version 0.1.3, which can be found on &lt;a href="http://rubygems.org/gems/sinatra-bundles"&gt;rubygems.org&lt;/a&gt;. Install with&lt;/p&gt;
&lt;pre&gt;$ gem install sinatra-bundles&lt;/pre&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=YQan6CdmjOg:mjBxP3VA1Ww:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=YQan6CdmjOg:mjBxP3VA1Ww:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=YQan6CdmjOg:mjBxP3VA1Ww:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=YQan6CdmjOg:mjBxP3VA1Ww:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=YQan6CdmjOg:mjBxP3VA1Ww:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=YQan6CdmjOg:mjBxP3VA1Ww:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=YQan6CdmjOg:mjBxP3VA1Ww:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=YQan6CdmjOg:mjBxP3VA1Ww:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=YQan6CdmjOg:mjBxP3VA1Ww:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/YQan6CdmjOg" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/21/sinatra-bundles-plays-nice-with-eval</feedburner:origLink></item>
    <item>
      <title>Hijack AJAX requests like a terrorist</title>
      <category>Programming</category>
      <pubDate>Sun, 21 Feb 2010 01:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/bknJG2TOcxE/hijack-ajax-requests-like-a-terrorist</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/20/hijack-ajax-requests-like-a-terrorist</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;&lt;span class="caps"&gt;AJAX&lt;/span&gt; requests are a grand thing. They let you request things from your server without refreshing the page. Now, if you are trying to proxy a page, you can rewrite all the links in the page to point back through your proxy, but &lt;span class="caps"&gt;AJAX&lt;/span&gt; requests are another thing.&lt;/p&gt;
&lt;h5&gt;Oh wait no they&amp;#8217;re not!&lt;/h5&gt;
&lt;p&gt;You can&amp;#8217;t rewrite them when you proxy the page (by proxy, I mean you request my page with a &lt;span class="caps"&gt;URL&lt;/span&gt; param to another page, and I pull in that page, do some stuff, and serve it to you), but you still want the &lt;span class="caps"&gt;AJAX&lt;/span&gt; to go through your proxy, since otherwise it won&amp;#8217;t work.&lt;/p&gt;
&lt;p&gt;Luckily there&amp;#8217;s a solution!&lt;/p&gt;
&lt;p&gt;No matter what framework you use, &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;, &lt;a href="http://prototypejs.org/"&gt;Prototype&lt;/a&gt;, whatever, they all go through the &lt;a href="http://en.wikipedia.org/wiki/XMLHttpRequest"&gt;XMLHttpRequest&lt;/a&gt; interface. That is unless you are rockin&amp;#8217; IE6, in which case they use an &lt;code&gt;ActiveXObject&lt;/code&gt;. I don&amp;#8217;t deal with that, although I&amp;#8217;m sure you can do something similar with it.&lt;/p&gt;
&lt;p&gt;Anyway.&lt;/p&gt;
&lt;p&gt;So you have this &lt;code&gt;XMLHttpRequest&lt;/code&gt; thing, and as an example, in the jQuery code they do this:&lt;/p&gt;
&lt;pre&gt;new window.XMLHttpRequest();&lt;/pre&gt;
&lt;p&gt;See that &lt;code&gt;new&lt;/code&gt; in there? They are creating a new &lt;em&gt;object&lt;/em&gt; (for varying definitions of &lt;em&gt;object&lt;/em&gt;). But whatever, this mean we can use the magic of &lt;strong&gt;prototype&lt;/strong&gt;. There&amp;#8217;s &lt;a href="http://www.howtocreate.co.uk/tutorials/javascript/objects"&gt;a bunch&lt;/a&gt; &lt;a href="http://www.packtpub.com/article/using-prototype-property-in-javascript"&gt;of stuff&lt;/a&gt; &lt;a href="http://stackoverflow.com/questions/572897/how-does-javascript-prototype-work"&gt;out there&lt;/a&gt; on prototype, so I won&amp;#8217;t cover it, but let&amp;#8217;s get some code.&lt;/p&gt;
&lt;script src="http://gist.github.com/309973.js?file=ajaxIntercept.js"&gt;&lt;/script&gt;&lt;p&gt;And it works like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/02/intercept-ajax.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/02/intercept-ajax_medium.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So check this out. First, we define an anonymous function that we call immediately:&lt;/p&gt;
&lt;pre&gt;(function() {
})();&lt;/pre&gt;
&lt;p&gt;The reason we need to do this is so that we can have a reference to the original &lt;code&gt;open&lt;/code&gt; method without having to have other weird things kicking around just for that. So we call the method with the original &lt;code&gt;open&lt;/code&gt; method as the only parameter:&lt;/p&gt;
&lt;pre&gt;(function(open) {
})(XMLHttpRequest.open);&lt;/pre&gt;
&lt;p&gt;Then with the prototype method, we redefine the &lt;code&gt;code&lt;/code&gt; method on all XMLHttpRequest objects:&lt;/p&gt;
&lt;pre&gt;XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { ... }&lt;/pre&gt;
&lt;p&gt;While keeping the original method around so we can intercept calls to it.&lt;/p&gt;
&lt;pre&gt;// Do some magic
open.call(...);&lt;/pre&gt;
&lt;p&gt;Put it all together and you get the &lt;span class="caps"&gt;AJAX&lt;/span&gt; interception code.&lt;/p&gt;
&lt;script src="http://gist.github.com/309973.js?file=ajaxIntercept.js"&gt;&lt;/script&gt;&lt;p&gt;Simply replace the &lt;code&gt;// Do some magic&lt;/code&gt; comment with your code to rewrite the &lt;span class="caps"&gt;URL&lt;/span&gt;, or do whatever with the request. Now when you proxy the request, just prepend a script tag to the &lt;code&gt;head&lt;/code&gt; element (make it the first element inside the &lt;code&gt;head&lt;/code&gt; tag) so it gets loaded before any other of the scripts on the page.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=bknJG2TOcxE:wEvAPA6BK90:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=bknJG2TOcxE:wEvAPA6BK90:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=bknJG2TOcxE:wEvAPA6BK90:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=bknJG2TOcxE:wEvAPA6BK90:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=bknJG2TOcxE:wEvAPA6BK90:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=bknJG2TOcxE:wEvAPA6BK90:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=bknJG2TOcxE:wEvAPA6BK90:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=bknJG2TOcxE:wEvAPA6BK90:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=bknJG2TOcxE:wEvAPA6BK90:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/bknJG2TOcxE" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/20/hijack-ajax-requests-like-a-terrorist</feedburner:origLink></item>
    <item>
      <title>My Watch List, Into 2010</title>
      <category>Software</category>
      <pubDate>Sun, 14 Feb 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/7x29elLkFD4/my-watch-list-into-2010</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/14/my-watch-list-into-2010</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;Lots of interesting things are afoot, and I try to keep track of them. Here&amp;#8217;s what I&amp;#8217;m watching.&lt;/p&gt;
&lt;h2&gt;Rails 3&lt;/h2&gt;
&lt;p&gt;Lots of new changes are coming with Rails 3, and it&amp;#8217;s pretty exciting. I wrote about some of the cool ones &lt;a href="http://blog.darkhax.com/2010/02/06/rails-3-release-notes-what-does-it-mean-to-you"&gt;here&lt;/a&gt;. Rails is shaping up to be faster, more modular, and generally better and easier to work with. With all the smart people working on it, you don&amp;#8217;t have to look very hard to realize this is going to be a big release, and is only going to pull in more developers to this already great framework.&lt;/p&gt;
&lt;h2&gt;Sinatra 1.0&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://github.com/bmizerany"&gt;Blake Mizerany&lt;/a&gt; made the &lt;a href="http://github.com/sinatra/sinatra/commit/72be291da2bf7a5e2dacf8b9119a258d8db53c43"&gt;first commit&lt;/a&gt; to Sinatra in September of 2007, and since then it&amp;#8217;s picked up a lot of steam. It quickly became one of, if not the most popular micro-framework, even sticking its nose into the Rails world with Metal routers:&lt;/p&gt;
&lt;div style="width:425px;text-align:left" id="__ss_1395901"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/adamwiggins/rails-metal-rack-and-sinatra" title="Rails Metal, Rack, and Sinatra"&gt;Rails Metal, Rack, and Sinatra&lt;/a&gt;&lt;div id='rails-metal-slideshare' class='swfembed' movie='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rackrailsmetal-090506135028-phpapp02&amp;stripped_title=rails-metal-rack-and-sinatra' mheight='355' mwidth='425'&gt;This is a slideshare thing&amp;#8230;visit this post in your browser to view it. Don&amp;#8217;t forget to turn on Javascript!&lt;/div&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/adamwiggins"&gt;Adam Wiggins&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I personally love Sinatra. It&amp;#8217;s small, allows you make fast, simple (and even more complex) web applications, with minimal hassle. This blog runs on Sinatra, for example. Sinatra 1.0 will break some things, and hence &lt;strong&gt;won&amp;#8217;t&lt;/strong&gt; be backwards compatible, but it cleans up the code and tightens up the &lt;span class="caps"&gt;API&lt;/span&gt; a bit, making it the best lean mean web application micro-framework machine.&lt;/p&gt;
&lt;h2&gt;iPad&lt;/h2&gt;
&lt;p&gt;I wrote about &lt;a href="http://blog.darkhax.com/2010/02/01/why-i-won-t-be-buying-an-ipad-yet" title="yet"&gt;why I won&amp;#8217;t be buying an iPad&lt;/a&gt; already, but that doesn&amp;#8217;t mean I don&amp;#8217;t care. It&amp;#8217;s a good looking device, HTML5 videos &lt;a href="http://twitter.com/peterc/status/8928582766"&gt;play in the browser&lt;/a&gt; and it will allow me to sit comfortably in bed and do almost nothing, pushing the time I get out of bed on a Saturday further into the afternoon.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m still excited about this device, but the big kicker for me is I really want it to have a camera. I&amp;#8217;ll wait for the 2nd generation.&lt;/p&gt;
&lt;h2&gt;Ruby VM&amp;#8217;s&lt;/h2&gt;
&lt;p&gt;For production ruby apps, there are really only a few VM options for stable results. There&amp;#8217;s the tried and true &lt;span class="caps"&gt;MRI&lt;/span&gt;, with versions 1.8.6, 1.8.7, and 1.9.1. You&amp;#8217;ve got &lt;a href="http://www.rubyenterpriseedition.com/" title="REE"&gt;Ruby Enterprise Edition&lt;/a&gt;, which is based on 1.8.7, giving you some performance and memory boosts, but seems to leave out some things, &lt;a href="http://twitter.com/lsegal/status/7293701988"&gt;continuations being one of them&lt;/a&gt;. JRuby is also an accepted stable VM and allows developers to run ruby applications (like Rails!) on the &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;. Those are all fine and dandy, but there are other VM&amp;#8217;s on the way out the door that are shaping up to be, well, awesome.&lt;/p&gt;
&lt;h3&gt;MagLev&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://maglev.gemstone.com/"&gt;MagLev&lt;/a&gt; is coming from the depths of Smalltalk and as such the VM is built on years of Smalltalk VM experience. It also has an object persistence system so that multiple ruby application can access shared resources with the need of a separate database. It looks pretty slick, and I&amp;#8217;m excited about it.&lt;/p&gt;
&lt;div id='maglev-video' class='swfembed' movie='http://vimeo.com/moogaloop.swf?clip_id=1147409&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1' mheight='302' mwidth='400'&gt;You need to view this on my blog to see the video.&lt;/div&gt;&lt;p&gt;&lt;a href="http://vimeo.com/1147409"&gt;MagLev presentation at RailsConf 2008&lt;/a&gt; from &lt;a href="http://vimeo.com/montywilliams"&gt;Monty Williams&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Rubinius&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://rubini.us/"&gt;Rubinius&lt;/a&gt; is written in C++ and leverages the &lt;a href="http://llvm.org/"&gt;&lt;span class="caps"&gt;LLVM&lt;/span&gt;&lt;/a&gt; infrastructure to do all the hard work. It&amp;#8217;s almost at 1.0 status at the time of writing (there&amp;#8217;s a 1.0.0-rc2 out), and is pretty fast. It&amp;#8217;s gaining quite a following and once it hits 1.0 it will be a solid contender, possibly pushing out &lt;span class="caps"&gt;REE&lt;/span&gt; as &amp;#8216;the other ruby VM&amp;#8217;.&lt;/p&gt;
&lt;div style="width:425px;text-align:left" id="__ss_2578151"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/evanphx/rubyconf-2009" title="RubyConf 2009"&gt;RubyConf 2009&lt;/a&gt;&lt;div id='rubinius-slideshare' class='swfembed' movie='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rubyconf09-091124172907-phpapp01&amp;stripped_title=rubyconf-2009' mheight='355' mwidth='425'&gt;View this on my blog to get the slides.&lt;/div&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/evanphx"&gt;evanphx&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;h3&gt;IronRuby&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://ironruby.net/"&gt;IronRuby&lt;/a&gt;, along with all the other &amp;#8216;Iron&amp;#8217; languages (python, scheme, etc), is an implementation that runs on the .&lt;span class="caps"&gt;NET&lt;/span&gt; framework. This is just cool, because it brings the awesome that is ruby to the Windows world in ways that JRuby and regular ruby for Windows just don&amp;#8217;t. There&amp;#8217;s even a gem to allow other .&lt;span class="caps"&gt;NET&lt;/span&gt; languages &lt;a href="http://github.com/rvernagus/IronRubyInline"&gt;to be used inline&lt;/a&gt;. It&amp;#8217;ll never take over as a dominant VM, but it bridges the gap between ruby and the .&lt;span class="caps"&gt;NET&lt;/span&gt; world, allowing developers to use the best language to solve a problem, even if the problem requires different languages. IronRuby also allows ruby to be used in other .&lt;span class="caps"&gt;NET&lt;/span&gt; application, so you could write a C# app, and throw some ruby in. Sweet!&lt;/p&gt;
&lt;div style="width:425px;text-align:left" id="__ss_1736234"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/BenHalluk/ironruby" title="IronRuby"&gt;IronRuby&lt;/a&gt;&lt;div id='ironruby-video' class='swfembed' movie='http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-090717154337-phpapp02&amp;stripped_title=ironruby' mheight='355' mwidth='425'&gt;Want the video? Check this out on my blog and make sure Javascript is on.&lt;/div&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/BenHalluk"&gt;BenHalluk&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;h3&gt;MacRuby&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.macruby.org/"&gt;MacRuby&lt;/a&gt; is for those running OS X Snow Leopard only, but it has its perks. It&amp;#8217;s built on technologies in the operating system, so you get the garbage collection system, &lt;a href="http://www.macruby.org/documentation/gcd.html"&gt;Grand Central Dispatch support&lt;/a&gt;, and HotCocoa support, so you can write &amp;#8216;native&amp;#8217; Mac applications. You even get access to other objective-c frameworks, all for free.&lt;/p&gt;
&lt;h2&gt;Go Programming Language&lt;/h2&gt;
&lt;p&gt;Google&amp;#8217;s new &lt;a href="http://golang.org/"&gt;Go Programming Language&lt;/a&gt; is pretty awesome. I haven&amp;#8217;t really got to play with it much, but the homepage informs you of the awesomeness: it&amp;#8217;s fast (to run and compile), safe, concurrent, and open source. It&amp;#8217;s billed as a systems programming language, meant for the same type of thing you&amp;#8217;d use C for. There&amp;#8217;s lots of development happening with it, so it&amp;#8217;s moving fast. I am definitely going to leverage this language where appropriate.&lt;/p&gt;
&lt;div id='google-go-video' class='swfembed' movie='http://www.youtube.com/v/rKnDgT73v8s&amp;hl=en_US&amp;fs=1&amp;hd=1' mheight='505' mwidth='853'&gt;Witty comment about needing to view this on my blog with Javascript goes here&amp;#8230;&lt;/div&gt;
&lt;p&gt;&lt;span class="caps"&gt;OMG&lt;/span&gt; Rob Pike! *squeeee*&lt;/p&gt;
&lt;h2&gt;HipHop&lt;/h2&gt;
&lt;p&gt;While I try to avoid &lt;span class="caps"&gt;PHP&lt;/span&gt; whenever possible, new compiler technology is always cool. I&amp;#8217;d like to try to compile Wordpress with HipHop and see what happens.&lt;/p&gt;
&lt;h2&gt;HTML5&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/html5/"&gt;HTML5&lt;/a&gt; is shaping up to be a pretty good looking standard, at least on paper. I&amp;#8217;ve dealt with a little bit of the new media tags (video and audio), and while I&amp;#8217;m excited, they have to progress a bit more. The bonuses are that you don&amp;#8217;t need flash, so while videos don&amp;#8217;t play in Mobile Safari on the iPhone, they will open up directly in the video player. According to &lt;a href="http://twitter.com/peterc"&gt;@peterc&lt;/a&gt;, they do &lt;a href="http://twitter.com/peterc/status/8928582766"&gt;play directly in the browser on the iPad&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The downside (and why it needs to progress) is that with flash, you do it once (although still with two different tags, embed and object), while with the video tag, you need two separate videos: one for Firefox, and one for Safari (Chrome will play either, apparently). Oh, and it doesn&amp;#8217;t work in Internet Explorer either, so there&amp;#8217;s that too.&lt;/p&gt;
&lt;p&gt;HTML5 should end up pretty good, but it needs to mature, so I&amp;#8217;ll be watching it.&lt;/p&gt;
&lt;h2&gt;CSS3&lt;/h2&gt;
&lt;p&gt;HTML5 is cool, but I&amp;#8217;m more excited about CSS3. There are some CSS3 things powering this blog, like the rounded corners, but it&amp;#8217;s still not quite CSS3. There is a &lt;strong&gt;-moz-border-radius&lt;/strong&gt; property, a &lt;strong&gt;-webkit-border-radius&lt;/strong&gt;, and finally a CSS3 &lt;strong&gt;border-radius&lt;/strong&gt;. This is because CSS3 isn&amp;#8217;t finalized yet, and some of the selectors don&amp;#8217;t work in all browsers, so they have their own little selector to make it work. It&amp;#8217;s like IE Filters but not quite as bad, because at least they are based on things that will become standards. CSS3 should allow you to make some fancy looking things, much easier than before, and I&amp;#8217;m excited.&lt;/p&gt;
&lt;h2&gt;Heroku&lt;/h2&gt;
&lt;p&gt;I &amp;#9829; Heroku. This blog runs on it, as well as a few other of my applications. I love it, and it&amp;#8217;s only getting better. I&amp;#8217;m in the beta program, so I get to see fancy things before they go completely live, and I can&amp;#8217;t really talk about much of it here, except that there are some nice improvements coming. Frankly, unless your application has really specific needs, I can&amp;#8217;t see much of a reason to use any other hosting provider if you are using rocking a ruby rack based application.&lt;/p&gt;
&lt;p&gt;Well that&amp;#8217;s it. That&amp;#8217;s some of the stuff I&amp;#8217;m looking forward to. There are other things on my list, but I either can&amp;#8217;t think of all of them, or they aren&amp;#8217;t worth writing about right now.&lt;/p&gt;
&lt;p&gt;What are you excited about?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7x29elLkFD4:pli1HPbCViM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7x29elLkFD4:pli1HPbCViM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=7x29elLkFD4:pli1HPbCViM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7x29elLkFD4:pli1HPbCViM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=7x29elLkFD4:pli1HPbCViM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7x29elLkFD4:pli1HPbCViM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7x29elLkFD4:pli1HPbCViM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=7x29elLkFD4:pli1HPbCViM:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=7x29elLkFD4:pli1HPbCViM:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/7x29elLkFD4" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/14/my-watch-list-into-2010</feedburner:origLink></item>
    <item>
      <title>Mac OS X Server is just awful</title>
      <category>Editorial</category>
      <pubDate>Wed, 10 Feb 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/GdE-ahQZDHk/mac-os-x-server-is-just-awful</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/10/mac-os-x-server-is-just-awful</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;I am in the unfortunate position where I have to use Mac OS X Server on a regular basis. Hey, at least it&amp;#8217;s not &lt;a href="http://stackoverflow.com/questions/238177/worst-ui-youve-ever-used/238191#238191"&gt;Lotus Notes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since it fills me with so much rage, let&amp;#8217;s just get right into it.&lt;/p&gt;
&lt;h2&gt;Everything is shiny except mail&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/02/mail.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/02/mail_medium.png" class="fright bbottom bleft" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When you first hit the login page, it looks good. The blogs and wikis look good. The calendar looks good. The mail interface is, comparatively, bloody terrible. They wrote their own stuff for everything except mail, where they just slapped on Squirrel mail. Really? It reminds me of this quote from the movie &lt;em&gt;Hotshots!&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Many of you are wondering what&amp;#8217;s wrong with my pants, well they started running short on materials right before they got to the knees so don&amp;#8217;t give me any shit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;#8217;s like they just ran out of time and said &amp;#8220;Fuck it! Just use Squirrel mail!&amp;#8221;&lt;/p&gt;
&lt;p&gt;For me this isn&amp;#8217;t a big deal since I can feed stuff through the Gmail interface anyway, but &lt;em&gt;at least&lt;/em&gt; I can do that.&lt;/p&gt;
&lt;h2&gt;iCal blocks the UI when doing simple things&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/02/saving-event.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/02/saving-event_thumb.png" class="fright bbottom bleft" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/02/stupid-calendar-ajax.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/02/stupid-calendar-ajax_thumb.png" class="fright bbottom bleft" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pretty much everything you do while viewing a calendar that results in a post back to the server blocks the UI. Oh it&amp;#8217;s &lt;span class="caps"&gt;AJAX&lt;/span&gt;; it doesn&amp;#8217;t do a full post and have to render the page again. It just blocks your screen. A spinner comes up, the screen does that lightbox thing, and fucking blocks. Have 5 meeting invites you have to accept? Have fun clicking accept, waiting 5 seconds for the server to respond, then clicking accept on the next one, waiting 5 seconds, and so on. &lt;span class="caps"&gt;AJAX&lt;/span&gt; my ass.&lt;/p&gt;
&lt;h2&gt;iCal can&amp;#8217;t talk to Google Calendar&lt;/h2&gt;
&lt;p&gt;Not much to say about this. From Google Calendar:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you know the address to a calendar (in iCal format), you can type in the address here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;m using iCal; it&amp;#8217;s in &lt;span class="caps"&gt;URL&lt;/span&gt;. Where&amp;#8217;s the &lt;span class="caps"&gt;URL&lt;/span&gt; I have to give to Google? I found (not easily mind you) two URLs that could possibly work, but they don&amp;#8217;t. They just don&amp;#8217;t, since they&amp;#8217;re not iCal, but CalDav. If you know of a way to get this to talk to Google Calendar, please tell me.&lt;/p&gt;
&lt;h2&gt;Inviting people to events is painful&lt;/h2&gt;
&lt;p&gt;Depending on how you invite people, they may or may not know about it. If you use the calendar interface, it just shows up in their calendar, and they have to accept it. There is no email notification, but presumably if you use iCal on the desktop, you&amp;#8217;d get an iCal notification or something informing you of the meeting.&lt;/p&gt;
&lt;p&gt;All in all, like the title says, it&amp;#8217;s just painful. Painful to use, painful to look at, and painful to think about. It hurt writing this post, just a little bit. I&amp;#8217;m going to tend to my wounds.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=GdE-ahQZDHk:4zBtADx4MLA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=GdE-ahQZDHk:4zBtADx4MLA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=GdE-ahQZDHk:4zBtADx4MLA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=GdE-ahQZDHk:4zBtADx4MLA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=GdE-ahQZDHk:4zBtADx4MLA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=GdE-ahQZDHk:4zBtADx4MLA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=GdE-ahQZDHk:4zBtADx4MLA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=GdE-ahQZDHk:4zBtADx4MLA:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=GdE-ahQZDHk:4zBtADx4MLA:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/GdE-ahQZDHk" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/10/mac-os-x-server-is-just-awful</feedburner:origLink></item>
    <item>
      <title>Rails 3 release notes: What does it mean to you?</title>
      <category>Software</category>
      <pubDate>Sat, 06 Feb 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/F0vrs-eeZE8/rails-3-release-notes-what-does-it-mean-to-you</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/06/rails-3-release-notes-what-does-it-mean-to-you</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;The Rails 3 Beta got dropped a few days ago, and the release notes for Rails were put out &lt;a href="http://guides.rails.info/3_0_release_notes.html"&gt;a bit before that&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The list of changes is long; this is a big release. There&amp;#8217;s a lot to sift through, a lot to change to upgrade your existing application, and a lot to learn whether you are upgrading or starting a new app.&lt;/p&gt;
&lt;p&gt;The big question is: &lt;span class="caps"&gt;WTF&lt;/span&gt; does all this mean to me?&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t worry, I&amp;#8217;m going to tell you. If you want to read the full release notes, go for it, and I recommend you do, but I&amp;#8217;m just going to cover the stuff (in the same order that it&amp;#8217;s in the release notes) that has the bigger impact on you, the developer.&lt;/p&gt;
&lt;h2&gt;No config.gem, only &lt;del&gt;Zool&lt;/del&gt; bundler&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://github.com/carlhuda/bundler"&gt;Bundler&lt;/a&gt; has been going for a while now, and they &lt;a href="http://yehudakatz.com/2010/02/01/bundler-0-9-heading-toward-1-0/"&gt;just released 0.9&lt;/a&gt; (and 0.9.2 shortly after). Bundler is a generic ruby gem dependency system. Note I said &lt;em&gt;ruby&lt;/em&gt; and not &lt;em&gt;rails&lt;/em&gt;. It works on any ruby application; I&amp;#8217;m using in on this blog (which is sinatra based).&lt;/p&gt;
&lt;p&gt;Basically, you have to put all the config.gem stuff from your environment.rb file into a Gemfile in the root of your app. For my blog (which isn&amp;#8217;t rails, remember), it looks like this:&lt;/p&gt;
&lt;script src="http://gist.github.com/296564.js?file=gistfile1.rb"&gt;&lt;/script&gt;&lt;p&gt;Not a big deal, and don&amp;#8217;t worry, you&amp;#8217;ll like the system more anyway. Like I said, it&amp;#8217;s a &lt;em&gt;ruby&lt;/em&gt; system, not rails, so it&amp;#8217;s the same wherever you go.&lt;/p&gt;
&lt;p&gt;Oh, and there&amp;#8217;s &lt;a href="http://github.com/rails/rails_upgrade"&gt;a plugin&lt;/a&gt; to do the work converting to the new syntax for you. Aren&amp;#8217;t you glad you work with ruby?&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;WTF&lt;/span&gt; does it mean? Less rails-specific system, better dependency resolution, and better vendoring of gems.&lt;/p&gt;
&lt;h2&gt;New routing syntax&lt;/h2&gt;
&lt;p&gt;The new syntax for routes basically makes the routes file look nicer. It makes a bit more sense, and you feel that warm fuzzy feeling when you write it.&lt;/p&gt;
&lt;script src="http://gist.github.com/296564.js?file=gistfile2.rb"&gt;&lt;/script&gt;&lt;p&gt;Now, normally you&amp;#8217;d probably have more routes, but as an example, those two routes handle creating a blog post. Doesn&amp;#8217;t the new way look much better. You like that, don&amp;#8217;t you?&lt;/p&gt;
&lt;p&gt;You can do other fancy things, like easily map other rack applications to routes. &lt;a href="http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/"&gt;Check out all the new hotness&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;WTF&lt;/span&gt; does it mean? Prettier, more readable code, which means we all win.&lt;/p&gt;
&lt;h2&gt;Action &lt;del&gt;Jackson&lt;/del&gt; View&lt;/h2&gt;
&lt;p&gt;Action View now has Unobtrusive Javascript Support and &lt;a href="http://twitter.com/dhh"&gt;&lt;span class="caps"&gt;DHH&lt;/span&gt;&lt;/a&gt; &lt;a href="http://twitter.com/dhh/status/8391549740"&gt;tells why&lt;/a&gt;. Oh, and it&amp;#8217;s awesome. It means you don&amp;#8217;t need a hack to use jQuery instead of prototype; it just works. It also means that your &lt;span class="caps"&gt;HTML&lt;/span&gt; isn&amp;#8217;t filled with &lt;code&gt;onclick="omg('hax');"&lt;/code&gt; stuff. Everything is nice, and &lt;em&gt;unobtrusive&lt;/em&gt;. It uses HTML5 goodness to accomplish things, and we all love HTML5. Well, except for, you know, Adobe.&lt;/p&gt;
&lt;h2&gt;ActiveRecord Query Interface&lt;/h2&gt;
&lt;p&gt;This is the fun one. &lt;a href="http://m.onkey.org/2010/1/22/active-record-query-interface"&gt;Pratik Naik has the goods&lt;/a&gt; on this one. Read it, trust me.&lt;/p&gt;
&lt;p&gt;All this new query stuff looks scary at first, but the good stuff is packed into &lt;a href="http://github.com/nkallen/arel"&gt;arel&lt;/a&gt;. Arel is a &lt;a href="http://en.wikipedia.org/wiki/Relational_algebra"&gt;relational algebra&lt;/a&gt; (get it? arel? Bazinga!) and it treats database queries the way they should be treated, not like a drunken hobo that stumbled into your web application. Using arel results in a much better and cleaner way to generate &lt;span class="caps"&gt;SQL&lt;/span&gt; (or even No-&lt;span class="caps"&gt;SQL&lt;/span&gt; queries), optimize them, chain them, and then spit them out to a string to be sent to the database. Previous to arel, ActiveRecord was, as far as I know, a really complicated and specific string builder. It had power, now it has finesse.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;WTF&lt;/span&gt; does this mean? Your queries, when you write them, should look better and make more sense. Queries should be able to be optimized better, lazily executed, and therefore your queries might end up faster, and your app should be faster too.&lt;/p&gt;
&lt;p&gt;And it&amp;#8217;s so very sexy.&lt;/p&gt;
&lt;h2&gt;ActionMailer Awesomeness&lt;/h2&gt;
&lt;p&gt;ActionMailer performs like a controller now. There is a good write up &lt;a href="http://lindsaar.net/2010/1/26/new-actionmailer-api-in-rails-3"&gt;over here&lt;/a&gt; that explains most of the good stuff.&lt;/p&gt;
&lt;p&gt;They are in a nice location, namely &amp;#8216;app/mailers&amp;#8217;.&lt;/p&gt;
&lt;p&gt;They return nice &lt;code&gt;Mail::Message&lt;/code&gt; objects.&lt;/p&gt;
&lt;p&gt;What more can you want?&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;WTF&lt;/span&gt; does it mean? You&amp;#8217;ll be happier writing mailers, it&amp;#8217;ll make more sense, and the world will rejoice.&lt;/p&gt;
&lt;h2&gt;What else?&lt;/h2&gt;
&lt;p&gt;Most everything else is pretty awesome, but doesn&amp;#8217;t overly affect your day to day work when writing your rails app. ActiveRecord is cleaned up so you can add validations and callbacks to any ruby class. ActiveSupport is cleaned up so you can require something, and it pulls in its dependencies, versus having to explicitly require it yourself. ActionController is split up so you can make your own lean controller to handle actions that need to be fast.&lt;/p&gt;
&lt;p&gt;Like I said, go read the full release notes. They cover all the new changes, and will hopefully prepare you for some awesomeness. Make sure to read the articles I linked to as well, since they have excellent information regarding the new stuff.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=F0vrs-eeZE8:0Yib7Cl7rnw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=F0vrs-eeZE8:0Yib7Cl7rnw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=F0vrs-eeZE8:0Yib7Cl7rnw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=F0vrs-eeZE8:0Yib7Cl7rnw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=F0vrs-eeZE8:0Yib7Cl7rnw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=F0vrs-eeZE8:0Yib7Cl7rnw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=F0vrs-eeZE8:0Yib7Cl7rnw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=F0vrs-eeZE8:0Yib7Cl7rnw:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=F0vrs-eeZE8:0Yib7Cl7rnw:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/F0vrs-eeZE8" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/06/rails-3-release-notes-what-does-it-mean-to-you</feedburner:origLink></item>
    <item>
      <title>Why I won't be buying an iPad (yet)</title>
      <category>Hardware</category>
      <pubDate>Mon, 01 Feb 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/CyjDgx_LprA/why-i-won-t-be-buying-an-ipad-yet</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/02/01/why-i-won-t-be-buying-an-ipad-yet</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;I didn&amp;#8217;t want to write about the iPad on day one, because I was fairly negative overall. I&amp;#8217;m still not completely sold on it; it&amp;#8217;s missing some things for me. Granted, I&amp;#8217;m not the target audience for this device, and all these things I&amp;#8217;m going to talk about are my pressure points. It you think the device will work for you, fine, but for what I want to do with it, it&amp;#8217;s not quite there.&lt;/p&gt;
&lt;h4&gt;No card slots&lt;/h4&gt;
&lt;p&gt;The thing is big enough to put a card reader in it, so where is it? Oh, you have adapters? Another $40 for one of those? Thanks Apple!&lt;/p&gt;
&lt;p&gt;They really could have put an SD card reader in this and not affected the price. You can buy super multi card readers for your PC for almost no money, so dropping one in the iPad would be easy. Granted I don&amp;#8217;t have the schematics for the iPad, but I don&amp;#8217;t imagine there would be a problem.&lt;/p&gt;
&lt;p&gt;My real problem? They clearly wanted this (why would they drop adapters with it on launch day?), but it seems like they didn&amp;#8217;t do it, &lt;em&gt;just&lt;/em&gt; so they could charge more money for an adapter that a lot of people would want. Nice business strategy, but it&amp;#8217;s also kind of annoying from a consumer point of view.&lt;/p&gt;
&lt;p&gt;I really don&amp;#8217;t know how much I&amp;#8217;d use this feature, so I&amp;#8217;m a bit on the fence, but I can feel the pain of those who would want it.&lt;/p&gt;
&lt;p&gt;Other missing ports are &lt;span class="caps"&gt;USB&lt;/span&gt; and a mini display for &lt;span class="caps"&gt;HDMI&lt;/span&gt; out, but don&amp;#8217;t you worry, there&amp;#8217;s an adapter for that.&lt;/p&gt;
&lt;h4&gt;No camera&lt;/h4&gt;
&lt;p&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/no-camera_medium.jpg" class="fleft bbottom bright" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There is a lot of angst about this, and I am in the angsty camp. I want a front facing camera, so I can do Skype video chat. That&amp;#8217;s some cool stuff right there.&lt;/p&gt;
&lt;p&gt;Okay, maybe it wasn&amp;#8217;t really built for that area of activities, but I&amp;#8217;m not overly fond of the fact that Apple seems to be trying to dictate what the device will be used for by including or omitting features (and even by locking down the app store).&lt;/p&gt;
&lt;p&gt;There is no built in camera, and even with the &lt;span class="caps"&gt;USB&lt;/span&gt; adapter you probably can&amp;#8217;t plug one in and have it work.&lt;/p&gt;
&lt;p&gt;I want a camera. I could still see myself owning and using this device &lt;em&gt;without&lt;/em&gt; a camera, but having one would just open up possibilities.&lt;/p&gt;
&lt;h4&gt;iBooks&lt;/h4&gt;
&lt;p&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/ibooks_medium.jpg" class="fright bbottom bleft" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Maybe I&amp;#8217;m just bitter because I jumped on the Kindle train in late December, but I like the Kindle experience right now. I just use the app on my iPhone, so I don&amp;#8217;t actually have a device, I just buy the books.&lt;/p&gt;
&lt;p&gt;Pros:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Cool interface&lt;/li&gt;
	&lt;li&gt;Quite a few publishers&lt;/li&gt;
	&lt;li&gt;Read on the iPad, which should be nice&lt;/li&gt;
	&lt;li&gt;Uses ePub format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cons:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Prices might be higher initially (there is some info, but I can&amp;#8217;t remember where I saw it)&lt;/li&gt;
	&lt;li&gt;Probably still DRM&amp;#8217;d&lt;/li&gt;
	&lt;li&gt;Probably can&amp;#8217;t import your own ePub files&lt;/li&gt;
	&lt;li&gt;Might not look too good everywhere (Kindle E-Ink works in sunlight, we&amp;#8217;ll have to see how the iPad fares)&lt;/li&gt;
	&lt;li&gt;Probably iPad only (at least with Kindle I have multiple platforms and ways to read)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short, it looks cool, but I have no desire to actually use it.&lt;/p&gt;
&lt;h4&gt;Lack of space&lt;/h4&gt;
&lt;p&gt;I don&amp;#8217;t know about you, but I filled up my 32GB iPhone in a heartbeat. I have to actually think about what I put on it, I can&amp;#8217;t just sync everything. If this iPad is meant for consuming media, I need to be able to put my media on it. For me, I want more than 64GB of space; give me at least a 128GB iPad, and I&amp;#8217;ll look closer.&lt;/p&gt;
&lt;h4&gt;Best way to browse the web?&lt;/h4&gt;
&lt;p&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/no-flash_medium.jpg" class="fleft bbottom bright" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Now remember, this is my opinion based on my workflow.&lt;/p&gt;
&lt;p&gt;The iPad is &lt;span class="caps"&gt;NOT&lt;/span&gt; the best way for me to browse and consume the web. I always have many tabs open, am frequently switching to other applications other than my browser, and using a mouse to its full potential when I browse the web. I could use the iPad to get around, but it would be infinitely slower than if I just pulled up my MacBook.&lt;/p&gt;
&lt;p&gt;Oh, and don&amp;#8217;t forget about the lack of flash. If you don&amp;#8217;t get the full experience, how can it be the best experience?&lt;/p&gt;
&lt;p&gt;It really depends on how &lt;em&gt;you&lt;/em&gt; browse the web, but it&amp;#8217;s far from the best way for me.&lt;/p&gt;
&lt;h4&gt;All-in-one package&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/01/apple-a4.jpg"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/apple-a4_medium.jpg" class="fright bleft bbottom" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Apple dropped a new mobile chip for this device. According to Jobs, &amp;#8220;it screams&amp;#8221; (I leave it as an exercise to the reader to reference that quote). The fact that all the existing iPhone apps will run unmodified means it runs the same basic machine code as the iPhone (which is &lt;span class="caps"&gt;ARM&lt;/span&gt;; the A4 is &lt;span class="caps"&gt;ARM&lt;/span&gt; based), so they built it around &lt;del&gt;their own spec&lt;/del&gt; (10 Feb 2010) the &lt;span class="caps"&gt;ARM&lt;/span&gt; spec. This is a great move on their part, and probably something that helped them keep the price down.&lt;/p&gt;
&lt;p&gt;They own the whole platform, and this type of ownership on a mobile platform results in good things for the consumer (like lower price and good battery life).&lt;/p&gt;
&lt;h4&gt;Non-replaceable battery&lt;/h4&gt;
&lt;p&gt;A lot of people whined about this, but who cares. Your precious iPhone doesn&amp;#8217;t have a replaceable battery, nor does your new MacBook, so take a chill pill.&lt;/p&gt;
&lt;h4&gt;iPhone OS&lt;/h4&gt;
&lt;p&gt;On the fence. For my purposes, I wouldn&amp;#8217;t mind full OS X (which is why for a great many things, I would still prefer my laptop), but the fact that it&amp;#8217;s the iPhone OS isn&amp;#8217;t terrible. It&amp;#8217;ll get cracked and you&amp;#8217;ll be able to run Linux on it anyway, so relax.&lt;/p&gt;
&lt;h4&gt;iTunes&lt;/h4&gt;
&lt;p&gt;All I have to say is it better be actual iTunes, and not just iPod. It should be able to update podcasts, among other things.&lt;/p&gt;
&lt;h4&gt;Lack of multitasking&lt;/h4&gt;
&lt;p&gt;This I really dislike. I want to be able to be browsing the web and listening to music, but then switch songs or something, and go right back to the web. Sure, I&amp;#8217;ll be able to hit the home button, go to iTunes, change songs, then hit the home button &lt;em&gt;again&lt;/em&gt;, go back to Safari, and have it start again. This is pretty lame. Give me multitasking.&lt;/p&gt;
&lt;h4&gt;Screen dimensions&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://i.gizmodo.com/5458382/8-things-that-suck-about-the-ipad"&gt;Some are whining that it&amp;#8217;s not widescreen&lt;/a&gt;. Meh. While I haven&amp;#8217;t held the device, it just seems like it&amp;#8217;s the right size and shape (except for that rounded back, which apparently makes it hard to lay on a flat surface and type). If you really want to watch a movie, use a proper widescreen TV would you please? Don&amp;#8217;t expect a revolution in the cinematic experience sitting in your bed on Sunday morning.&lt;/p&gt;
&lt;h4&gt;Other things I like&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;Calendar looks awesome&lt;/li&gt;
	&lt;li&gt;Battery life is pretty sweet&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Alternatives&lt;/h4&gt;
&lt;p&gt;The only other alternatives (or similar devices) I&amp;#8217;m excited for are whatever Google (possibly partnered with &lt;span class="caps"&gt;HTC&lt;/span&gt;) is cooking up, and the &lt;a href="http://gizmodo.com/5365299/courier-first-details-of-microsofts-secret-tablet"&gt;Microsoft Courier&lt;/a&gt;. The Courier really seems like something different and unique.&lt;/p&gt;
&lt;h4&gt;So what?&lt;/h4&gt;
&lt;p&gt;So I&amp;#8217;m somewhat excited. It&amp;#8217;s really just a toy for me, while my iPhone and MacBook Pro have more purpose. I don&amp;#8217;t need one, and I don&amp;#8217;t imagine I ever will, though it would be something fun to have. It&amp;#8217;d probably stay at the bedside for the most part, so I can have a fuller entertainment experience before bed or in the morning on the weekends without having to pull out my laptop and sit completely upright. I wouldn&amp;#8217;t use the 3G, but I would want more space.&lt;/p&gt;
&lt;p&gt;Honestly, all my gripes are never going to get dealt with. I doubt they&amp;#8217;ll put a camera in the next gen (although they put one in the iPod nano, and &lt;a href="http://mashable.com/2010/01/30/ipad-camera-support/"&gt;Mashable is reporting&lt;/a&gt; that there is a good chance we&amp;#8217;ll a 2nd gen iPad with a camera). I&amp;#8217;m definitely not getting a first gen, so I can wait and see. If they make a 2nd gen with a camera and 128GB of space, I&amp;#8217;ll consider it.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=CyjDgx_LprA:19UOUffyLi0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=CyjDgx_LprA:19UOUffyLi0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=CyjDgx_LprA:19UOUffyLi0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=CyjDgx_LprA:19UOUffyLi0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=CyjDgx_LprA:19UOUffyLi0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=CyjDgx_LprA:19UOUffyLi0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=CyjDgx_LprA:19UOUffyLi0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=CyjDgx_LprA:19UOUffyLi0:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=CyjDgx_LprA:19UOUffyLi0:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/CyjDgx_LprA" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/02/01/why-i-won-t-be-buying-an-ipad-yet</feedburner:origLink></item>
    <item>
      <title>Worth watching. Twice. Scott Hanselman on Social Networking for Developers</title>
      <category>Culture</category>
      <pubDate>Tue, 26 Jan 2010 06:45:56 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/WYwczqzsCHg/worth-watching-twice-scott-hanselman-on-social-networking-for-developers</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/01/25/worth-watching-twice-scott-hanselman-on-social-networking-for-developers</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;I use this blog to communicate things to you that I find interesting or useful. I also use it to remember things for myself.&lt;/p&gt;
&lt;p&gt;It took me a minute to find this one again, so I thought I better post it so I don&amp;#8217;t lose it again. It&amp;#8217;s a solid talk with some good information, so check it out.&lt;/p&gt;
&lt;p&gt;Scott Hanselman talks about social networking and other interesting things.&lt;/p&gt;
&lt;div id='hanselman-video' class='swfembed' movie='http://blip.tv/play/hLp5%2BvpGAg%2Em4v' mheight='390' mwidth='480'&gt;Viewing in a feed reader? Visit this on my blog so you get the video. It needs Javascript.&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=WYwczqzsCHg:PlLbItXQhaY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=WYwczqzsCHg:PlLbItXQhaY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=WYwczqzsCHg:PlLbItXQhaY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=WYwczqzsCHg:PlLbItXQhaY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=WYwczqzsCHg:PlLbItXQhaY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=WYwczqzsCHg:PlLbItXQhaY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=WYwczqzsCHg:PlLbItXQhaY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=WYwczqzsCHg:PlLbItXQhaY:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=WYwczqzsCHg:PlLbItXQhaY:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/WYwczqzsCHg" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/01/25/worth-watching-twice-scott-hanselman-on-social-networking-for-developers</feedburner:origLink></item>
    <item>
      <title>What todo indeed</title>
      <category>Software</category>
      <pubDate>Sat, 23 Jan 2010 15:00:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/VerboseLogging/~3/LhEdmsR34hc/what-todo-indeed</link>
      <guid isPermaLink="false">http://blog.darkhax.com/2010/01/23/what-todo-indeed</guid>
      <author>darkhelmet@darkhelmetlive.com (Daniel Huckstep)</author>
      <description>&lt;p&gt;You&amp;#8217;d think the todo list problem was solved by now.&lt;/p&gt;
&lt;p&gt;Email is solved. Google solved it. Srsly. If you aren&amp;#8217;t using Gmail, what&amp;#8217;s really stopping you? No, Yahoo! and Microsoft aren&amp;#8217;t doing it better. Google wins.&lt;/p&gt;
&lt;p&gt;Spam is pretty much solved. Google once again solved it by sheer volume, you throw millions of emails at a &lt;a href="http://en.wikipedia.org/wiki/Bayesian_spam_filter"&gt;Bayesian filter&lt;/a&gt; with crowd sourcing (&lt;a href="http://img.skitch.com/20100123-b22hpd9ujep3xjb5qgrs3xjp2.png"&gt;that little button in Gmail? that&amp;#8217;s crowd sourcing&lt;/a&gt;) and it gets pretty damn smart.&lt;/p&gt;
&lt;p&gt;Okay maybe I&amp;#8217;m just being too picky. I want a specific type of todo list. Here&amp;#8217;s what I&amp;#8217;ve tried.&lt;/p&gt;
&lt;h2&gt;Tracks&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/01/tracks.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/tracks_medium.png" class="fright bleft bbottom" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://getontracks.org/"&gt;Tracks&lt;/a&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done"&gt;&lt;span class="caps"&gt;GTD&lt;/span&gt;&lt;/a&gt; tool. You have &lt;em&gt;contexts&lt;/em&gt;, which is a &lt;em&gt;place&lt;/em&gt; where you would do something. Laptop, phone, and home are all contexts. You have projects, which are small groups of things with an outcome. An example would be &lt;em&gt;change oil in the car&lt;/em&gt;. You have &lt;em&gt;actions&lt;/em&gt;, sometimes (probably more frequently), &lt;em&gt;next actions&lt;/em&gt;. These are things you actually do. If you are going to change your own oil, your actions would be: Find out what oil I need, buy oil, change oil. Those actions would all be in the &amp;#8216;change car oil&amp;#8217; project, and they might be in the contexts of &amp;#8216;car&amp;#8217; (look in your vehicle manual), &amp;#8216;errands&amp;#8217; (buy the oil at the store), and &amp;#8216;home&amp;#8217; (in your garage).&lt;/p&gt;
&lt;p&gt;I really like this system. And I really like Tracks. I have my own little instance hosted on Heroku, and it works pretty good, but lately it&amp;#8217;s been giving me crap, and I hacked in iPhone support (read: completely gutted the mobile views to display iPhone happy stuff). It also seems to get kind of slow with a bunch of things in it.&lt;/p&gt;
&lt;p&gt;Not a big deal. I &lt;em&gt;could&lt;/em&gt; work on it more, speed it up, but frankly I&amp;#8217;d rather be doing other things. It&amp;#8217;s also on rails 2.2.2 and has a couple plugins being used that I think aren&amp;#8217;t needed if it were running a newer version. Subsequently, the times I did tried to upgrade it and whatnot ended in frustration, because, like I said, I&amp;#8217;d rather be &lt;del&gt;fishing&lt;/del&gt; doing other things.&lt;/p&gt;
&lt;h2&gt;Ta-da Lists&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/01/tada-lists.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/tada-lists_medium.png" class="fright bleft bbottom" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tadalist.com/"&gt;Ta-da Lists&lt;/a&gt; is a &lt;a href="http://37signals.com/"&gt;37signals&lt;/a&gt; product, and unlike their other excellent products, it&amp;#8217;s totally free! It has some pretty nice &lt;a href="http://img.skitch.com/20100123-qrpqx77h4n3hcug89kt4h3q8fb.png"&gt;features&lt;/a&gt; and is really fast since it&amp;#8217;s so simple. Works great on the iPhone, etc, etc.&lt;/p&gt;
&lt;p&gt;My problem is that Ta-da Lists is &lt;em&gt;too&lt;/em&gt; simple. I don&amp;#8217;t mind the single level organization of just having &amp;#8216;lists&amp;#8217;, but there is no due date support, and no way to attach notes to things, which is something I frequently do (research pickles, with a link to information about pickles). Granted this is by design, and as the simplest thing that could possibly work, Ta-da Lists is great. It&amp;#8217;s super slick, but it&amp;#8217;s just&amp;#8230;not&amp;#8230;quite&amp;#8230;there for me. So close. It&amp;#8217;s so nice though I &lt;em&gt;want&lt;/em&gt; to like it more, but&amp;#8230;alas.&lt;/p&gt;
&lt;h2&gt;Gmail Tasks&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com/uploads/2010/01/gmail-tasks.png"&gt;&lt;img src="http://s3.blog.darkhax.com/uploads/2010/01/gmail-tasks_thumb.png" class="fright bleft bbottom" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mail.google.com/mail/help/tasks/"&gt;Gmail Tasks&lt;/a&gt; is what I&amp;#8217;m on right now. It&amp;#8217;s simple like Ta-da Lists, but allows for due dates and extra notes. There is an iPhone app that talks to it, and it&amp;#8217;s pretty good. Worth the few bucks I paid for it.&lt;/p&gt;
&lt;p&gt;Are you ready for this next part? You&amp;#8217;re going to actually say to yourself, &amp;#8220;are you fucking kidding me?&amp;#8221;. First let me assure you I&amp;#8217;m not, I&amp;#8217;m probably just &lt;span class="caps"&gt;OCD&lt;/span&gt; or something.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://s3.blog.darkhax.com.s3.amazonaws.com/uploads/2010/01/blank-task.jpg"&gt;&lt;img src="http://s3.blog.darkhax.com.s3.amazonaws.com/uploads/2010/01/blank-task_thumb.jpg" class="fright bleft bbottom" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It has empty tasks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ve got to believe me! I&amp;#8217;m being super serial! See that stuff on the right? That&amp;#8217;s one of my lists with nothing in it, yet there is a task there. It&amp;#8217;s so easy to create a task on the web side of things, they do it like it&amp;#8217;s going out of style. There aren&amp;#8217;t even any spinners or anything to indicate that it&amp;#8217;s saving to the server or anything, shit just &amp;#8220;happens&amp;#8221;. I &lt;em&gt;sort&lt;/em&gt; of like the lack of spinners. I just putter away and it works&amp;#8230;I think. Then again, indication that it&amp;#8217;s doing something is nice.&lt;/p&gt;
&lt;p&gt;The empty tasks really kind of irk me. It&amp;#8217;s subtle, but it&amp;#8217;s there.&lt;/p&gt;
&lt;p&gt;Everything else I&amp;#8217;ve looked at is either too much (&lt;a href="http://basecamphq.com/"&gt;Basecamp&lt;/a&gt;, both in features and cost), too specific (&lt;a href="http://culturedcode.com/things/"&gt;Things&lt;/a&gt; for iPhone/Mac looks god, but I want a web based get-at-it-anywhere app), or just plain terrible.&lt;/p&gt;
&lt;p&gt;So what else is out there? What am I missing? Is it just me? Am I just &lt;em&gt;way&lt;/em&gt; too picky for my own good?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=LhEdmsR34hc:YgWeVsz0yZw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=LhEdmsR34hc:YgWeVsz0yZw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=LhEdmsR34hc:YgWeVsz0yZw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=LhEdmsR34hc:YgWeVsz0yZw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=LhEdmsR34hc:YgWeVsz0yZw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=LhEdmsR34hc:YgWeVsz0yZw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=LhEdmsR34hc:YgWeVsz0yZw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/VerboseLogging?a=LhEdmsR34hc:YgWeVsz0yZw:8CPd0h1qtfE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/VerboseLogging?i=LhEdmsR34hc:YgWeVsz0yZw:8CPd0h1qtfE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/VerboseLogging/~4/LhEdmsR34hc" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://blog.darkhax.com/2010/01/23/what-todo-indeed</feedburner:origLink></item>
  </channel>
</rss>
