<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Karl Brightman</title>
 <link href="http://karlbrig.ht/atom.xml" rel="self"/>
 <link href="http://karlbrig.ht/"/>
 <updated>2012-07-10T21:16:35-07:00</updated>
 <id>http://karlbrig.ht/</id>
 <author>
   <name>Karl Brightman</name>
   <email>karl@karlbright.org</email>
 </author>
 
 <entry>
   <title>Indie Game&#58; The Movie</title>
   <link href="http://karlbrig.ht/20120706-indie-game-the-movie.html"/>
   <updated>2012-07-06T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/indie-game-the-movie</id>
   <content type="html">&lt;p&gt;I love watching documenatries. Good documentaries will tell a story in such a beautiful way that it captivates me completely and I can&amp;#8217;t do anything but watch and listen. Silhouetted frames of someone in the distance, the post-rock-esque music over the top and the poignant dialogue combine and go straight to my head, no filter, it&amp;#8217;s amazing. No other documentary has had such an effect on me, and left me in such a state of awe than that of Indie Game: The Movie.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://karlbrig.ht/images/indiegamethemovie.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Indie Game: The Movie was always going to be in my good books. It&amp;#8217;s subject matter hits home. I&amp;#8217;m a gamer and I love to develop and design. Combine the two and you have yourself the stereotypical indie game developer. How could I not enjoy it?&lt;/p&gt;
&lt;p&gt;This movie is nothing short of amazing. Each frame has something interesting, the in-game videos, the hotel bars, chandeliers, crowds of gamers lined up for a convention. They all work. The music by Jim Guthrie is just fantastic and since watching the movie the soundtrack has been on repeat over and over and over again. If you enjoyed the music of Swords &amp;amp; Sworcery then you must get this soundtrack. Your ears will love you.&lt;/p&gt;
&lt;p&gt;The real star of the movie though is of course the developers and designers themselves. The movie takes you into the life of an indie game developer. You hear about the way they get up at 5 in the morning and eat left over pizza while checking emails and going over the list of bugs they wrote on an oil-stained piece of paper the week before, the wife that still spends time with her partner but only ever see&amp;#8217;s his back as he sits at his work desk and the backlash from so-called &amp;#8216;fans&amp;#8217; as they become impatient. It all sounds pretty negative until the game launches, and you hear of their success and how it was all worth it, how they can live comfortably(while working on a new game) and pay off their parents mortgage.&lt;/p&gt;
&lt;p&gt;The scariest part about this movie was how it made me realise that I could be one of the indie games developers in the movie. I am the type of person that can sit at my desk and can sit in my text editor or photoshop and keep working. As much as the thought of putting hours into something that could potentially turn into a disaster scares me, another part of me finds it exciting and a source of inspiration.&lt;/p&gt;
&lt;p&gt;Knowing all this, I won&amp;#8217;t be starting a game anytime soon. Yes, it seems exciting. Yes, it&amp;#8217;s scary. But the sacrifice you have to make not only affects yourself but the people around you. Indie game developers are mental, and i applaud them. &lt;a href=&quot;http://indiegamethemovie.com&quot;&gt;Get this documentary&lt;/a&gt; and watch it, immediately.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>RequireJS + Mocha + Chai</title>
   <link href="http://karlbrig.ht/20120608-requirejs-mocha-chai-bootstrap.html"/>
   <updated>2012-06-08T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/requirejs-mocha-chai-bootstrap</id>
   <content type="html">&lt;p&gt;I previously wrote about &lt;a href=&quot;0120530-start-testing-your-javascript.html&quot;&gt;testing your JavaScript&lt;/a&gt; and &lt;a href=&quot;20120530-no-more-hashbangs.html&quot;&gt;Asynchronous Module Definition&lt;/a&gt; with RequireJS. A recent project idea was a perfect candidate for RequireJS Modules with &lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt; and decided it would be a good time to tackle testing RequireJS modules using my testing framework of choice, Mocha.&lt;/p&gt;
