<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Debuggable.com - Blog</title><link>http://www.debuggable.com/</link><description /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/debuggable" /><feedburner:info uri="debuggable" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Testing node.js modules with Travis CI</title><link>http://feedproxy.google.com/~r/debuggable/~3/5CCvK7dGmiU/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</guid><description>&lt;p&gt;You have written a node.js module lately? It has a test suite? &lt;a href="http://www.youtube.com/watch?v=2Z4m4lnjxkY"&gt;Awesome&lt;/a&gt;! Time
to get yourself a nerd badge of honor:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://debuggable.com.s3.amazonaws.com/blog/2011/build-passing.png" alt="build passing" /&gt;&lt;/p&gt;

&lt;p&gt;But hang on nerdy warrior, this precious award has to be earned. So go ahead and
check out the sweetness that is &lt;a href="http://travis-ci.org"&gt;Travis CI&lt;/a&gt;. Travis is an open
source, free to use, continuous integration server. Initially it was just
building ruby stuff, but these days it supports a ton of other languages,
including node.js.&lt;/p&gt;

&lt;p&gt;And luckily, getting travis to run your tests on every GitHub push is really
easy as well:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Go to &lt;a href="http://travis-ci.org"&gt;Travis&lt;/a&gt; and login/connect with your GitHub account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Hover over your name on the top right, and select "Profile" from the
dropdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; You should see all your GitHub projects. Flip the "Off" switch to
"On" for a node.js project you want to use with travis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Add a .travis.yml file to your project with the following:&lt;/p&gt;

&lt;pre class="terminal"&gt;
language: node_js
node_js:
  - 0.4
  - 0.6
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Make sure your package.json has something like this:&lt;/p&gt;

&lt;p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="code debuggable_sh_js" style="white-space: wrap;white-space: nowrap;"&gt;
&lt;span class="st0"&gt;&amp;quot;scripts&amp;quot;&lt;/span&gt;: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;test&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;make test&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Git push, and watch travis building your project on the home screen!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Assuming your tests are passing, it is time to get your badge of
honor. Adding it to your GitHub Readme.md is as simple as:&lt;/p&gt;

&lt;pre class="terminal"&gt;
[![Build Status](https://secure.travis-ci.org/&amp;lt;GITHUB_USER&amp;gt;/&amp;lt;REPO_NAME&amp;gt;.png)](http://travis-ci.org/&amp;lt;GITHUB_USER&amp;gt;/&amp;lt;REPO_NAME&amp;gt;)
&lt;/pre&gt;

&lt;p&gt;If you want to see an example of what this looks like, and you also happen to
be in the market for some no-bullshit testing tools, check out my new libs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/felixge/node-utest"&gt;utest&lt;/a&gt;: The minimal unit testing library.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/felixge/node-urun"&gt;urun&lt;/a&gt;: The minimal test runner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. And in case you are not excited enough yet, go and check out the
&lt;a href="http://about.travis-ci.org/docs/"&gt;Travis Docs&lt;/a&gt; to discover additional goodies like how to work with
databases, etc.&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/5CCvK7dGmiU" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Fri, 18 Nov 2011 09:17:12 +0000</pubDate><comments>http://www.debuggable.com/posts/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</feedburner:origLink></item><item><title>Private npm modules</title><link>http://feedproxy.google.com/~r/debuggable/~3/zQw9Brh9gW4/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</guid><description>&lt;p&gt;Thanks to &lt;a href="http://twitter.com/#!/izs"&gt;Isaac&lt;/a&gt;, npm is getting more and more awesome by the hour. One of the
coolest &lt;a href="https://github.com/isaacs/npm/issues/1272"&gt;recent additions&lt;/a&gt; (you need at least v1.0.26) is the ability to specify
private git repositories urls as a dependency in your package.json files.&lt;/p&gt;

&lt;p&gt;At transloadit, we are currently using the feature to move some of our
infrastructure code into separate packages, allowing for those to be tested
and developed in isolation making our core application easier to maintain and
work on.&lt;/p&gt;

&lt;p&gt;The syntax for referencing a git repository (and commit) is as follows:&lt;/p&gt;

&lt;p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="code debuggable_sh_js" style="white-space: wrap;white-space: nowrap;"&gt;
&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class="st0"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;my-app&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span class="st0"&gt;&amp;quot;dependencies&amp;quot;&lt;/span&gt;: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;private-repo&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;git+ssh://git@github.com:my-account/node-private-repo.git#v0.0.1&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;This will include a private npm module called &lt;code&gt;"private-repo"&lt;/code&gt; from GitHub. The
url also contains an optional refspec (&lt;code&gt;#v0.0.1&lt;/code&gt;) that tells npm which branch,
commit, or in this case tag you want to have checked out.&lt;/p&gt;

&lt;p&gt;Now of course this is not the only way to do private npm repositories, but it
is much simpler than running your &lt;a href="https://github.com/isaacs/npm/blob/master/doc/registry.md"&gt;own registry&lt;/a&gt;, so I would recommend it to
most people.&lt;/p&gt;

&lt;p&gt;Before you head of to play with this, here is a final tip that may safe you
some headaches. In all your private npm modules, add &lt;code&gt;"private": true&lt;/code&gt; to your
package.json. This will make sure npm will never let you accidentally publish
your secret sauce to the official npm registry.&lt;/p&gt;

&lt;p&gt;Happy hacking,
--fg&lt;/p&gt;

&lt;p&gt;PS: When deploying, don't forget that you need to authorize the servers ssh key for the GitHub repository you are depending on.&lt;/p&gt;

&lt;p&gt;&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4e68cc7d-1ac4-42d9-995a-343dcbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/zQw9Brh9gW4" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Thu, 08 Sep 2011 14:18:26 +0000</pubDate><comments>http://www.debuggable.com/posts/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</feedburner:origLink></item><item><title>How to fork &amp; patch npm modules</title><link>http://feedproxy.google.com/~r/debuggable/~3/pZZbs73svBE/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</guid><description>&lt;p&gt;With now more than &lt;a href="http://twitter.com/#!/npmjs/status/95573155099324416"&gt;3000 modules&lt;/a&gt;, there are huge gaps in the quality of things you find in the &lt;a href="http://search.npmjs.org/"&gt;npm registry&lt;/a&gt;. But more often than not, it's easy to find a module that is really close to what you need, except if it wasn't for that one bug or missing feature.&lt;/p&gt;

&lt;p&gt;Now depending on who is maintaining this module, you may get the problem resolved by simply opening a GitHub issue and waiting for a few days. However, open source doesn't really work without community, nor do you always want to be at the mercy of someone else. So a much better approach is to actually roll up your sleeves, and fix the problem yourself.&lt;/p&gt;

&lt;p&gt;Here is the proper way to do this while using npm to manage your forked version of the module:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the project on GitHub&lt;/li&gt;
&lt;li&gt;Clone the fork to your machine&lt;/li&gt;
&lt;li&gt;Fix the bug or add the feature you want&lt;/li&gt;
&lt;li&gt;Push your commits up to your fork on GitHub&lt;/li&gt;
&lt;li&gt;Open your fork on GitHub, and click on the latest commit you made&lt;/li&gt;
&lt;li&gt;On the page of that commit, click on the "Downloads" button&lt;/li&gt;
&lt;li&gt;Right click on the "Download .tar.gz" button inside the popup, and copy the link ("Copy Link Address" in Chrome)&lt;/li&gt;
&lt;li&gt;Open up your package.json file, and replace the version number of the module with the url you just copied&lt;/li&gt;
&lt;li&gt;Send a pull request upstream (Optional, but this way you will avoid having to maintain that patch of yours against newer versions of the module you forked)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example: My new &lt;a href="https://github.com/felixge/node-airbrake"&gt;airbrake module&lt;/a&gt; uses a forked version of  &lt;a href="https://github.com/oozcitak/xmlbuilder-js"&gt;xmlbuilder&lt;/a&gt;. I submited my fix as a &lt;a href="https://github.com/oozcitak/xmlbuilder-js/pull/11"&gt;pull request&lt;/a&gt;, but it has not been merged yet. In order to pull in my changes via npm anyway, I simply pointed my &lt;a href="https://github.com/felixge/node-airbrake/blob/master/package.json"&gt;package.json&lt;/a&gt; to the download url of my fork on GitHub like so:&lt;/p&gt;

&lt;p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="code debuggable_sh_js" style="white-space: wrap;white-space: nowrap;"&gt;
&lt;span class="st0"&gt;&amp;quot;dependencies&amp;quot;&lt;/span&gt;: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;request&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;1.9.8&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;xmlbuilder&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;https://github.com/felixge/xmlbuilder-js/tarball/4303eb2650a4b819a980b1dc9d2965862a1e9faf&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;stack-trace&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;0.0.5&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;traverse&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;0.4.4&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;hashish&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;0.0.4&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Alright, let me know if this is helping your node.js adventures, or if you have an alternative workflow you are using. Otherwise, happy hacking!&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;PS: You should upgrade to the latest npm version first, some older versions had problems with handling url dependencies properly.&lt;/p&gt;

&lt;p&gt;&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/pZZbs73svBE" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Tue, 26 Jul 2011 13:15:03 +0000</pubDate><comments>http://www.debuggable.com/posts/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</feedburner:origLink></item><item><title>Node.js Workshop in Cologne, June 10th</title><link>http://feedproxy.google.com/~r/debuggable/~3/7IZ_IEB0gOk/node-js-workshop-in-cologne-june-10th:4dd66beb-ff04-4de9-a490-7c09cbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/node-js-workshop-in-cologne-june-10th:4dd66beb-ff04-4de9-a490-7c09cbdd56cb</guid><description>&lt;p&gt;We apologize for the short notice, but if you are looking to put node.js in production, this full day &lt;a href="http://nodecologne.eventbrite.com/"&gt;node.js workshop&lt;/a&gt; we are organizing is where it's at!&lt;/p&gt;

&lt;p&gt;The workshop is happening on Friday June 10, one day before &lt;a href="http://nodecamp.eu/"&gt;nodecamp.eu&lt;/a&gt;. Space is limited to 15 people and expected to sell out quickly.&lt;/p&gt;

&lt;p&gt;As a reader of our blog, you can get a 15% discount on the regular ticket by using the code &lt;code&gt;'debuggable'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should you attend?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This workshop will teach you everything you need in order to write and deploy powerful node.js applications. We'll try to cover a lot of ground, so if you are interested in any of the following, you should definitly attend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up node.js on your local machine&lt;/li&gt;
&lt;li&gt;Understanding the module system&lt;/li&gt;
&lt;li&gt;Using npm for installing and upgrading modules&lt;/li&gt;
&lt;li&gt;Publishing your own npm modules&lt;/li&gt;
&lt;li&gt;Everything you need to know about http.Server&lt;/li&gt;
&lt;li&gt;Structuring your code using OOP in JavaScript&lt;/li&gt;
&lt;li&gt;Dealing with all the callbacks in a sane fashion&lt;/li&gt;
&lt;li&gt;Using the same code in node.js and the browser&lt;/li&gt;
&lt;li&gt;Building realtime apps with Socket.IO&lt;/li&gt;
&lt;li&gt;Using the express framework&lt;/li&gt;
&lt;li&gt;An overview over testing tools available for node.js&lt;/li&gt;
&lt;li&gt;Deploying node.js to Ec2 / Joyent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first half of the day will be guided by slides (which will be made available afterwards), with the second half being a hands-on session where we will build a small node app from scratch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the instructor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This workshop will be led by &lt;a href="http://twitter.com/#!/felixge"&gt;Felix Geisendörfer&lt;/a&gt; (that's me). He is one of the earliest and most active contributors to node.js, author of over 20 npm modules and also running one of the biggest node.js applications in production over at &lt;a href="http://transloadit.com/"&gt;transloadit.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition, &lt;a href="http://twitter.com/#!/tim_kos"&gt;Tim Koschützki&lt;/a&gt; who is also a co-founder at transloadit, will be available all day to help with individual questions and trouble shooting. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Questions &amp;amp; More Workshop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have additional questions or can't make it to this workshop, please head over to the &lt;a href="http://nodecologne.eventbrite.com/"&gt;workshop page&lt;/a&gt; which has information on other upcoming workshops and questions.&lt;/p&gt;

&lt;p&gt;--fg
&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4dd66beb-ff04-4de9-a490-7c09cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/7IZ_IEB0gOk" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Fri, 20 May 2011 13:26:03 +0000</pubDate><comments>http://www.debuggable.com/posts/node-js-workshop-in-cologne-june-10th:4dd66beb-ff04-4de9-a490-7c09cbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/node-js-workshop-in-cologne-june-10th:4dd66beb-ff04-4de9-a490-7c09cbdd56cb</feedburner:origLink></item><item><title>Why are you not using a SSD yet?</title><link>http://feedproxy.google.com/~r/debuggable/~3/5bCUbhz1lzQ/why-are-you-not-using-a-ssd-yet:4d64ad6f-22d8-4eca-99e8-765acbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/why-are-you-not-using-a-ssd-yet:4d64ad6f-22d8-4eca-99e8-765acbdd56cb</guid><description>&lt;p&gt;If you are a developer, and you have not switched to a SSD yet, what is your excuse?&lt;/p&gt;

&lt;p&gt;Let me explain. I've switched to an SSD a little over a week ago, and it's a different world. You know that feeling of having just bought &amp;amp; setup a new machine and everything still runs very fast? Well, a SSD will make every single day feel just like that, except much faster.&lt;/p&gt;

&lt;p&gt;But I already knew that, so why has it taken me, and apparently you who is reading this, so long?&lt;/p&gt;

&lt;p&gt;Well, my main problem was that I have a few big things on my hard disk, namely music, photos and virtual machine images. This means that I need a hard disk of ~300 GB to work comfortably. However, the SSD I was &lt;a href="http://eshop.macsales.com/shop/internal_storage/Mercury_Extreme_SSD_Sandforce/Solid_State_Pro"&gt;interested in&lt;/a&gt; only comes in 40, 60, 120, 240 and 480 GB. The 480 GB costs ~$1.580 right now.&lt;/p&gt;

&lt;p&gt;A 240 GB SSD costs ~$520 which seems much less outrageous, but unfortunately that's still too small if it was my only disk.&lt;/p&gt;

&lt;p&gt;So for a while, I thought I'd have to wait another 1 - 2 years before enjoying the SSD experience. That was until I came across &lt;a href="http://duncandavidson.com/blog/2010/10/upgraded-laptop"&gt;this article&lt;/a&gt; which explained that you could replace your MacBook Pro's optical drive with an SSD. This means I could add an SSD to my machine without giving up the luxury of cheap mass storage.&lt;/p&gt;

&lt;p&gt;With this in mind, I decided to get a 120 GB SSD, which is plenty of space for my core system and applications. I followed a few youtube videos for swapping out the disks, and I also placed my previous hdd in the optical bay slot since I've heard reports of hibernation problems if you put your primary disk there.&lt;/p&gt;

&lt;p&gt;Making the new SSD my primary hard disk was easy as well. My initial attempt using time machine failed, so I simply booted up my system from the old primary hdd, and used &lt;a href="http://www.bombich.com"&gt;carbon copy cloner&lt;/a&gt; to copy all data (excluding my music, images and vms) to my new SSD. After that I made the SSD my primary boot disk using the "Startup Disk Preference Pane" and rebooted. The whole operation took about 1-2 hours.&lt;/p&gt;

&lt;p&gt;So how has this changed my life? First of all, boot time is incredible. Compared to Tim's mac (which is now scheduled for an upgrade ASAP as well), my machine goes from 0 to starting Photoshop in 48 seconds. Tim's machine takes 2 minutes and 50 seconds. Note: It takes about the same time for both machines to boot the kernel, but my machine is instantly ready at that point now.&lt;/p&gt;

&lt;p&gt;Starting programs is either instant or 2-3 times faster than before. Recursive grep (using &lt;a href="http://betterthangrep.com/"&gt;ack&lt;/a&gt;) is insanely fast / instant, even on big project. And git - it's a different world. If you've ever waited for minutes while running 'git gc' on a big project, an SSD turns this to seconds. Everything feels just incredibly fast.&lt;/p&gt;

&lt;p&gt;With this in mind, what's your excuse for not treating yourself to a SSD now?&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;PS: If you think you would miss your optical drive: You can get an external USB one for ~$40 on Amazon. If you really need the internal one back, I guess it would take you about ~10-15 minutes to put it back in once you know the procedure.&lt;/p&gt;

&lt;p&gt;PPS: If you're worried about the difficulty of replacing the disk: It's very easy, all you need to know is how to operate a screw driver. However, make sure you've got the right tools. The &lt;a href="http://eshop.macsales.com/shop/internal_storage/Mercury_Extreme_SSD_Sandforce/Solid_State_Pro"&gt;OWC disk&lt;/a&gt; I'm recommending comes with a set of tools if you order it with the data doubler for the optical bay.&lt;/p&gt;

&lt;p&gt;PPPS: My friend Joel &lt;a href="https://twitter.com/jperras/status/40536250049888257"&gt;pointed out&lt;/a&gt; the lack of &lt;a href="http://en.wikipedia.org/wiki/TRIM"&gt;TRIM&lt;/a&gt; support in OSX as a reason for not getting an SSD yet. That's a valid argument, but the OWC discs &lt;a href="http://macperformanceguide.com/SSD-RealWorld-SevereDuty.html"&gt;do not suffer&lt;/a&gt; from the lack of TRIM.&lt;/p&gt;

&lt;p&gt;&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4d64ad6f-22d8-4eca-99e8-765acbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/5bCUbhz1lzQ" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Wed, 23 Feb 2011 22:15:01 +0000</pubDate><comments>http://www.debuggable.com/posts/why-are-you-not-using-a-ssd-yet:4d64ad6f-22d8-4eca-99e8-765acbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/why-are-you-not-using-a-ssd-yet:4d64ad6f-22d8-4eca-99e8-765acbdd56cb</feedburner:origLink></item><item><title>Talks, talks, talks</title><link>http://feedproxy.google.com/~r/debuggable/~3/iIN0YR_twzY/talks-talks-talks:4d5e9729-27b0-435c-952a-41decbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/talks-talks-talks:4d5e9729-27b0-435c-952a-41decbdd56cb</guid><description>&lt;p&gt;I've been in Atlanta for the past two weeks, and thanks to the kind help of a few folks, I was able to present at 2 meetups, as well as &lt;a href="http://startupriot.com/"&gt;Startup Riot 2011&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First up was a new talk at the &lt;a href="http://www.meetup.com/atlantaruby/"&gt;Atlanta Ruby Meetup&lt;/a&gt;:&lt;/p&gt;

&lt;div style="width:425px" id="__ss_6974464"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/the_undefined/nodejs-should-ruby-developers-care" title="Nodejs - Should Ruby Developers Care?"&gt;Nodejs - Should Ruby Developers Care?&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse6974464" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nodejs-should-ruby-developers-care-110218095101-phpapp02&amp;stripped_title=nodejs-should-ruby-developers-care&amp;userName=the_undefined" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse6974464" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nodejs-should-ruby-developers-care-110218095101-phpapp02&amp;stripped_title=nodejs-should-ruby-developers-care&amp;userName=the_undefined" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
The talk was an attempt of taking out all the cool-aid and hype and focusing on node's true strength as well as weaknesses. I think the whole thing was very well-received, but I certainly could have done a little better on the delivery.&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="http://felixge.s3.amazonaws.com/11/nodejs-should-ruby-developers-care.pdf"&gt;nodejs-should-ruby-developers-care.pdf (733 KB)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up was the 4th edition of my general introduction talk to node.js:&lt;/p&gt;

&lt;div style="width:425px" id="__ss_6974385"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/the_undefined/nodejs-a-quick-tour-v4" title="Nodejs - A quick tour (v4)"&gt;Nodejs - A quick tour (v4)&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse6974385" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nodejs-a-quick-tour-v4-110218094606-phpapp01&amp;stripped_title=nodejs-a-quick-tour-v4&amp;userName=the_undefined" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse6974385" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nodejs-a-quick-tour-v4-110218094606-phpapp01&amp;stripped_title=nodejs-a-quick-tour-v4&amp;userName=the_undefined" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
This version of the talk was updated for the freshly released v0.4, and I've also tweaked some other slides to the point where I'm very happy with it. It seems to do a great job getting people excited about node, as well as highlighting sensible use cases.&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="http://felixge.s3.amazonaws.com/11/nodejs-a-quick-tour-v4.pdf"&gt;nodejs-a-quick-tour-v4.pdf (610 KB)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And last but not least, I had the chance to do a 3 minute pitch for &lt;a href="http://transloadit.com/"&gt;Transloadit&lt;/a&gt; at &lt;a href="http://startupriot.com/"&gt;Startup Riot&lt;/a&gt;:&lt;/p&gt;

&lt;div style="width:425px" id="__ss_6974507"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/the_undefined/transloadit-at-startupriot" title="Transloadit at Startupriot"&gt;Transloadit at Startupriot&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse6974507" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=transloadit-startupriot-110218095404-phpapp02&amp;stripped_title=transloadit-at-startupriot&amp;userName=the_undefined" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse6974507" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=transloadit-startupriot-110218095404-phpapp02&amp;stripped_title=transloadit-at-startupriot&amp;userName=the_undefined" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
Download: &lt;a href="http://felixge.s3.amazonaws.com/11/transloadit-startupriot.pdf"&gt;transloadit-startupriot.pdf (640 KB)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Doing the actual presentation was quite scary. I have never given a talk this short, you basically don't get any time to warm up and get into things. You got to go out, and give your best right away. Having an audience of ~500 people didn't help either.&lt;/p&gt;

&lt;p&gt;However, I think I pulled it of fairly well. My main message was: "Save the time, save the money, save the shrink - use transloadit", and I highlighted some of the cooler aspects of our service such as the &lt;a href="http://transloadit.com/blog/2010/12/realtime-encoding-over-150x-faster"&gt;realtime encoding&lt;/a&gt;. Lots of people came by to our table afterwards to find out more about the service, including a few VCs and angels (we're not looking for investment right now, but seeing their interest feels good regardless : ).&lt;/p&gt;

&lt;p&gt;There are a few more talks coming up in the next couple of months, but I also hope to find some more time for actual blogging again. I certainly want to start writing a few articles about testing JavaScript.&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4d5e9729-27b0-435c-952a-41decbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/iIN0YR_twzY" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Fri, 18 Feb 2011 15:58:33 +0000</pubDate><comments>http://www.debuggable.com/posts/talks-talks-talks:4d5e9729-27b0-435c-952a-41decbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/talks-talks-talks:4d5e9729-27b0-435c-952a-41decbdd56cb</feedburner:origLink></item><item><title>Slides: Node.js in production</title><link>http://feedproxy.google.com/~r/debuggable/~3/V5XKGdvh0BY/slides-node-js-in-production:4d39b9a4-e250-4ba3-85d4-6388cbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/slides-node-js-in-production:4d39b9a4-e250-4ba3-85d4-6388cbdd56cb</guid><description>&lt;p&gt;Last night I was giving a talk about node.js in production at the &lt;a href="https://groups.google.com/forum/#!forum/js-berlin"&gt;Berlinjs user group&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the talk I shared some of our experiences at &lt;a href="http://transloadit.com/"&gt;Transloadit&lt;/a&gt;, but also tried to cover the topic from a general angle.&lt;/p&gt;

&lt;p&gt;I concluded that running node apps in production comes with certain challenges, most notably the lack of useful stack traces when things go wrong. But that's something Ryan is working on, and a little unit testing can go a long way to avoid most bugs : ).&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="http://felixge.s3.amazonaws.com/11/nodejs-in-production.pdf"&gt;nodejs-in-production.pdf&lt;/a&gt;&lt;/p&gt;

&lt;div style="width:425px" id="__ss_6654948"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/the_undefined/nodejs-in-production" title="Node.js in production"&gt;Slideshare: Node.js in production&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse6654948" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nodejs-in-production-110121104128-phpapp02&amp;stripped_title=nodejs-in-production&amp;userName=the_undefined" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse6654948" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nodejs-in-production-110121104128-phpapp02&amp;stripped_title=nodejs-in-production&amp;userName=the_undefined" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/the_undefined"&gt;Felix Geisendörfer&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Let me know if you have any questions!&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4d39b9a4-e250-4ba3-85d4-6388cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/V5XKGdvh0BY" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Fri, 21 Jan 2011 16:51:48 +0000</pubDate><comments>http://www.debuggable.com/posts/slides-node-js-in-production:4d39b9a4-e250-4ba3-85d4-6388cbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/slides-node-js-in-production:4d39b9a4-e250-4ba3-85d4-6388cbdd56cb</feedburner:origLink></item><item><title>Node.js Artikel im t3n Magazin</title><link>http://feedproxy.google.com/~r/debuggable/~3/59pzudHSTiw/node-js-artikel-im-t3n-magazin:4cf36ff6-6c50-434f-98de-24bdcbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/node-js-artikel-im-t3n-magazin:4cf36ff6-6c50-434f-98de-24bdcbdd56cb</guid><description>&lt;p&gt;In der aktuellen &lt;a href="http://t3n.de/magazin/t3n-nr-22-mobile-hype/"&gt;Ausgabe des t3n Magazins&lt;/a&gt; gibt es einen von mir verfassten Artikel zum Thema node.js:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Schubrakete für JavaScript - Wie Node.js JavaScript auf dem Server revolutioniert&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://static.debuggable.com.s3.amazonaws.com/img/t3n-nodejs-artikel.jpg"&gt;&lt;/p&gt;

&lt;p&gt;Der Artikel richtet sich vor allem an komplette Neulinge, eignet sich von daher aber super um mit dem noch ein oder anderen skeptischen Kollegen ins Gespräch zu kommen.&lt;/p&gt;

&lt;p&gt;Für alle die an einer kostenlosen Ausgabe des Heftes interessiert sind: Einfach &lt;a href="http://twitter.com/felixge/status/9178762415443968"&gt;den link&lt;/a&gt; re-tweeten und mir dann eine &lt;a href="mailto:felix@debuggable.com?subject=T3N"&gt;E-Mail schicken&lt;/a&gt;. Die ersten 3 tweets bekommen ein Exemplar per Post.&lt;/p&gt;

&lt;p&gt;--fg
&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4cf36ff6-6c50-434f-98de-24bdcbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/59pzudHSTiw" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Mon, 29 Nov 2010 09:31:48 +0000</pubDate><comments>http://www.debuggable.com/posts/node-js-artikel-im-t3n-magazin:4cf36ff6-6c50-434f-98de-24bdcbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/node-js-artikel-im-t3n-magazin:4cf36ff6-6c50-434f-98de-24bdcbdd56cb</feedburner:origLink></item><item><title>Test driven development at Transloadit</title><link>http://feedproxy.google.com/~r/debuggable/~3/onN9d_jziao/test-driven-development-at-transloadit:4cc892a7-b9fc-4d65-bb0c-1b27cbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/test-driven-development-at-transloadit:4cc892a7-b9fc-4d65-bb0c-1b27cbdd56cb</guid><description>&lt;p&gt;You have probably heard a few talks or read a few articles where test driven development is depicted as a magic unicorn that watches over your software and makes everybody happy. Well, about 18.000 lines of "magic unicorn" code later, I'd like to put things into perspective.&lt;/p&gt;

&lt;p&gt;The truth is, test driven development is a huge pain in the ass. Writing those damn tests all the time takes a huge amount of discipline, and it doesn't really get a whole lot easier with time.&lt;/p&gt;

&lt;p&gt;But do you know what sucks more? The liability that comes without those tests.&lt;/p&gt;

&lt;p&gt;Let me clarify. I'm not trying to tell you that you should practice test driven development. What I will try to do however, is to give you a realistic idea about the work it takes and the kind of benefits you get from it.&lt;/p&gt;

&lt;p&gt;At this point I basically think of test driven development as an insurance policy. It guarantees that your software will have a certain pre-defined quality mostly measured by the amount of bugs and the risks of changing the software. It can also reduce the costs of your main developer getting run over by a bus, or the &lt;a href="http://transloadit.com/blog/2010/04/to-launch-or-not"&gt;same thing&lt;/a&gt; happening to the API of the platform you are building on.&lt;/p&gt;

&lt;p&gt;However, there are also millions of people on this planet that live without any insurances whatsoever, so clearly this is not the only way of getting from point A to B. It all depends on your liability and how you can / want to deal with it.&lt;/p&gt;

&lt;p&gt;At &lt;a href="http://transloadit.com/"&gt;Transloadit&lt;/a&gt; 100% of our code is developed test driven. The main reason for that is that we are building on node.js which still is a very risky technology at this point and probably our biggest liability and advantage at the same time. Another big risk are third party tools such as ffmpeg and image magick that are insanely dangerous to upgrade since they love to change APIs and behavior all the time. And last but not least, some of the stuff we are doing is rather complex.&lt;/p&gt;

&lt;p&gt;Now let me explain how test driven development lets us deal with those risks. First of all, new features always start out as a system test. Each system test boots up the entire REST service, sends an actual HTTP request to it, and evaluates the response as well as the files that were created in the process. Files are verified by looking at their meta data, as well as performing visual diffs on images against expected fixtures. For videos we are using thumbnails to do the visual comparisons.&lt;/p&gt;

&lt;p&gt;Once that test is written (and failing), we start writing unit tests. Let me explain what we mean by "unit". A unit to us is the tiniest atomic piece of functionality we can possibly test. As soon as there is a function call, creation of a class, or even a callback closure - we stub it. Everything that can be isolated and tested separately is handled by itself. As you can imagine, that's the part where the pain and discipline come in.&lt;/p&gt;

&lt;p&gt;However, there is a certain undeniable beauty resulting from it. Writing those tests feels like proofing mathematical theorems. Every step is just small enough to be broken down to raw logic. Everything builds upon the previous step. There is no need to test all numbers in between 1 - 1000000, unless there is a logical reason for expecting a different result. &lt;/p&gt;

&lt;p&gt;Of course there is a good chance of you going crazy in the process and losing track of the original goal. That's where the system test comes to rescue. Whenever you don't know what needs to be done next, you simply run the system test and it will tell you what's missing.&lt;/p&gt;

&lt;p&gt;Is this process perfect? No. We have had a few bugs here and there, but I can still count them on two hands. Last weekend we pushed a rather insane change into production: We replaced our underlaying MySql driver (we were using that of PHP, don't ask how that worked) with node-mysql. I've been working on &lt;a href="http://github.com/felixge/node-mysql"&gt;node-mysql&lt;/a&gt; with the same care and &lt;a href="http://github.com/felixge/node-mysql/tree/master/test/"&gt;TDD-masochism&lt;/a&gt; as we have on transloadit, so the update went without a single hickup (so far). Not bad for a change that involved 6000 lines of code.&lt;/p&gt;

&lt;p&gt;And that's it. Our service is not necessarily better than our competitors' because we use TDD. However, our risk of breaking things is much smaller, and we can perform heart-surgeries like this without breaking a sweat. This gives us the confidence to charge money, and the ability to spend the rest of our limited resources (we are bootstrapping) on innovative new features rather than dealing with the shortcomings of our software all the time.&lt;/p&gt;

&lt;p&gt;So, is TDD right for you? It depends. Writing code the TDD way requires a ton of discipline, and the unicorns aren't always around to make you feel better.  So make sure you have good reasons to do it. Sometimes a few system tests can get you 80% of the results for 20% of the work. Other times you need the remaining 20%. Also keep in mind that we're lucky at Transloadit for using a flexible language and most of our interfaces are JSON. This makes testing cheaper for us than it might be for you.&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;PS: If I find some more time, I'd love to go into more details of our node.js unit testing. Leave a comment if you're interested. Meanwhile make sure to check out the &lt;a href="http://github.com/felixge/node-mysql/tree/master/test/"&gt;tests for node-mysql&lt;/a&gt;, they are done exactly like our internal tests.
&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4cc892a7-b9fc-4d65-bb0c-1b27cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/onN9d_jziao" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Thu, 28 Oct 2010 12:23:53 +0000</pubDate><comments>http://www.debuggable.com/posts/test-driven-development-at-transloadit:4cc892a7-b9fc-4d65-bb0c-1b27cbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/test-driven-development-at-transloadit:4cc892a7-b9fc-4d65-bb0c-1b27cbdd56cb</feedburner:origLink></item><item><title>Node.js slides from @rug_b meetup last night</title><link>http://feedproxy.google.com/~r/debuggable/~3/tKRVRx1G01Y/node-js-slides-from-rug_b-meetup-last-night:4caed576-763c-41aa-9d70-6c06cbdd56cb</link><guid isPermaLink="false">http://www.debuggable.com/posts/node-js-slides-from-rug_b-meetup-last-night:4caed576-763c-41aa-9d70-6c06cbdd56cb</guid><description>&lt;p&gt;Last night I had the honor of speaking about node.js in front of Berlin's ruby community at the &lt;a href="http://twitter.com/rug_b"&gt;@rug_b&lt;/a&gt; user group meetup.&lt;/p&gt;

&lt;p&gt;The meeting was well attended (~50 geeks), but &lt;a href="http://www.wooga.com/"&gt;wooga&lt;/a&gt; did a great job hosting the event and even let us use their main room after it became clear that we couldn't fit everybody in the initial room.&lt;/p&gt;

&lt;p&gt;The slides of my talk are available on &lt;a href="http://www.slideshare.net/the_undefined/nodejs-aquicktourv3"&gt;slideshare&lt;/a&gt; and as a &lt;a href="http://felixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf"&gt;pdf download&lt;/a&gt;. For those of you who have seen the &lt;a href="http://www.slideshare.net/the_undefined/nodejs-a-quick-tour-ii"&gt;previous version&lt;/a&gt; of the talk, this is a very much updated version. Basically I had to replace all previous "The Future" slides with new content since node has implemented all of those things by now : ).&lt;/p&gt;

&lt;p&gt;Anyway, Tim and I had a great time talking to everybody and also enjoyed the other talks about Mongrel2 and Phusion Passenger 3.&lt;/p&gt;

&lt;p&gt;--fg
&lt;img style="display: none;" src="http://www.debuggable.com/posts/tick/4caed576-763c-41aa-9d70-6c06cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/tKRVRx1G01Y" height="1" width="1"/&gt;</description><author>felix@debuggable.com</author><pubDate>Fri, 08 Oct 2010 08:25:26 +0000</pubDate><comments>http://www.debuggable.com/posts/node-js-slides-from-rug_b-meetup-last-night:4caed576-763c-41aa-9d70-6c06cbdd56cb</comments><feedburner:origLink>http://www.debuggable.com/posts/node-js-slides-from-rug_b-meetup-last-night:4caed576-763c-41aa-9d70-6c06cbdd56cb</feedburner:origLink></item></channel></rss>