&lt;p&gt;I found some existing examples showing how to accomplish this, the &lt;a href=&quot;http://github.com/geddesign/amd-testing&quot;&gt;&lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt; Testing&lt;/a&gt; repository from &lt;a href=&quot;http://geddesign.com/&quot;&gt;Dave Geddes&lt;/a&gt; was a step in the right direction and was the perfect starting point for what i wanted to do. I jumped into my command line and start typing.&lt;/p&gt;
&lt;p&gt;Two hours later I had my &lt;a href=&quot;https://github.com/karlbright/requirejs-mocha-chai-bootstrap&quot;&gt;RequireJS + Mocha + Chai Bootstrap&lt;/a&gt;. It&amp;#8217;s not perfect and there are plenty of areas I want to improve, most importantly including some sort of build script for the tests themselves, but its a good start.&lt;/p&gt;
&lt;h2&gt;How it works&lt;/h2&gt;
&lt;p&gt;If you&amp;#8217;re familiar with RequireJS then you shouldn&amp;#8217;t have any problem opening up SpecRunner.html and following the trail. For those of you that are not, here is a quick overview on whats happening.&lt;/p&gt;
&lt;h3&gt;package.json&lt;/h3&gt;
&lt;p&gt;The start of our testing journey is within our package.json file. All &lt;a href=&quot;http://npmjs.org/&quot; title=&quot;Node Package Manager&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NPM&lt;/span&gt;&lt;/a&gt; packages contain this file. It holds all the information regarding the project including version, author, name, description, dependencies as well as scripts associated with the project.&lt;/p&gt;
&lt;/notextile&gt;

I have included a script for running our tests. The command simply opens SpecRunner within your browser. Please note, chances are this will not work on windows, and quite possibly various Linux distributions.

h3. SpecRunner.html

The spec runner does exactly as its advertised, it runs the specs. The markup is minimal and all the action happens within the single script tag.

&lt;notextile&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;src/vendor/require.js&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;data-main=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;scripts/SpecRunner.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We load our RequireJS library and provide it with a data-main attribute. This tells RequireJS what file to load once RequireJS is ready for use.&lt;/p&gt;
&lt;h3&gt;SpecRunner.js&lt;/h3&gt;
&lt;p&gt;The core of the system. This sets up our testing envirionment and starts Mocha.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;baseUrl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;src/&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;urlArgs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;v=&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getTime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Here we configure RequireJS to use the src folder as our base &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;. This means that any references to scripts within RequireJS will be relative to the src folder. Which is convinient considering all our specs and library are held here and the final product is pushed out to our build directory.&lt;/p&gt;
&lt;p&gt;The second attribute &amp;#8216;urlArgs&amp;#8217; is a string that is appended to all script URLs. I&amp;#8217;m using this as a cache buster. Let&amp;#8217;s say we require &amp;#8216;lib/person&amp;#8217;. Require JS will no interepret this as &amp;#8216;src/lib/person.js?v=1339120131756&amp;#8217;, we can change this file, refresh the page and the version parameter will have changed causing the file to be loaded again and ignoring cache. Simple, but effective.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;require&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;vendor/chai&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;vendor/mocha&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;chai&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We require our testing libraries &amp;#8211; RequireJS, &lt;a href=&quot;http://chaijs.com/&quot;&gt;Chai&lt;/a&gt; and &lt;a href=&quot;http://visionmedia.github.com/mocha/&quot;&gt;Mocha&lt;/a&gt;. Once all these libraries have been loaded we set them up.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;chai&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;should&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;chai&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;should&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;expect&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;chai&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;expect&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Chai is my assertion library of choice as it provides 3 interfaces to use and gives us some flexibility on how we want to write out tests. We provide these 3 interfaces to the user by referencing them before our specs start running. Personally I prefer to use &amp;#8216;should&amp;#8217; as I think it&amp;#8217;s the nicest to read within specs and i&amp;#8217;m a sucker for pretty things.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;  &lt;span class=&quot;nx&quot;&gt;mocha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;bdd&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We setup Mocha to read the &lt;span class=&quot;caps&quot;&gt;BDD&lt;/span&gt; spec syntax and use the &lt;span class=&quot;caps&quot;&gt;BDD&lt;/span&gt; reporter.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;spec/person&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;person&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;mocha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Finally we require our first spec and start the tests once loaded. The requirement here will ultimately become something more akin to &amp;#8216;spec/base&amp;#8217; or &amp;#8216;spec/all&amp;#8217; in which all specs will be loading. I plan to include a build script to handle this for you rather than having to manually type these files out into a large array.&lt;/p&gt;
&lt;h3&gt;spec/person.js&lt;/h3&gt;
&lt;p&gt;From there its fairly basic testing which should be covered in &lt;a href=&quot;0120530-start-testing-your-javascript.html&quot;&gt;my previous post&lt;/a&gt;. The only difference here is that we need to tell RequireJS to load the files we are testing against.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;define&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;lib/person&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Personally I think this line fits quite nicely into the way I like to test and allows the user to know where to look for the implementation the tests are running against.&lt;/p&gt;
&lt;h2&gt;Improvements&lt;/h2&gt;
&lt;p&gt;There are a lot of areas I want to improve within my boostrap. The most important of which are the build scripts. I plan to provide a build script for users to export a minified,uglified version of their script with the possiblity of using source maps. Paul Irish did an &lt;a href=&quot;http://www.youtube.com/watch?v=f7AU2Ozu8eo&amp;amp;feature=player_detailpage#t=832s&quot;&gt;excellent talk at Fluent 2012 explaining source maps&lt;/a&gt; as well as a bunch of other cool workflow improvements.&lt;/p&gt;
&lt;p&gt;I also plan on providing a test-prepare script that will be run everytime you run &amp;#8216;npm test&amp;#8217;. This script will setup your &amp;#8216;spec/all.js&amp;#8217; or &amp;#8216;spec/base.js&amp;#8217; that will allow you to add specs without having to worry to add them to your require call within SpecRunner.js.&lt;/p&gt;
&lt;h2&gt;Suggestions&lt;/h2&gt;
&lt;p&gt;If you have any suggestions, complaints then please feel free to contact me via &lt;a href=&quot;http://twitter.com/karlbright&quot;&gt;Twitter&lt;/a&gt;. Alternatively you could always fork and pull apart my &lt;a href=&quot;https://github.com/karlbright/requirejs-mocha-chai-bootstrap&quot;&gt;repository on github&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Start Testing Your JavaScript</title>
   <link href="http://karlbrig.ht/20120530-start-testing-your-javascript.html"/>
   <updated>2012-05-30T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/start-testing-your-javascript</id>
   <content type="html">&lt;p&gt;Not interested in a bit of a background and the process behind how to get setup and why you should test? &lt;a href=&quot;#watchtower&quot;&gt;Click here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;A Bit Of Background&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;ve done what many, many developers do during early days of a project. Scrapped everything and started over. My &lt;a href=&quot;/20120517-all-about-the-hex.html&quot;&gt;recent work on my Terraria JavaScript project&lt;/a&gt; was OK, but it was meant to be more of an experiment than anything. A playground of code to ensure what I wanted to do seemed feasible within JavaScript and &lt;a href=&quot;http://nodejs.org&quot;&gt;NodeJS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With a plan of attack on how to accomplish what I want to accomplish. I decided the best thing to do was to start over. My file was full of comments, code everywhere, horribly written with little to no refactoring. It was a mess. I&amp;#8217;m now looking at a clean code base with a folder structure that makes sense and, as stupid as it sounds, a .gitignore file that works!&lt;/p&gt;
&lt;p&gt;Another reason for starting over was to start TDDing the project. For those of you that don&amp;#8217;t know, &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; stands for &lt;a href=&quot;http://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test Driven Development&lt;/a&gt; and may drastically change the way you used to work. The idea behind &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; is to write failing automated test cases, write the code to make the test pass, then refactor the code to &amp;#8216;acceptable standards&amp;#8217;. Rinse and repeat.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve always been a big fan of &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; and the work flow it promotes. The only issue I had with it was that I am not a developer at my day-to-day job, but a designer. When I do develop I often don&amp;#8217;t have time to &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; unless the project is spanning across more than a month and even then I feel as though I don&amp;#8217;t know where to start. What tests do I write? how verbose should they be? I get bogged down in the theory of &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; and not enough time in the tests and code itself.&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;The introduction of &lt;a href=&quot;http://nodejs.org&quot;&gt;NodeJS&lt;/a&gt; and the &lt;a href=&quot;http://npmjs.org/&quot; title=&quot;NPM&quot;&gt;Node Package Manager&lt;/a&gt; has made distributing useful JavaScript packages incredibly easy. There are a wide range of JavaScript test frameworks out there including &lt;a href=&quot;http://www.jsunit.net/&quot;&gt;JSUnit&lt;/a&gt;, &lt;a href=&quot;http://docs.jquery.com/QUnit&quot;&gt;QUnit&lt;/a&gt;, &lt;a href=&quot;Jasmine&quot; title=&quot;JavaScript_framework&quot;&gt;http://en.wikipedia.org/wiki/Jasmine_&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#JavaScript&quot;&gt;more&lt;/a&gt;. I&amp;#8217;ve experimented with a couple of them and think I may have founded my JavaScript-testing home within &lt;a href=&quot;http://visionmedia.github.com/mocha/&quot;&gt;Mocha&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Mocha homepage gives you a quick rundown of what you can do with it, from asynchronous to synchronous tests, reporters and useful string diffs. What I find interesting is the best practices they provide at the bottom of the page. Incredibly useful if you have never done &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; before and not sure where to start. Place all your tests within the &lt;strong&gt;test/&lt;/strong&gt; folder and include a command to run these tests within your &lt;a href=&quot;http://edwardhotchkiss.com/blog/2012/03/14/node.js-automation-with-a-makefile/&quot;&gt;MakeFile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Writing tests within Mocha is incredibly simple and when written correctly are easy to read. Below we are writing a test for the indexOf method of Array. We describe what we are testing and what we expect the outcome to be. The Array.indexOf() method should return -1 when not present.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;describe&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;Array&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(){&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;describe&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;#indexOf()&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(){&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;it&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;should return -1 when not present&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(){&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;equal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;indexOf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now, this is nice enough, but if you are writing a lot of JavaScript then I highly recommend you move over to CoffeeScript. The same test with CoffeeScript looks like this:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;coffeescript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;describe&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;Array&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;describe&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;#indexOf()&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;should return -1 when not present&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;equal&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;indexOf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The removal of the parentheses and braces make the tests much more readable and nicer to work with. Then again, each to their own.&lt;/p&gt;
&lt;h3&gt;Mocha and should.js sitting in a tree&lt;/h3&gt;
&lt;p&gt;Although the two tests above read quite nicely, the line that stands out as a little odd is &amp;#8216;assert.equal [1,2,3].indexOf(4), -1&amp;#8217;. Yes, its JavaScript but there are way to make this a little nicer &amp;#8211; &lt;a href=&quot;https://github.com/visionmedia/should.js/tree/&quot;&gt;should.js&lt;/a&gt; from the same guys who made Mocha.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;should is an expressive, readable, test framework agnostic, assertion library for node.&lt;br /&gt;
It extends the Object prototype with a single non-enumerable getter that allows you to express how that object should behave.&lt;br /&gt;
should literally extends node&amp;#8217;s assert module, in fact, it is node&amp;#8217;s assert module, for example should.equal(str, &amp;#8216;foo&amp;#8217;) will work, just as assert.equal(str, &amp;#8216;foo&amp;#8217;) would, and should.AssertionError is assert.AssertionError, meaning any test framework supporting this constructor will function properly with should.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Including &lt;em&gt;should&lt;/em&gt; with our tests is simple, rather than require the file at the top of every testcase file we can simple pass it was a parameter to mocha. The original MakeFile line from the Mocha homepage now becomes something a little more like this:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;coffeescript&quot;&gt;&lt;span class=&quot;nv&quot;&gt;test:&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;node_modules&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;/.bin/mocha --reporter spec --require should --compilers coffee:coffee-script&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Alternatively you could use a mocha.opts file within your test directory and remove the parameters from your MakeFile line.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;-- reporter spec
-- require should
-- compilers coffee:coffee-script
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now you can change your tests to make them a little easier to understand with &lt;em&gt;should&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/notextile&gt;&lt;/p&gt;
&lt;p&gt;A small change, but definitely worth it as your test cases get more and more complex and verbose.&lt;/p&gt;
&lt;h2 id=&quot;watchtower&quot;&gt;All Across The Watchtower&lt;/h2&gt;
&lt;p&gt;If you&amp;#8217;ve been following these some-what steps you should be at a point where you can start testing. Looking back at this article and the content inside of it I realise I may not have actually put across what I wanted to put across. &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; is a huge subject and there is a lot involved. The core of it though, is to test your code.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve put together a &lt;a href=&quot;https://github.com/karlbright/Start-Testing-Your-JavaScript&quot;&gt;small setup&lt;/a&gt; that you will help you better understand whats going on and if you really wanted to, you could download the repository and start use within your own projects.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; is a fantastic way to keep your mind on track and will help you organise your code. Taking the time out to write the tests first and interface to your code will produce better results.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>On Hashbangs and AMD</title>
   <link href="http://karlbrig.ht/20120530-no-more-hashbangs.html"/>
   <updated>2012-05-30T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/no-more-hashbangs</id>
   <content type="html">&lt;p&gt;Twitter today put out a &lt;a href=&quot;http://engineering.twitter.com/2012/05/improving-performance-on-twittercom.html&quot;&gt;post regarding improving performance on their website&lt;/a&gt;. Its an interesting read and it&amp;#8217;s great to see them taking everything into consideration as well as sharing their thoughts with those intersted.&lt;/p&gt;
&lt;h2&gt;No more #!&lt;/h2&gt;
&lt;p&gt;The big highlight and change for Twitter is the fact that the hashbang has left the building. They share a &lt;a href=&quot;http://danwebb.net/2011/5/28/it-is-about-the-hashbangs&quot;&gt;link from Dan Webb about the limitations of hashbangs&lt;/a&gt; and say their primary reason for ditching them was to improve the initial page-load performance.&lt;/p&gt;
&lt;p&gt;The hashbang meant that the user was hitting a page, downloading the JavaScript then executing that JavaScript to load another page based on the hashbang path. A slow process when you all you want to do is tweet.&lt;/p&gt;
&lt;p&gt;Something I found really interesting was how they obtained their findings or how they reduced the &amp;#8216;time to first tweet&amp;#8217; as they put it. The &lt;a href=&quot;http://www.w3.org/TR/navigation-timing/&quot;&gt;Navigation Timing &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/a&gt; was used on a sample of users. The number of users wasn&amp;#8217;t shared, neither were the times taken from that sample, but they were signifcant enough to move Twitter to using CommonJS modules being delivered via &lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt;. Something I am surprised hadn&amp;#8217;t been done sooner.&lt;/p&gt;
&lt;h2&gt;I wanna be just like the big boys&lt;/h2&gt;
&lt;p&gt;Now this is all well and good and for someone like Twitter with a web application being driven by JavaScript, its a fantastic solution. But this isn&amp;#8217;t something that everyone should jump onto the band wagon for and start thinking it will work for them.&lt;/p&gt;
&lt;p&gt;Alex Sexton, the creator of the fantastic asynchronous conditional resource loader &lt;a href=&quot;http://yepnopejs.com&quot;&gt;YepNope&lt;/a&gt; put together a &lt;a href=&quot;http://msdn.microsoft.com/en-us/magazine/hh227261.aspx&quot;&gt;great article on script loaders&lt;/a&gt; which I feel ties in perfectly with the poster from the Twitter engineers.&lt;/p&gt;
&lt;p&gt;I sure hope &lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt; doesn&amp;#8217;t become a buzzword over the next few weeks. Anyway, wouldn&amp;#8217;t that be more of a buzzacronym than anything?&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Jekyll + GitHub = <3</title>
   <link href="http://karlbrig.ht/20120523-Jekyll.html"/>
   <updated>2012-05-23T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/Jekyll</id>
   <content type="html">&lt;p&gt;What started out as a fairly straight forward night of hacking JavaScript and trying to get my &lt;a href=&quot;/20120517-all-about-the-hex.html&quot;&gt;binary data parsed&lt;/a&gt; turned into a rebuild of this very blog.&lt;/p&gt;
&lt;p&gt;The first couple of posts on this blog were using &lt;a href=&quot;http://middlemanapp.com/&quot;&gt;Middleman&lt;/a&gt;, a fantastic static site generator that I use for any personal projects. It allows me to use &lt;span class=&quot;caps&quot;&gt;HAML&lt;/span&gt;,&lt;span class=&quot;caps&quot;&gt;SASS&lt;/span&gt; and CoffeeScript with next to no issues. A simple &amp;#8216;middleman build&amp;#8217; command and your static site has been generated, smushed images and all.&lt;/p&gt;
&lt;p&gt;Middleman worked well, the blog extension allows you to create markdown files and smush them together with an associated view. The only problem you have is deploying these files. Sure, you can get fancy with some &lt;a href=&quot;https://github.com/capistrano/capistrano&quot;&gt;Capfile&lt;/a&gt; or some hooks with a remote git repository but why waste your time when someone has already fixed this for you? Let&amp;#8217;s not the wheel.&lt;/p&gt;
&lt;p&gt;Enter Jekyll. Not only Jekyll, but Jekyll + GitHub. &lt;a href=&quot;https://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt;, a static site generator(I see a trend&amp;#8230;) built by none other than &lt;a href=&quot;http://tom.preston-werner.com/&quot;&gt;Mojombo&lt;/a&gt; of GitHub founding fame.&lt;/p&gt;
&lt;p&gt;The way Jekyll works is exactly the same as the blog extension found in Middleman. The great thing about using Jekyll though? Deploying to GitHub. GitHub uses Jekyll within their &lt;a href=&quot;http://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt; system, which means it&amp;#8217;s available for user pages. &lt;a href=&quot;http://help.github.com/pages/&quot;&gt;This help page&lt;/a&gt; has a good run down on how to get setup.&lt;/p&gt;
&lt;p&gt;No longer will I have to worry about scp and Middleman, I simply write and push. The way it should be.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>All About The Hex</title>
   <link href="http://karlbrig.ht/20120517-all-about-the-hex.html"/>
   <updated>2012-05-17T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/all-about-the-hex</id>
   <content type="html">&lt;h2&gt;Beginnings&lt;/h2&gt;
&lt;p&gt;So now that I have a blog(of sorts) I figure it is probably best that I actually explain what I am currently working on. Keep in mind that although my initial work isn&amp;#8217;t directly a playable game, it does compliment an existing one and something I would like to take on to replicate as a personal challenge.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;It&amp;#8217;s Minecraft, but without the boring&amp;#8230;&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was recently convinced to give &lt;a href=&quot;http://www.terraria.org/&quot;&gt;Terraria&lt;/a&gt; a go. I got it gifted up to me via Steam and jumped in ready to experience all these amazing boss battles and dodging lasers that I had been told about.&lt;/p&gt;
&lt;p&gt;That didn&amp;#8217;t happen. Instead I spent 4-5 hours upgrading pickaxe after pickaxe mining ore and dirt. Wait a minute, isn&amp;#8217;t this Minecraft? I thought I had been tricked until I was shown some of the weapon drops and areas that you can explore. Then finally, a boss battle.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not saying this is an amazing game, it&amp;#8217;s not something I would recommend to everyone. Much like Minecraft, this game is, well, a game. I have only played it while sitting on Skype talking with a friend. Social games or get out.&lt;/p&gt;
&lt;h2&gt;The idea&lt;/h2&gt;
&lt;p&gt;So why on earth would I want to develop something that has any correlation with a game that I am &lt;em&gt;somewhat&lt;/em&gt; interesting in? It all started the way most personal projects do. A friend (via Skype) just happened to say &amp;#8220;Hey Karl, wouldn&amp;#8217;t it be cool if you could see a large overview of where you had been on the map?&amp;#8221;. &lt;em&gt;&lt;span class=&quot;caps&quot;&gt;BAM&lt;/span&gt;&lt;/em&gt; We have the idea and we&amp;#8217;re off.&lt;/p&gt;
&lt;p&gt;I did a little bit of research to see what had already been developed, there is a lot of people working on mods, even after the developers have stopped work on the game its self. The community is large and passionate. There are a lot of &amp;#8216;map viewers&amp;#8217; out there but their primary use is to let you see where certain types of ore, chests etc are. This means you no longer need to mine randomly in a hope that you&amp;#8217;ll find that precious ore you&amp;#8217;ve been looking for. The map viewer does the easy work for you. This takes a lot away from the game and wasn&amp;#8217;t what I was looking for. I wanted something that simply showed an overview of the map, where you had been. Basically screen shots from a players perspective placed next to each other until the whole map is visible.&lt;/p&gt;
&lt;p&gt;I had my idea, I had some research(including some source code for existing viewers) and knew how I wanted to do it. I wanted to plot the world right into canvas, right into the browser. It seems kinda crazy considering the file size of some of the worlds but I figure it&amp;#8217;s a personal project.&lt;/p&gt;
&lt;h2&gt;This ain&amp;#8217;t no vooodoo!&lt;/h2&gt;
&lt;p&gt;First things first, I had to find out exactly how to get this information. The world files themselves are stored locally in a &amp;#8216;Worlds&amp;#8217; directory. They use a .wld file extension. It all sounds amazing &amp;#8211; easy file structure, file extensions that make sense etc. Then you open up a file, you hope that it will be some &lt;span class=&quot;caps&quot;&gt;JSON&lt;/span&gt; type format, you &lt;em&gt;&lt;span class=&quot;caps&quot;&gt;HOPE&lt;/span&gt;&lt;/em&gt; it&amp;#8217;s easy to read. It&amp;#8217;s not.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;› hexdump -n 64 ~/Development/karlbright-terraria/example.wld&lt;br /&gt;
0000000 27 00 00 00 07 42 72 69 6c 79 6e 6e 95 f8 d2 65&lt;br /&gt;
0000010 00 00 00 00 80 06 01 00 00 00 00 00 00 4b 00 00&lt;br /&gt;
0000020 b0 04 00 00 68 10 00 00 38 08 00 00 fa 00 00 00&lt;br /&gt;
0000030 00 00 00 00 00 d0 75 40 00 00 00 00 00 d0 78 40&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We&amp;#8217;re dealing with binary data. Reverse engineering Terraria and working out order the data we need is  definitely the way to go from this point. My options were to use a disassembler/decompiler like &lt;a href=&quot;http://www.reflector.net/&quot;&gt;.&lt;span class=&quot;caps&quot;&gt;NET&lt;/span&gt; Reflector&lt;/a&gt; or hope that another developer has already done this work and provided some documentation.&lt;/p&gt;
&lt;p&gt;It took a long time and not everyone was all that helpful but the developer of the map viewer titled &lt;a href=&quot;http://seancode.com/terrafirma/&quot;&gt;Terrafirma&lt;/a&gt; was nice enough to not only provide the &lt;a href=&quot;http://seancode.com/terrafirma/world.html&quot;&gt;.wld file format&lt;/a&gt;, but information on the &lt;a href=&quot;http://seancode.com/terrafirma/net.html&quot;&gt;Terraria Network Protocol&lt;/a&gt; and &lt;a href=&quot;http://seancode.com/terrafirma/uvs.html&quot;&gt;UV Mapping&lt;/a&gt;. Interesting read if you&amp;#8217;re interested(like me) in that kind of thing.&lt;/p&gt;
&lt;p&gt;Now it&amp;#8217;s just a case of using this data to read out the values and draw them to canvas. So far I&amp;#8217;ve managed to use &lt;a href=&quot;http://nodejs.org&quot;&gt;NodeJS&lt;/a&gt; to read out the file and print the world header section and am moving onto the tile section. Once I have everything it comes down to drawing them in canvas in such a way that i don&amp;#8217;t break anything.&lt;/p&gt;
&lt;h2&gt;All about the hex&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Stay awhile and listen&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have an issue though, a roadblock, something that is stopping me from progressing any further. On this project I am dealing with hex, a lot of hexadecimal. Oddly enough, I&amp;#8217;m dealing with hex in another little project.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://diablo3.com&quot;&gt;Diablo 3&lt;/a&gt; has consumed me and is occupying a lot of what would be development time. But that&amp;#8217;s OK right? Diablo 3 is a fantastic game and I should play it. I like to call it &lt;em&gt;research&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;Once I have slain the beasts of hell and driven back the evil forces from Caldeum and Tristram I will be able to get back to my CoffeeScript(it&amp;#8217;s better than JavaScript). I hope to show you some tiles drawn in the near future.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Hello World</title>
   <link href="http://karlbrig.ht/20120510-hello-world.html"/>
   <updated>2012-05-10T00:00:00-07:00</updated>
   <id>http://karlbrig.ht/hello-world</id>
   <content type="html">&lt;p&gt;It looks as though I have a blog of sorts.&lt;/p&gt;
&lt;p&gt;I have never been a huge blogger, i always find that I start with the best intentions and end up abandoning it while I get wrapped up in other personal projects, work and everything else.&lt;/p&gt;
&lt;p&gt;This blog was thrown together in a couple of hours after realising how useful it can be to document your progress on a project. I was inspired by &lt;a href=&quot;http://twitter.com/lazer&quot;&gt;Liza&lt;/a&gt; who has been blogging frequently about her development progress on a game built within Javascript. I suggest you check out &lt;a href=&quot;http://liza.id.au/box2d-i-have-conquered-you-sort-of/&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;http://liza.id.au/box2d-you-are-torture/&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;http://liza.id.au/documentation-placeholder-audio-and-object-interaction/&quot;&gt;her&lt;/a&gt; &lt;a href=&quot;http://liza.id.au/entity-states-animations-and-other-random-stuff/&quot;&gt;posts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started brainstorming ideas on a similar project this week and with a coffee in hand and a couch to sit on I was able to expand on it to the point where I could open up my &lt;a href=&quot;http://www.sublimetext.com/2&quot;&gt;text editor&lt;/a&gt; and start coding.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Really must start a blog for my javascript gaming endeavours&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It wasn&amp;#8217;t until I tweeted the above and got a few positive responses back that I decided to take the plunge and throw something together. The design is simple for a reason. I don&amp;#8217;t want to get carried away designing how my blog should look and end up with no content to fill it with. There are no comments, just a white screen and content. I have &lt;a href=&quot;http://twitter.com/karlbright&quot;&gt;twitter&lt;/a&gt;, if there was anything you want to discuss or comment on, thats where you can find me :)&lt;/p&gt;
&lt;p&gt;So watch this space, I will be providing some &lt;span class=&quot;caps&quot;&gt;RSS&lt;/span&gt; functionality soon but like I said. I want to get some content in and not focus on the blog its self.&lt;/p&gt;</content>
 </entry>
 
</feed>
