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

  <title><![CDATA[Voodoo Tiki God]]></title>
  <link href="http://voodootikigod.github.com/atom.xml" rel="self"/>
  <link href="http://voodootikigod.github.com/"/>
  <updated>2013-02-16T21:17:31-05:00</updated>
  <id>http://voodootikigod.github.com/</id>
  <author>
    <name><![CDATA[Chris Williams]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[NodeCopter Lounge at CascadiaJS]]></title>
    <link href="http://voodootikigod.github.com/nodecopter-lounge-at-cascadiajs-32492/"/>
    <updated>2012-11-20T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/nodecopter-lounge-at-cascadiajs-32492</id>
    <content type="html"><![CDATA[<p><a href="https://a248.e.akamai.net/camo.github.com/89da77cf31ada14e8e9a44e6747c5bfc55fe7d6c/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f6e6f6465636f707465722e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/89da77cf31ada14e8e9a44e6747c5bfc55fe7d6c/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f6e6f6465636f707465722e6a7067" alt="&quot;NodeCopter Logo&quot;" style="" /></a></p>
<p>With the gracious support from <a href="http://aka.ms/cascadiajs">Microsoft Windows Azure</a>, <a href="http://twitter.com/mattpodwysocki">Matt Podwysocki</a> and I (<a href="http://twitter.com/voodootikigod">Chris Williams</a>) were able to create a great little &#8220;Intro to NodeCopter&#8221; lounge event over the two days of <a href="http://cascadiajs.com/">CascadiaJS</a>. Set up just outside the main room of the event, we had two Parrot ARDrones available for individuals to run through some test flights. In total we were able to allow almost 45 people fly the drones over the course of the two days with almost everyone in attendance at least stopping by to see what was going on. We had several individuals sit down and start to dabble with the available hardware to extend or start new projects with the NodeCopters.</p>
<p><a href="https://a248.e.akamai.net/camo.github.com/e0f2817b1424d7adcc3a201742f7efbee21bafc9/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f636f7074657273666c79696e672e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/e0f2817b1424d7adcc3a201742f7efbee21bafc9/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f636f7074657273666c79696e672e6a7067" alt="&quot;NodeCopters in flight&quot;" style="" /></a><a href="https://a248.e.akamai.net/camo.github.com/2789fdb34c09ef40b3e4bdc387e703ca25228e00/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f636f7074657273666c79696e67322e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/2789fdb34c09ef40b3e4bdc387e703ca25228e00/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f636f7074657273666c79696e67322e6a7067" alt="&quot;SKYNET ATTACKS&quot;" style="" /></a></p>
<p>One of the more successful projects during the conference was to start the evolution of the previously built <a href="http://github.com/voodootikigod/wii-drone">wii-drone</a> from an <a href="http://arduino.cc/">arduino</a> microcontroller system over to a more encapsulating <a href="http://www.raspberrypi.org/">Raspberry Pi</a> based system. Another project that garnered a lot of interest, but is still in process was <a href="http://twitter.com/rwaldron">Rick Waldron</a>&#8217;s efforts to get the <a href="http://github.com/rwldrn/johnny-five">Johnny-Five</a> and <a href="http://github.com/voodootikigod/node-serialport">node-serialport</a> libraries to operate with the Arduino Leonardo boards. While not strictly a traditional NodeCopter event, the lounge provided a great place to discuss interesting and novel ways of using JavaScript to interact with the real world.</p>
<p><a href="https://a248.e.akamai.net/camo.github.com/bc44428ebc177fa669eae91df27b16d82b04479f/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f636f707465722e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/bc44428ebc177fa669eae91df27b16d82b04479f/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f636f707465722e6a7067" alt="&quot;Ready for Hacking&quot;" style="" /></a><a href="https://a248.e.akamai.net/camo.github.com/a9aa1b6d3e1a5fc1460d6920b37b473cd583ac91/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f70617274732e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/a9aa1b6d3e1a5fc1460d6920b37b473cd583ac91/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f70617274732e6a7067" alt="&quot;Living in a hardware hacker's paradise&quot;" style="" /></a><a href="https://a248.e.akamai.net/camo.github.com/fe2a800e9f0a7ee95ba521dc49a235b6b901e934/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f70692e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/fe2a800e9f0a7ee95ba521dc49a235b6b901e934/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f70692e6a7067" alt="&quot;Parts used for the RaspPi port of wii-drone&quot;" style="" /></a></p>
<p>In summary, we are happy to report that the event overall was a huge success with many individuals primed and ready for their first, full-fledged NodeCopter event. The lounge style provided a nice, &#8220;walk-up&#8221;, and low-commitment variation of the NodeCopter event and afforded some amazing conversations in the process.</p>
<p><a href="https://a248.e.akamai.net/camo.github.com/983b1d22b62c8e4bebb7e1c334afd2c7808dac4d/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f746f706f666c6f756e67652e6a7067" target="_blank"><img src="https://a248.e.akamai.net/camo.github.com/983b1d22b62c8e4bebb7e1c334afd2c7808dac4d/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f746f706f666c6f756e67652e6a7067" alt="&quot;The View from the top of the NodeCopter Lounge&quot;" style="" /></a></p>
<p>More pictures available from Matthew Bergman (<a href="http://www.flickr.com/photos/matthewbergman/sets/72157631964193614">link</a>) and the <a href="http://skydrive.live.com/?cid=EE519AE301B7731D&amp;id=EE519AE301B7731D%21107">CascadiaJS SkyDrive</a></p>
<p>Once again, a HUGE THANK YOU for supporting us to</p>
<p><a href="http://aka.ms/cascadiajs"><img src="https://a248.e.akamai.net/camo.github.com/bd5d31a7440bd16419946ec0479ea68c1e957880/687474703a2f2f6e6f6465636f7074657263617363616469612e73332e616d617a6f6e6177732e636f6d2f57696e417a7572655f7267625f426c75653238365f442e706e67" alt="Windows Azure" style="" /></a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[JSConf US 2013 Call for Speakers]]></title>
    <link href="http://voodootikigod.github.com/jsconf-us-2013-call-for-speakers/"/>
    <updated>2012-10-31T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/jsconf-us-2013-call-for-speakers</id>
    <content type="html"><![CDATA[<p>As part of our on-going <a href="http://www.voodootikigod.com/a-jsconf-reflection">reinvention of JSConf</a>, we are going to break our <a href="http://www.voodootikigod.com/how-i-pick-speakers-for-jsconf">single, most sacred rule</a>, if you have spoken at a JSConf, it is nearly impossible to speak again at a JSConf. Over the past four years of JSConf events, we have spotlighted individuals that would otherwise never get a stage. We have given a platform for risky, crazy, and amazing things to flourish into even bigger, more widely-known products, ideas, and libraries. Many of the brightest things in JS over the last five years have their roots deeply engrained with JSConf and this is something we take incredible pride in. We push ourselves each year to take riskier and riskier speakers because they define the discussion about JS over the next year or years. Unlike other events, attendees do not come to JSConf to learn JS, they come to have their minds blown about what they had never conceived JS could accomplish. If you would like some examples of technologies and ideas first presented at JSConf, here are just a handful:</p>
<ul>
<li>PhoneGap</li>
<li>Cappuccino</li>
<li>Node.js</li>
<li>Appcelerator</li>
<li>Yahoo! Mojito</li>
<li>WaterBear</li>
<li>Sashimi</li>
<li>Gordon</li>
<li>PDF.js</li>
<li>Cloud9</li>
<li>Firefox OS</li>
<li>YepNope</li>
<li>Fab</li>
<li>Google Traceur</li>
<li>Three.js Editor</li>
<li>Jed Schmidt</li>
</ul>
<p>The list continues further and makes all of us that help put JSConf on grin from ear to ear. Our aggressive self-dedication to spotlighting the next generation of ideas has been something fundamental to everything we do. It is specifically for this reason that we are going to break our golden rule.</p>
<p><strong><span style="font-size: x-large;">Homecoming</span></strong></p>
<p>Given that the theme of this year&#8217;s JSConf US is &#8220;5th Year Family Reunion&#8221;, we want to try out a different format for speaker selection. We are splitting JSConf US 2013 into two main speaking days split by a day of small group activities (more on that later). The first day will play host to presentations by community selected alumni JSConf US speakers. We have <a href="https://docs.google.com/spreadsheet/viewform?formkey=dGFrYTZZNEpVWkI3QVdXMi1KUldGTlE6MQ">opened up voting for you to specify your preference</a> on which of the alumni speakers from 2009 - 2012 should be invited back to speak again on the JSConf stage. The voting will remain open until Friday, November 30th at 12:00PM EST in order to allow time for everyone to participate. During the following week, we will tabulate the votes and send out invitations to the lucky alumni speakers.</p>
<p><strong style="font-size: x-large;">A Blended Approach</strong></p>
<p>We still want to retain the our traditional speaker selection process, continuing our trend of spotlighting new ideas. As such, we have <a href="https://docs.google.com/spreadsheet/viewform?formkey=dHJ5SXJSNUhpeTA4eEE1b216amoxaGc6MA">opened up a more traditional Call for Speakers form</a> that will remain open until Friday, November 30th at 12:00PM EST. As we have always done, we are seeking out new ideas and concepts that push the boundaries of JS and the JS community. We welcome strange and unusual presentations as long as they remain within the boundaries of our well established <a href="http://jsconf.com/codeofconduct.html">Code of Conduct</a>. We are looking for talks focused on all parts of JS, including but not limited to:</p>
<ul>
<li>Data Management</li>
<li>Web Security</li>
<li>MVC Frameworks</li>
<li>Server Side JS</li>
<li>Compile to JS Languages/JSVM</li>
<li>Mobile Web</li>
<li>Future of JS</li>
<li>Education and Outreach of Computer Programming</li>
</ul>
<p>Last year we tried a new approach, what we called an &#8220;inverse call for speakers&#8221;. We are going to do that this year along with a traditional call for speakers. If you want to nominate a person and idea that you would like to see, you can submit that as well with the form above. If you are are the person submitting yourself, which is completely cool and encouraged, please mark your submission as &#8220;this is me&#8221;, so we can write you back if your submission is or is not accepted.</p>
<p>As we have done from the very start of JSConf, we cover full transportation costs (within reason, no first class all the way, unfortunately), admission to JSConf, and all of your lodging costs. We do this so you can provide an amazing presentation with a relaxed and refreshed outlook and attitude. There is zero risk in submitting yourself and people you admire to speak, so go ahead and throw in!</p>
<p><strong><span style="color: #000000; font-size: x-large;">Training Included</span></strong></p>
<p>We understand that people attend JSConf for a wide variety of reasons, whether it is to build deep relationships, be part of the next generation of JS, or to learn JS and all it has to offer. Historically, we have, admittedly, not focused on that last item and this has caused confusion and frustration with some attendees that arrive with a different expectation. This is probably the single biggest modification we are doing as part of JSConf US 2013. Training will be provided as an isolated, parallel track. Trainings will be provided for free in 1 or 2 hour blocks (allocation based on topic complexity) that align against the main track&#8217;s schedule. We will try to schedule this track as carefully as possible to avoid the &#8220;I want to be in two tracks at the same time&#8221; problem, but unfortunately that might happen. We are seeking individuals and/or organizations with a proven track record of providing best-of-breed training to conduct these segments. If you are ready to help educate JS developers at JSConf, please email us at <a href="mailto:training@jsconf.us">training@jsconf.us</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A JSConf Reflection]]></title>
    <link href="http://voodootikigod.github.com/a-jsconf-reflection/"/>
    <updated>2012-10-26T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/a-jsconf-reflection</id>
    <content type="html"><![CDATA[<p>Hi, this is <a href="http://www.twitter.com/voodootikigod">Chris</a> and <a href="http://www.twitter.com/lwilliams">Laura</a> Williams. We started JSConf as a complete and total accident in the winter months of 2008, just a couple months after our wedding. When we created the first JSConf we had little idea of how to put on a technical conference and we would be the first to admit it. We took stock of all the events, both technical and otherwise, we had been to and listed out what worked and what failed. The most common and important element we noticed was that our favorite items were always personal expressions of the people planning the event. We knew we wanted to curate an experience more than just an event. We wanted to act like hosts more so than organizers. We went through many harrowing things in order to pull off the very first event, things that we have since tried extremely hard to prevent other <a href="http://www.mikealrogers.com/posts/the-business-of-conferences.html">new conference organizers</a> from repeating our troubles or worse. From the beginning, we wanted one thing as an outcome of JSConf: there to exist a vibrant, positive, and growing family of individuals that use the JS language.</p>
<p>Over the years that have followed, we have pushed the boundaries of what a conference should and could be. We always remained focused on presenting the conference as a personal expression of what we would want to share with our attendees. We selected cities where we had some of our most memorable experiences. We selected social activities that highlighted some of our favorite or most amazing nights, the kind that unless you had led our life you might never have had the opportunity to experience.&nbsp;</p>
<p>Each year we would put in tireless nights, many heated discussions, and toiled over otherwise mundane details on ways we could share something even more amazing with you. We mention regularly that JSConf is an experiment and we deeply mean this, we have tried our best to never rest on our laurels and test out new possibilities, new ways of creating an event, and new concepts.&nbsp;</p>
<p>We have always retained some core concepts, the most fundamental of which was to always focus on the human social development aspect of the event. The secondary was to always indulge every attendee well beyond that which they have paid. The third was to always treat attendees, staff, sponsors, and speakers with the utmost of respect and appreciation. These things make a huge difference in how the event runs, obviously, but also about how the experience evolves. Every event has always resulted in attendees, speakers, and sponsors coming up and showing a huge amount of appreciation for our efforts. What is even more striking is that venue staff and vendors we work with even go so far as to make it abundantly known that our group is one of the most kind, considerate, and easy to work with out there. We try to be humble, but this is one of our most proud acheivements in curating JSConf. It makes us even more proud that this respectful curation spirit has carried on in the events that have spawned from JSConf.</p>
<p>So after all of the years and the more than double-digit number of events we have been a part of organizing, we have learned a tremendous amount and have experienced a lifetime&#8217;s (or more) worth of joy and frustration in executing these events. At the end of this year&#8217;s JSConf US 2012, something happened that rocked our world and our immediate reaction was that all of the effort, complexity, and stress on our growing family wasn&#8217;t worth it. The determinal effects of negativity that are not only common, but rampant on the Internet had pretty much put an end to our desire to create anything further for the JS or any other technical community.&nbsp;</p>
<p>You see, running these conferences isn&#8217;t our job, we each run our own successful business as our primary jobs. Also these conferences, while sometimes feeling like our baby, aren&#8217;t in fact our baby, we have one that is constantly growing into a wonderful engineer despite being only 2. Over time, we came to terms with what happened in different ways. At first, the terms were to take JSConf down the same path, but even bigger and bolder. We had a grand plan of hosting a JSConf in New York City and going full tilt, nothing held back, making a spectacle using the same core principles that had drawn so much focus over the last 4 years. Then something happened, we found out that we were having another child due right around the normal time we hold JSConf US.&nbsp;</p>
<p>This changed something in both of us. For Chris it made him realize that the reason JSConf was such a target was its own success and also that the conference model we had helped established had taken root and become widely spread. If you look out at the conference landscape, the number of JS events that are inspired by or simply utilize the JSConf model is astounding, something we had never stepped back and looked at. An unforeseen result of giving everything away and helping others is that things start looking like your event, this is not necessarily a bad thing - just an observation. When we started JSConf, the landscape was tremendously different. We, a conference with a high focus on human social, were a rare breed. The only other conference we know of that did anything close was our inspiration, RubyFringe. There obviously have to be others, but to our knowledge and experience at that time it was a relatively short list. This started our wheels turning and we started thinking of a different concept for what a technical conference could be. Something different that would appeal to and include all interests and preferences. Something that would resolve some of the lingering issues we experience with our own events. A different event that would cure the last remaining complaints about JSConf, something that both took advantage of all the wonderful things we now know AND yet establishes something completely different. A fresh restart.</p>
<p>When looking for venues, we looked to keep the date close to previous years in order to maintain consistency and distance from other JSConf around the world. Since we were having the baby also during that time, it meant we had to do something back in the Washington DC area in order to reduce stress on our family. Unfortunately, all of the venues of size for a current JSConf in the DC area meant we would have to have a hotel room rate of in excess of $300 OR be within 3 weeks of the planned birth of our new baby. Neither of which was an acceptable solution for the event or us. As a chance, we requested a bid from the wonderful resort that Laura&#8217;s family spends Christmas and we occassionally spend our summer vacation at, <a href="http://www.omnihotels.com/FindAHotel/AmeliaIsland.aspx">Amelia Island, Florida</a>. To our surprise, they were able to accomodate us at a room rate of $199/night for beach front hotel rooms AND host our event a full 3 months after the planned birth of our child AND provide enough space to pull of our new concept. Impossibly, we had found something that worked for our multivariable equation of a new conference model, while affording our family the space it requires.</p>
<p>We wanted to share all of this, because it is easy to forget when attending a conference that real people with real feelings and real families and friends are running these events. They are doing their hardest to produce something for the community out of good will. Technical conferences are not community events, they are events put on FOR the community by a handful of individuals at their own personal risk. If tickets don&#8217;t sell, as happened our first year, they have to put up the house (if they have one), their car (if they have one), and their savings (if they have any) as collateral to make this happen. At best, conferences are an individual or a group of individuals perspective on what they believe would be appreciated by the community at their own personal risk.&nbsp;</p>
<p>As for what JSConf US 2013 will look like, stay tuned. This year, we are trying to share more about the process we go through in order to make JSConf happen. We hope this helps others in creating different events and allows those of you who don&#8217;t run events to see just what it takes to run an event. We are tremendously excited about our new concept for a conference and are pretty sure you will be just as excited as we roll out details.&nbsp;</p>
<p>&nbsp;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[NodeBots - The Rise of JS Robotics]]></title>
    <link href="http://voodootikigod.github.com/nodebots-the-rise-of-js-robotics/"/>
    <updated>2012-07-13T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/nodebots-the-rise-of-js-robotics</id>
    <content type="html"><![CDATA[<p>On September 7, 2010, I committed the very first implementation of <a href="https://github.com/voodootikigod/node-serialport">node-serialport</a> with a disclaimer in the README of &#8220;do not use&#8221;. I had extracted the library from a larger project for communicating to various wireless spectrums (open and propertiary, think <a href="http://www.x10.com/homepage.htm">X10</a>) for physical monitoring via sensors. Originally, I was using the very robust and established <a href="http://pyserial.sourceforge.net/">pyserial</a> library to much success, but something about the way I was interacting with my sensors through pyserial felt awkward to me. I will openly admit that this feeling was more than anything due to me than any misgiving from the library as it is a great library.</p>
<p>It was actually during this time that the JSConf EU team was soliciting topics for presentation and one from <a href="http://twitter.com/nonken">Nikolai Onken</a> and <a href="http://twitter.com/bassistance">J&ouml;rn Zaefferer</a> of <a href="http://www.uxebu.com">Uxebu</a> popped up about <a href="http://www.slideshare.net/nonken/robotic-javascript">Robotic JavaScript</a>. In the proposal, they pitched that the thesis of their talk would be creating a world in which controlling devices could be as simple as:</p>
<div class="CodeRay">
  <div class="code"><pre>$(&quot;livingroom&quot;).bind(&quot;motion&quot;, function() {
  $(this).find(&quot;lights&quot;).brightness(&quot;75%&quot;).dimAfter(&quot;120s&quot;);
});</pre></div>
</div>

<p>Now, that struck a (good) nerve for me.</p>
<p>By modeling real world objects and actions as chainable, evented processes felt almost natural. For my specific use case, I was using the serial port as a response handler, the perfect example of this is &#8220;When the front door opens, toggle all lights&#8221;. The close similarity to jQuery had the added benefit that as we increased in size, we wouldn&#8217;t need a hardcore programmer that understood serial ports AND Python, but just JavaScript and a rough comprehension of jQuery. I felt like there was something worthwhile here and so I sat down to code.</p>
<p>While programming the first revision of node-serialport I realized a couple amazing things that I wanted to share. I see the same questions every single time someone posts a new project using node-serialport to the world and I would like to provide my perspective of the answers. I prefer to use node.js for programming arduinos, wireless stacks, printers, toasters, etc. (anything through the serial port), for some very definitive reasons the most direct reason is simplicity. The node module system and the very thin native bindings allows me to develop new low level functionality very swiftly without having to involve too much node specific code segments. This also affords me, the library maintainer, the ability to leverage the larger world of knowledge about how to program, debug, and test serial ports directly and not have to spend days working on getting it to work with node.js. The layer to connect straight C++ code with node.js is so thin, it is nearly trivial to implement (and implement properly) which is why I fell in love with it. I know people have a similar love (or strong hate) for Python and Ruby&#8217;s native binding, but, personally, am of the opinion that the syntax similarities between C and JavaScript make it a lot smoother of a process for mentally visualize the binding despite spanning two languages. If you look at the low level C++ of node-serialport you can probably fully understand it even if you have only ever programmed JavaScript. That can both be powerful and wrought for confusion, admittedly, but for me it just clicked and made writing the low level serial port code an absolute joy. Your mileage may vary, but at least it is worth investigating.</p>
<p>Once the low level code was written, one of the main reasons I have continued to develop on top of node.js for my serial port needs is that desire to programmatically describe my problem domain in a manner that fits it. As mentioned, my system, and most systems using node-serialport (arduino, etc), are inherently reactionary in that they wait for some event or data and then do some thing. This is arguably JavaScript&#8217;s bread and butter, it is how most people are trained already to think when they think in node and JavaScript. Can this be done in other languages, sure, but the simplicity of the implementation all the way up from the low-level C++ to the interfacing code to even the event handling makes for something very capable and very understandable with little effort. In the recent comments about the awesome <a href="http://glench.com/make/nodejs-robot/">node.js wifi-extending robot</a>, an individual asked <a href="http://news.ycombinator.com/item?id=4235645">why not clojure or scala or python or ruby</a> and my most direct answer is that the volume of code to create the reactionary system (including eventmachine/twisted/redis/pubsub/etc) quick grows beyond simple hobbyist experimentation. And lets be completely honest here, at least for now - arduino, x10, raspberry pi, etc are all at best in the hobbyist domain especially under the context of &#8220;software developers playing with hardware&#8221;. I would actually apply the theory of increasing developer happiness from Ruby as the reason to use node.js for building robot PROTOTYPES. It is lightweight, simple, and easy to make complex reactionary systems with little effort. Best of all it is JavaScript, so you have no risk of falling madly in love with your initial prototype and will eventually rewrite in something &#8216;more production-worthy&#8217;. Or not.</p>
<p>As an example of how lightweight node.js hardware development can be, I would offer up the amazing work done by Rick Waldron in Johnny-Five, take a look at the source code for <a href="https://github.com/rwldrn/johnny-five/blob/master/eg/accelerometer.js">processing events from an acceleromator</a> it is easily readable, understandable and just over 10 lines of code. <a href="https://github.com/rwldrn/johnny-five/blob/master/eg/servo.js">Controlling a servo</a>, also just over 10 lines of code and just as readable and comprehensible. With node-serialport and <a href="https://github.com/jgautier/firmata">firmata</a> (which kicks butt, props to Julian Guatier) the physical world is an oyster for JS developers, if you don&#8217;t believe, three of the best presentations at NodeConf 2012 were ones using node.js to <a href="http://2012.nodeconf.com/theatre/rick_waldron.html">control physical devices</a>. Also&nbsp;<a href="https://dl.dropbox.com/u/3531958/nodeconf/index.html">review his slides</a>.</p>
<p>When I look at all the people working with node-serialport, the one thing I see across the board is that the &#8220;ease&#8221; of programming JavaScript, the evented model, and how real world devices exist and operate &#8211; all of that seems to blend nicely. Another fine example is the <a href="http://vimeo.com/34575470">tmpad</a>, a DIY MIDI pad from Elijah Insua. The source code is make a midi pad is <a href="https://github.com/tmpvar/tmpad">almost nothing</a> and that is a good thing. Elijah was able to create somethign amazing with little effort, which is why I believe we are on the cusp of the <a href="http://www.netmagazine.com/features/10-things-you-didnt-know-javascript-could-do">broader adoption</a> of JS as a leading language for building and controlling hobbyist hardware systems.</p>
<p>I say this because every day I hear more people making newer, brighter, more robotic things with node-serialport. I recently came across <a href="http://breakoutjs.com/">BreakoutJS</a> which is nobly attempting to make it even easier to interoperate with sensors and devices. This makes me happy and it should make you happy as well, if just to witness the energy and excitement. For me, the hobbyist hardware domain is more real than programming code, it is crossing of the boundary from abstract to real-life and has a massive potential to do a lot of good for a lot of people. Should it eventually be coupled with a strong AI system like a Clojure? Absolutely, but for now, play and experimentation are the key. If you must demand starting with a lisp, then just use ClojureScript and viola, best of both worlds!</p>
<h1><a href="http://#an-announcement" name="an-announcement" class="anchor"></a>An Announcement</h1>
<p>One of the things that has been lacking from node-serialport was support for Windows. I recently found that <a href="http://www.nearinfinity.com/blogs/joe_ferner/">Joe Ferner</a> was working on a fork that would (among other things) add Windows support. In the full beauty of social, open source development, we synced up and are happy to present for your cross-platform robot creation plans of world domination:</p>
<h2><a href="http://#node-serialport-100" name="node-serialport-100" class="anchor"></a><a href="http://search.npmjs.org/#/serialport">node-serialport 1.0.0</a></h2>
<p>We have tried to maintain the same API as the original node-serialport system, but add a couple of other accessible items. We have vetted this version with people that we had email addresses of and knew were building on top of node-serialport, if you were building something and run into an issue with this new version, please <a href="https://github.com/voodootikigod/node-serialport/issues">register a ticket</a>. We will try to resolve it as quickly as possible. We are quite excited about this release and happy to say that after almost 2 years of watching the JS robotics community grow, I can officially say: &#8220;Welcome your robotic javascript overlords. Better yet, program them (even on Windows)!&#8221;</p>
<p>If you want to talk about things you are doing with node-serialport, arduino, anything robotics and beyond, please come join us in IRC on the freenode channel #robotjs.</p>
<p><code> npm i serialport </code></p>
<p>Happy Hacking,</p>
<p>@voodootikigod</p>
<p>Oh, and get off the Internet and go change the world!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Regional JS Speaker Directory]]></title>
    <link href="http://voodootikigod.github.com/the-regional-js-speaker-directory/"/>
    <updated>2012-02-23T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/the-regional-js-speaker-directory</id>
    <content type="html"><![CDATA[<p>As being the curator of JSConf, I see a lot of new names and exciting topics during the Call For Speakers process, but unfortunately we only have 20-24 slots available for speakers. If I could I would have everyone speak all the time! Luckily there are hundreds of JS meetup groups happening all across the USA and thousands across the world - it is an exciting time. We, the JSConf team, wanted to make a way to help these JS meetup groups connect with the people that register for the Call for Speakers of JSConf (US|EU|..) that might even live or work right next door to them.</p>
<p>And so the <a href="https://docs.google.com/spreadsheet/viewform?formkey=dGN0MEVOMUVVRVVtT2lOR1kwdTJJblE6MQ">Regional JS Speaker Directory</a> was born.</p>
<p>Initially this is targeting local JS meetup groups, but could very easily be used to help curate amazing local content for various <a href="http://2011.texasjavascript.com/">regional</a> <a href="http://capitoljs.com/">JS</a> <a href="http://reddirtjs.com/">conferences</a>. For now, we are just gathering details about speakers, but we will be curating that list and providing them to regionally based meetup organizers as part of JSConf US 2012. This will hopefully get people talking with one another and allowing all these amazing talks happen across the USA and eventually the world. This is a pretty exciting initiative for us and for the JS community so anything you can do to help us would be greatly appreciated. At the very least, be sure to&nbsp;<a href="https://docs.google.com/spreadsheet/viewform?formkey=dGN0MEVOMUVVRVVtT2lOR1kwdTJJblE6MQ">sign yourself up</a>!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Why I Am Sponsoring PyCodeConf (and what it means to you)]]></title>
    <link href="http://voodootikigod.github.com/why-i-am-sponsoring-pycodeconf-and-what-it-me/"/>
    <updated>2011-09-06T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/why-i-am-sponsoring-pycodeconf-and-what-it-me</id>
    <content type="html"><![CDATA[<p><strong>tl; dr:</strong> Magic in Miami, a limited number of <strong><a href="http://eventrainbow.com/github/pycodeconf/?promo=JSCONF">tickets for PyCodeConf are available for you at $300/each</a></strong>. Don&#8217;t forget to pick up your <a href="https://gc.synxis.com/rez.aspx?Hotel=26735&amp;Chain=10179&amp;arrive=10/5/2011&amp;depart=10/8/2011&amp;adult=1&amp;child=0&amp;group=16600101113">hotel rooms at $179/night</a>. Hooray.</p>
<p>When I first saw that GitHub was producing their <a href="http://www.codeconf.com">own conference series</a>, I was quite stoked. GitHub has easily become a great asset for conference organizers both in terms of advertising visibility and their willingness to sponsor conferences of every ilk in almost every programming language. They support the community at a deep level both in their drive to turn coding into a social activity (through various GitHub meetups) and their funding of people with crazy ideas (aka conference organizers). I have always thought highly of the team at GitHub and so when I heard they were entering the conference space, I will admit I was both giddy and concerned.</p>
<p>The concern comes from the obvious overlap between the CodeConf events and JSConf events in terms of nature, style, and love of community. They are willing to showcase some arguably risky presentations and provide the critical social event backbone that makes conferences a success. In crafting JSConf, Laura and I stumbled into a lot of the decisions that made the conference what it became - CodeConf evolved from GitHub&#8217;s experience both as attendees, sponsors, and speakers at various events of all types. It is because of this that I actually turned my concern into a desire to help CodeConf grow by lending as much of a hand as I could. We need more events driven by passionate groups of people who have experienced all sides of the conference world. Speaking at most conferences sucks, sponsoring most conferences sucks, and attending most conferences &#8211; well that is hit or miss depending on your expectations.</p>
<p>I have helped GitHub organize their latest conference, focused on the Python community. Our experience of organizing a conference in a very well established community like Python has been quite interesting. The Python community is a very proud group and rightfully so, their community has been tended quite well by the Python Software Foundation (PSF) and a benevolent dictator. Our creation of a <a href="http://py.codeconf.com">conference about Python</a> is by no means an attempt to undo or insult these groups, but to add a new voice to the chorus. We have selected an amazing <a href="http://py.codeconf.com/#speakers">batch of speakers</a> representing the aspects of Python that make it great; including, but not limited to, the PSF, PyLadies Advocacy, SciPy, Django, Microframeworks, and PyPy (and a little JS for good measure). We did this to bring together a nice cross cut of the broad Python community into a single event and allow you to get the full breadth in two jam packed days. To go along with this, we are putting together a line up of social events that will rival JSConf starting with an opening party on Wednesday night October 5th and ending the evening of Friday, October 7th.</p>
<p>I believe deeply in the benefit of organic conferences driven by love for the communities that they represent. I have to otherwise I wouldn&#8217;t continue doing what I do with JSConf. I would love for all communities to experience the magic of sharing drinks with &#8220;the best and brightest&#8221; on a completely level playing field. It is the anti-thesis of elitism, if anything it is a deliberate breakdown of such things. PyCon and other PSF events do this as well, PyCodeConf is just an attempt at a different take on the concept. Both can and should co-exist happily.&nbsp; Part of the reason for choosing Python is that it seemed well suited for the type of environment we are working towards BECAUSE of PyCon, not in spite of it. That is why I am doing something that is absolutely crazy. I am, as a representative of JSConf, sponsoring PyCodeConf.</p>
<p>Most sponsorships mean that the organization gets money to create a better event and I have discussed this over with the GitHub team that the best way to do this is to get even more people there. So we are sponsoring to obtain a bigger space AND&#8230; Get ready for it&#8230;</p>
<p style="text-align: center;"><span style="font-size: large;"><strong><a href="http://eventrainbow.com/github/pycodeconf/?promo=JSCONF">OFFER TICKETS AT HALF THE REGULAR PRICE</a></strong></span></p>
<p>This price reduction is only available as part of our sponsorship and as such there are only a few tickets available at the lower price (sorry I am not made of money). The offer is only open until September 9th or we reach the number of tickets covered by the sponsorship. If you already have a ticket, you rock, but unfortunately we cannot do a refund to the lower price (buy one for a friend/co-worker!). If you have been on the fence about attending PyCodeConf, consider this a big push. We want this conference series to grow and we want you to be a part of it, now is your chance. If you don&#8217;t program in Python, please pass this on to someone you know who does. If you are taking advantage of this, be sure to <a href="https://gc.synxis.com/rez.aspx?Hotel=26735&amp;Chain=10179&amp;arrive=10/5/2011&amp;depart=10/8/2011&amp;adult=1&amp;child=0&amp;group=16600101113">pick up your hotel rooms</a> while the block is still open until September 9th.</p>
<p>Organic Technical Conferences FTW. Hooray!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[How I Pick Speakers For JSConf]]></title>
    <link href="http://voodootikigod.github.com/how-i-pick-speakers-for-jsconf/"/>
    <updated>2011-03-09T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/how-i-pick-speakers-for-jsconf</id>
    <content type="html"><![CDATA[<p>One of the main appeals of JSConf for the past two years running is the level and quality of presentations that are displayed by our speakers. Given that we are right in the middle of announcing our speaking roster for JSConf US 2011, I felt it would be a good idea to provide some insight as to how we select speakers and thus how we are able to curate a conference that seems to always be at the forefront of technology, not at the mid point. My hope is that you take this knowledge and apply it in conferences and events that you might curate AND demand better from other conferences. I don&#8217;t know about you, but I am quite tired of seeing the same set of speakers presenting the same set of topics over and over and over again. The current process of having &#8220;elite&#8221; or &#8220;must-have&#8221; speakers only creates an elitist and &#8220;good-ole-boy&#8221; community, both of which are complete crap and we should actively try to tear down, not build up or perpetuate.</p>
<p><strong>Motive</strong></p>
<p>First I want to start out by describing my intentions for JSConf. I believe any conference at the national or international level has a responsibility to its attendees and its following community at large to present the next generation of things. I believe that conferences are not a platform for repeating what has already been said, but a launchpad for announcing what is new, different, and amazing. When a conference costs more than $500 per attendee, I, as an attendee, demand to see stuff that I cannot see on the internet for free. This is in part why conference attendance is down for most events, but consistently (and crazily) sold out for JSConf and JSConf-like events - its new content that I can&#8217;t get elsewhere regardless of the cost. Think about it from a business perspective, would you pay $1200.00 (plus airfare and hotel) for your employees to go and see presentations that clearly blip.tv, vimeo, or youtube has for free? On top of that, most people attend these events for the &#8220;hallconf&#8221;, which is little more than job interviews by sponsors who are trying to pick up the talent, your talent that you just paid $1200 to $2000 to send. Of course you wouldn&#8217;t, but you would probably pay twice as much for your employees to WANT to be in the presentations BECAUSE it will make them ahead of the curve, thus not being &#8220;picked up&#8221; and even better coming back jazzed that they work at a company that is at the forefront of the world. That, that feeling, is what we target for JSConf.</p>
<p>This is one of the biggest driving forces for how I structured JSConf and specifically speaker selection. I have been both a company owner and an employee so I have seen both sides of the coin. When we pick speakers for each JSConf event, I am evaluating each one almost with a strong multiple personality disorder, where I am viewing it as:</p>
<ul>
<li>a business owner in that would I send my people in order to get a competitive advantage by having my employees at the lead of technology.</li>
<li>an attendee and would I feel that I have to see this, like if I miss this talk would my life be over.&nbsp;</li>
<li>a sponsor from the perspective of will this bring out the best people, and thus make it the event to sponsor and more important, the event that we have to be a part of.</li>
</ul>
<p>As you can see, the target for each one is creating something that is &#8220;have to see&#8221; and most importantly &#8220;can&#8217;t find elsewhere&#8221;. This means breaking the general expectation or model of how speakers are selected. Most conferences do selections based on sure-wins or safe bets, they pick presentations that they can see beforehand in order to ensure that it and the conference is good. Note, I said good - not great. Most conferences also pick speakers that they know personally and are friends with and perpetuates the previously described elitist society. Both of these suck and make for a par but rapid approaching sub-par speaker roster. Why do they suck, if you look at it the previously described contexts, you can clearly see that talks selected like this are clearly missing the mark.</p>
<p><strong>The Process</strong></p>
<p>It is easy to pick a part others, but it is harder and better to provide answers. So here you go. To select JSConf speakers, I first make a list of all titles, descriptions and UUIDs, but specifically excluding names and contact information. I go through each of these proposals and categorize them into one of a handful of pre-determined groups. For JSConf I use the following:</p>
<ul>
<li>Mobile - anything relating to small device (phone/tablet) development, design, testing, etc. If it moves, it goes in here.</li>
<li>Nerdcore - anything that is complete and total mindsex in terms of philosophy, theory, coding practice, etc.</li>
<li>WTF - anything that is complete insanity and most likely vaporware OR bullshit or some combination there of.</li>
<li>Infrastructure - all things related to infrasctructure elements (networking, SCM, tools, etc).&nbsp;</li>
<li>Data - all things related to data transport, storage, and querying.</li>
<li>Library - anything related to client side javascript libraries (jQuery, dojo, Moo, Prototype, etc.)&nbsp;</li>
<li>UX/UI - all items related to the visual side of life.</li>
<li>Other - every year there is something insane that is not categorizable above.</li>
</ul>
<p>Once all of the talks are categorized, I evaluate each group and rank them based on the merit of their title and description. I do this for many reasons. First, the topic needs to be compelling enough to steal my heart and mind if it isn&#8217;t no &#8220;celebrity power&#8221; will help that. I don&#8217;t care who the speaker is. Second, by doing it via groups and ranked within the group, I ensure balanced content at the conference because I am pulling the same number from each group and the top of each group. Finally, and this is my most important point, I AM SELECTING FAIRLY. I am not picking talks because they are friends or because I have to hit a minimum quota of gender or race, or any other hairbrained reason. I am picking talks solely and completely on their merit and importance OF THEIR TALK. The reason I am harping on this point is that many people believe that the way to increase gender and racial diversity at a conference is to tokenize the speakers. To have a token female speaker just to say &#8220;we have a female speaker&#8221;. Worse I see people blackmailing conferences about this point BEFORE A SINGLE SPEAKER IS ANNOUNCED. Hell, it happened to JSConf (US 2010). That is not gender and racial equality - it is bullshit. TALKS SHOULD BE SELECTED BASED ON THE TOPIC NOT THE SPEAKER. PERIOD. Increasing gender and racial diversity needs to start by increasing the number of speaking proposals coming from those groups, not by selection committees force-adding them. This is a very strong stand on a very touchy subject, but it has to be made and I will not budge on it. I have been very happy to see more and more gender and racially diverse submissions in JSConf and that shows up through our resulting selection.&nbsp;</p>
<p>Once talks are categorized and ranked, I look at the names of the speakers. If they have spoken on the same or similar topic at any other conference they are docked half a point. If they have been making the rounds of pimping their topic (podcasts, interviews, etc) they are docked half a point. If they are friends or colleagues of mine, they are docked half a point. If they are a &#8220;celebrity&#8221; they are docked half a point. As you can see from this ranking, it actually hurts you to be closer to JSConf if you want to speak. Doesn&#8217;t mean its impossible, but makes it very hard. <a href="http://westcoastlogic.com/">Brian Leroux</a> is one of the greatest people I have had the pleasure of meeting through JSConf, he is also one of the most unfortunate. I invited him to speak at the first JSConf based off these exact same metrics. <a href="http://jsconf.us/2009/leroux_video.html">His talk was absolutely epic</a>, it was the perfect balance of professional unprofessionalism. He went on to present at almost every conference there after even to this day his line up of conferences rivals that of Doug Crockford. At JSConf 2009, he and phonegap were known to a small set of people and his presentation was killer because of that fact. The unfortunate side is that because his talk was so awesome, it became a hinderance from having him speak again. Honestly I would love to have Brian present, he is the right type of crazy for JSConf, but for reasons listed above, it is very hard to do so. Hopefully Brian doesn&#8217;t hate me too much for this, but I think he understands because (luckily for the conference) he keeps coming back each year.</p>
<p><strong>The Downside of Being a JSConf Speaker</strong></p>
<p>One thing I do want to note, I will add a full point to the ranking of a talk if the item is something that is completely and totally insane. If there is realistically no chance in hell that this talk&#8217;s topic is actually accomplishable - I will add (positive) a full point. I do this because I want that kind of crazy (Brian&#8217;s kind) at the conference. I purposefully push myself to take the high-risk, high-reward topics that make people go &#8220;holy crap, my mind was just blown&#8221;. You can easily pick out the talks that have this point because they are generally the most memorable ones from the JSConf archives (<a href="http://jsconf.eu/2009/video_nodejs_by_ryan_dahl.html">Ryan Dahl</a>, <a href="http://jsconf.blip.tv/file/2325755/">Brian Leroux</a>, <a href="http://blip.tv/file/3814985">Tobias Schnneider</a>, <a href="http://jsconf.eu/2010/speaker/livingroombindmotion_function.html">The Robotic JavaScript talk</a>, etc.) They are high risk at the time we make selections (5-6 months prior to the conference), but they serve two sides, they strongly force the presenter to accomplish what they have laid out AND they give attendees a view of tomorrow, not of yesterday. This is a major difference between JSConf and JSConf-like events AND all other conferences. Conference organizers should take risks, safe bets are good for this year, horrible for next year.</p>
<p><strong>&#8220;My Talk&#8221;</strong></p>
<p>Once the rankings are settled, I take the top two from each category for my first round of selection. Nearly all first round options say yes, and we have our speakers for that year. Well almost complete. I always challenge myself to find one insane talk. Something that has no right being presented at JSConf, but yet for that reason becomes the most critical to have. I call this &#8220;my talk&#8221; because I get to pick it with wild abandonment. Last year, this was <a href="http://jsconf.blip.tv/file/3834462/">Aaron Quint&#8217;s amazing bacon talk</a>, which resulted in one of the best talks I have ever seen, anywhere. It set the tone for JSConf and gave people a lot to think about on many topics. To this day, when I pitch sponsorships, I lead with the bacon talk. I say this is the kind of talks we have at JSConf and this is why you must be part of this event. Most organizers wouldn&#8217;t do that, arguably it is suicide to have a talk like this at a &#8220;professional&#8221; conference. However, that is what brings people back year over year and also what causes the energy of JSConf to continually expand and accelerate.</p>
<p><strong>Conclusion</strong></p>
<p>There you have it, that is how I pick the speakers for JSConf, that is how we make it &#8220;OMGzAWESOME&#8221; each year. It is also why when speakers are announced a lot of the &#8220;established leaders&#8221; look at the list and scratch their heads. It really doesn&#8217;t and wouldn&#8217;t make sense, not before the talks. After the conference though it is very obvious especially as time goes on and the excitement and energy of the talk and how it &#8220;changed my life/view/world&#8221; spreads. I would ask that we stop blackmailing conferences into diversity and instead do our best to solve the problem where the problem lies. Hint, organizers aren&#8217;t saying &#8220;oh crap that&#8217;s a woman I can&#8217;t have her speak&#8221; when they review proposals and to even think like that, let alone tweet about it, that is just insane. If you want a more diverse speaking population, encourage what you want to see speak to put in proposals. It is that easy. Most people don&#8217;t even know they can, worse most people don&#8217;t even know that they should. You look at how we pick speakers and it is unfair for established speakers at the benefit of new speakers, perfect for making a more diverse speaking population. Finally, I would love to see others use this technique for speaker selection - we need crazier speakers but more importantly we need conferences that are showing us the future, not the past.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>P.S.</strong></p>
<p>A quick note about first time conferences, this article isn&#8217;t targeted to them. I actually encourage you in the first year to invite a &#8220;name&#8221; in order to essentially bootstrap your event with their &#8220;social capital&#8221;. We did it for JSConf (in full disclosure). This article is more targeted for established second, third, fourth year conferences.&nbsp;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[On Snake Oil And Experts]]></title>
    <link href="http://voodootikigod.github.com/on-snake-oil-and-experts/"/>
    <updated>2011-03-03T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/on-snake-oil-and-experts</id>
    <content type="html"><![CDATA[<p>I just announced <a href="http://promotejs.com/">promotejs.com</a>, which as described in my talk at the epic <a href="http://jsconf.eu/2010/">JSConf.eu</a> is the following:</p>
<blockquote>
<p>Through pirate techniques and guerrilla SEO we can change how search engines present answers to common queries about our language. By driving traffic to the proper documentation, we can change search rankings and ensure that people interested in <a href="https://developer.mozilla.org/en/JavaScript/Reference">JS</a> are connected with the proper educational resources. First target for promotejs, unseat w3schools.com for standard new JS developer queries with proper MDN documentation.</p>
</blockquote>
<p>Also please note that this was in the context of improving the experience for new entrants and those continuing their education of the <a href="https://developer.mozilla.org/en/javascript">JavaScript</a> language. When you boil down the mission statement of promotejs and the talk in general was this very simple point:</p>
<blockquote class="posterous_short_quote">
<p>It is up to the experienced developers to point out the proper documentation for the inexperienced.&nbsp;</p>
</blockquote>
<p>Of course the first group to get excited by this, and properly so, where the developers who followed developers that were in attendance of JSConf.EU.&nbsp;Unfortunately by the time we had reached the afterparty the other side of the conversation had arrived. The so-called SEO Experts who, without full context, go off and explain how this is stupid and will not work. Awesome, there is nothing like hitting the hornets nest of a bunch of people that doubt everything. So lets put some facts around this discussion before we start <a href="http://jsconf.eu/2010/communityjs_by_chris_williams_1.html">selling FUD in metric tons</a> ;) (note, when the JSConf EU video is released, that joke will make a lot more sense).</p>
<p><strong>1. It has already worked</strong></p>
<p>The goal of PromoteJS is first and foremost to better the documentation visibility and by the sheer viral nature of PromoteJS with a backplane of Twitter and Facebook, it wasn&#8217;t long before most of the development community knew a couple things.</p>
<ol>
<li>JavaScript documentation visibility is surprisingly&nbsp;horrible</li>
<li>There are proper documentation elements out there like the Mozilla Developer Network and such</li>
<li>A lot of people believe in better visibility</li>
</ol>
<p>When I say &#8220;a lot&#8221; I am being humble, let me put it this way, immediately after the initial launch of promotejs.com, not more than three (3) days time total - the site had over 4.5 million unique visitors and according to Google already had over 20,000 backlinks from people writing about promotejs.com on their site. So what does that mean? Well in simplest terms, this is obviously an issue that needed discussion and a rallying call mind you that even if no one put the badge on their site and backlinked the hell out of PromoteJS, thus giving a substantial amount of authority, we still win. Why? Well the first and highest quality link on the site not going back to google is to the top level Mozilla Developer Network site for JavaScript, as well as the second link, oh and the third link. So any discussion about the success or failure has to account for this before continuing anywhere else, a major factor that all the so called &#8220;SEO Experts&#8221; have not yet addressed.</p>
<p><strong>2. Haters gonna hate</strong></p>
<p>This is no more certain than the backlash against PromoteJS where as best I can see a total of 2 blog posts were generated by &#8220;experts&#8221;. Posts which mind you are providing highly organic back links to both PromoteJS AND the MDN site, links without the rel=&#8221;nofollow&#8221; or rel=&#8221;noindex&#8221; attributes. So let me start by saying thank you! Most of what I have read in these articles skips the main thrust of the #promotejs and that is getting people to link to proper documentation, to start discussing it, and to build better community awareness about the problem. In essence, the gist of their arguments are similar to mine - link in your articles it has greater weight than any single link or button ever will. That was a core fundamental of the educational component of the talk, #promotejs is just a way of getting people talking about it.</p>
<p>As for the &#8220;keyword stuffing&#8221; claims, I would contend that they just don&#8217;t get it. People do not search of &#8220;JavaScript&#8221;, but for specific items like &#8220;JavaScript Array Length&#8221; or &#8220;JS array.length&#8221; in order to find the specific target, the alt tag and name tag were crafted based on the actual searches done by actual people actually learning and using the language. Also bear in mind that the whole page and its context, its content, and its backlinkage are taken into account to determine the likelihood of a link being a link farm. So yes, if we had put it on a thousand one of sites each of which with little to no google page rank, I would agree, BUT THATS NOT THE POINT. These are going on high page rank, high value, high content sites that have lengthy histories. If anything this working with google&#8217;s algorithm, not against. It is people saying I believe this is the best documentation (for now) and if you want to know about JavaScript, like I write about it then go here.&nbsp;</p>
<p><strong>3. I repeat, it is working!</strong></p>
<p>We built a site to track our progress within the google page ranking across all key terms called <a href="http://arewefirstyet.com/">Are We First Yet</a>. The site stopped working on March 1, 2011 due to API changes that google made (deprecated the API we were using). What it does show us is that from launch to March 1, we took almost all terms and got them two the first two page results - most above the fold on the first page. We can do even better and we are doing better. I actually wrote this article 3 days after launch, we all the SEO experts were clammering about how this is a <a href="http://kenneth.kufluk.com/blog/2011/02/why-i-dont-promote-js/">flawed</a> or <a href="http://www.wait-till-i.com/2010/09/26/promote-better-javascript-documentation-with-promotejs/#comment-81015342">failed</a> <a href="http://kenneth.kufluk.com/blog/2011/02/why-i-dont-promote-js/">effort</a> and how its essentially going to do <a href="http://www.ask-kalena.com/seo/promote-js-a-noble-cause-ruined-by-dodgy-implementation/">more damage than good</a>. I ask you now, 5 months later, where are these &#8220;experts&#8221; with the big bowls of claim chowder? I can promise you this they aren&#8217;t on the first page of a common Google search, like umm&#8230; <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=learn+js">Learn JS</a>&nbsp;which went from position 54 to link 3 or <a href="https://developer.mozilla.org/en/JavaScript/Guide">JS</a> which went from 254 to link 68.</p>
<p>The thing I love most about SEO is that expertise is complete BS. Google changes their algorithm regularly in order to actually teardown the SEO experts and ensure that community determined proper content is placed above otherwise content. The goal of PromoteJS is,&nbsp;agreeably&nbsp;not to create a link farm, but to get us, JS developers, to start linking and start fixing the problems within our community. To take a stand and do instead of sitting and complaining.&nbsp;</p>
<p>#jsconfeu ftw</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Hug a Conference Organizer: The Outcome]]></title>
    <link href="http://voodootikigod.github.com/hug-a-conference-organizer-the-outcome/"/>
    <updated>2011-03-03T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/hug-a-conference-organizer-the-outcome</id>
    <content type="html"><![CDATA[<p><strong>Note:</strong> Like many in this series, this has been written over many months - I have no idea what was in it when I finally hit publish. Sorry.</p>
<p>There are many reasons to organize and run a conference, most of the &#8220;upfront reasons&#8221; are unfortunately bunk. I have experienced this on my own and corroborated with many conference and event organizers that I try to help out, here are a list of things that initially go through your head, depending on what else is going on in your life:</p>
<p>If I can pull this off, &#8230;</p>
<ul>
<li>I will have a lot higher visibility in the community!</li>
<li>I can use the connections and marketing to help drive business to my consulting/product company!</li>
<li>I will make a name for myself!</li>
<li>I will be somebody important!</li>
<li>I will make bring together people and all will be happy and right with the world!</li>
<li>I can change the (world, community, or mindshare) for the better!</li>
<li>I can do something amazing that will be self fulfilling.</li>
</ul>
<p>I can tell you that pretty much everyone of those ends up not happening or quite to the contrary the opposite happens. I will admit that when I started <a href="http://jsconf.us">JSConf</a> and <a href="http://www.nosqleast.com">NoSQL East</a>&nbsp;I firmly believed every single one of those at some point in the journey. Worse still, I EVEN believed some of these during JSConf 2010, as if the first time around had not taught me anything. So I would like to share with you some of my experiences and thoughts on this matter, especially because going into an event planning with the right foresight is probably the best thing you can do have to prepare you for the &#8220;revisionist&#8221; hindsight you will undoubtable experience after your event.</p>
<p>Let&#8217;s start with the obvious issue, the desire or feeling of wanting to do something that someone else thinks is amazing. Beyond basic instincts (food, water, sex, etc.), human psyche is driven by a burning desire for recognition - it is an annoying facet of life we all deal with and the more you might possibly have, the more you desire it. That just sucks. Worse for the conference organizer is that you are pulling together huge names, massive fame, and organizing amazing things - so your inclination is for that fame limelight to be shed on you. It is nature, there is little you can do about it. Most technical people will attempt to rationalize this desire into a convincing argument that &#8220;If I can bring people together for this event, I can figure out a way to benefit&#8221;. Right, it is obvious, it is how advertising works.</p>
<p>Step 1. Draw the audience.</p>
<p>Step 2. &#8230;</p>
<p>Step 3. Unicorns and Rainbows</p>
<p>But rounding the corner of organizing an event and receiving any degree of fulfillment from said event is, at least in my experience, one of the hardest accomplishments. Ever. Why is it so hard? Well simply put, it is because you are afraid of failing, of essentially throwing a party no one shows up to and so you make it the best damn party. In part it is due to the premature adoption that a conference organizer has with their event, in part it is the desire to make the best damn event ever - either way you are inclined to invest (time, effort, energy, hopes, dreams) way above and beyond what the event itself can ever return. In part, thats the passion of the event that shines through to attendees and makes them happy to have attendeed, but it has a dark side.</p>
<p>After every single conference I have thrown I tell myself &#8220;I will never ever do this again, fuck that.&#8221; It is a large amount of work from gathering (and herding) speakers, gathering (and also herding) sponsors, and finally herding attendees - it&#8217;s insane. Add to the mix vendors who drastically overcharge and then still proceed to nickel and dime you and it is enough to put anyone into an early grave. But this article is not about complaining it is about outcome. There is an inherent problem with conference organizers, they start the journey without knowing the end. Some (/me raises hand) become addicted to the adrenaline rush of actually pulling it off, some forgo the risk and take the profits, still others leverage the conference as a means to catapult themselves into the limelight. I personally have thrashed internally as to why I do JSConf. I hold back and even downplay my own personal efforts with the conference because I think it is what the community needs/deserves, which generally speaking goes according to plan - BUT that means no one notices. Ask any JS person who the top movers and shakers are and I highly doubt I would even be thought of let alone mentioned. Reason why? Simple I make it a point to be more behind the scenes and thus even though I am basically spotlighting the next year of JS (And other language conferences talks) the speakers take the &#8220;limelight&#8221;, deservedly. My personal ego thrashes constantly about this. I am human after all. My reason tells me it is pretty pointless, we spend all the money making an event memorable and yet I am purposefully circumventing that. WTF. It is just eventuallity and I do tell myself it is for the best in the long term.</p>
<p>What has becoming increasingly worse is the haters who jump all over &#8220;risky&#8221; items. We make JSConf a place for experimentation and while it is good to see conferences leverage those experiements (I love txjs) it is also tough to see others plunder it out right. Whether it be groups of people looking at JSConf saying.. there is something there, lets figure out how we can &#8220;extend&#8221; it, all without even emailing me OR bigger more established conferences taking our speakers, event ideas, or even themes and repurposing them. I get that this is a competitive market - I really do - and that I don&#8217;t have a trademark on awesome (I tried) but seriously it sucks goat testicles and it is just an eventual outcome of doing something different. You incur the risk, others take it to market cheaper after you&#8217;ve proven it. What was very nice the first year of JSConf, which most people completely gloss over is the &#8220;OMG THIS WAS THE BEST EVER&#8221; articles. I have watched year after year and event after event as those amazingly long and beautiful articles have disappeared. Replaced by &#8220;jsconf was great&#8221; tweets, which as you can probably guess are nice, but in no way fulfilling. You want to make a conference organizer happy? WRITE A LONG ASS BLOG POST ABOUT HOW THE EVENT WAS EVEN BETTER THAN SEX. That, as best I can tell, is the best and only gold of conference organization. Trust me, you have no idea how awesome it was the three weeks following JSConf 2009 reading those, it is what inspired me to do 2010.&nbsp;</p>
<p>In the end, I have resolved myself to the outcome for JSConf being a couple great parties I get to attend (at the cost of organizing) and a couple nights in an awesome hotel room. Thats why we pick swanky hotels for JSConf and throw awesome parties. JSConf (or any conference of substance) can&#8217;t sustain its organizers and thus they have to return to their 9-to-9s in order to pay the bills. And thus you have it, conferences like JSConf, FunConf, ShnitzelConf, TXJS, etc. are labors of love remember that next conference you attend and hug the hell out of the people organizing it. Especially if you can do it at the most awkward moment (closing speech is best).</p>
<p>Sorry for the dark look on the other side, but hell thats what this series is about.&nbsp;This isn&#8217;t meant as a &#8220;cry for me&#8221;, but more just a peek at the other side, please take it as such.</p>
<p>&nbsp;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[PromoteJS, Sustainability in Computer Science, and Deep Honesty - JSConf EU 2010 Keynote]]></title>
    <link href="http://voodootikigod.github.com/jsconf-eu-2010-speech/"/>
    <updated>2010-10-12T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/jsconf-eu-2010-speech</id>
    <content type="html"><![CDATA[<p>This talk was presented at <a href="http://jsconf.eu/2010">JSConf EU 2010</a>, video is provided, but please also read the transcript.&nbsp;</p>
<p><embed src="http://blip.tv/play/hq0KgoPNFQA" type="application/x-shockwave-flash" height="308" width="500"></embed></p>
<hr />
<p><span style="font-size: small;">We are an interesting lot when you look at the community as a whole. We are a rag tag group of designers, developers, noobs, and elites. We have a sordid history as one of the greatest technological wars played out across our land and left us in a wasteland of stagnation. The big vendors have looted and plundered our community and we survived it, only to come out stronger and better. Many of our original heroes have been lost to legend, or worse they have been scorned by the dragons they sought to slay. We have seen new leaders rise with vigor and innovation not often seen in other programming communities. &nbsp;We are a community of rejuvenation, of rebuilding, of finding problems and fixing them. We are a community of developers who prefer JS, but use a variety of other languages and tools to accomplish tasks. We are at the point of a renaissance of interest, excitement, and energy and yet I worry. I fear as the drums of war start pounding between browser vendors and the rising tide of interest moves back to JS, what will it do to our community. Will we have built something sustainable or merely yet another flash in the pan technology cult? The new generation of JS, you, me, all of us here, will we learn from our past or are we destined to repeat it in all the wrong ways? Let us not just begin a discussion today, let us trigger action and inspire change! Sustainability should be the most important goal for the technology community at large, and yet no one discusses it. Tonight, we will do more than discuss.</span></p>
<p><strong><span style="font-size: small;">Chapter 1: Education</span></strong></p>
<p><span style="font-size: small;">JS is not a toy language, we believe that otherwise we would not be here. That reality is just now reaching the masses and their first impression of JS is absolutely abysmal. How many of you know what shows up when you search for &#8221;<a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=JavaScript&amp;ie=UTF-8&amp;oe=UTF-8">JavaScript</a>&#8221;? Look at the links that show up, wikipedia? w3schools? Download Java? Maybe you are saying to yourself that &#8220;JavaScript&#8221; is too broad a topic and no one in their right mind would search by name for the language that they are trying to learn. Well, lets see, &#8221;<a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=JavaScript+Array&amp;ie=UTF-8&amp;oe=UTF-8">JavaScript Array</a>&#8221;. The first &#8220;quality&#8221; link on this page was the <a href="https://developer.mozilla.org/en/JavaScript">MDC documents</a>, link 8 - non-existent. If you want me to take it a step further let&#8217;s use an actual query for a first time person, google &#8221;<a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=Learn+JavaScript&amp;ie=UTF-8&amp;oe=UTF-8">Learn JavaScript</a>&#8221;. The first link that actually presents proper JS is <a href="http://ejohn.org/apps/learn/">John Resig&#8217;</a>s at position 8 AND its designed for advanced techniques - the stuff in there would blow the minds right out of anyone just starting out.&nbsp;</span></p>
<p><span style="font-size: small;">This is the first impression of JS by the general masses who are coming to this language and once you see this, you can see why people consider it a &#8220;toy language&#8221; and understand how so much bad code and disdain can exist for JS. We have hidden the better tutorials, learnings, and documentations away from ourselves AND more to the point, those trying to join the party. &nbsp;New entrants struggle to learn JS, but eventually just adopt what they know from PHP, Java, Perl, Python and Ruby to a close approximation of runnable code that suffices. Then they publish it back out, proud of what they have done, and continue to perpetuate this plague of improper JS coding.&nbsp;</span></p>
<p><span style="font-size: small;">We have failed our fellow designers AND developers in this sense. We have made it almost impossible to learn proper JS, a language with both beauty and warts. Some will say it is not our fault, that browser vendors should provide the API documentation for the implementation or that the standards committee should publish and market it. I am calling bullshit on that. I say that it is up to us to invite, welcome, and most importantly properly educate people looking to learn JS. We, the best and brightest of the field, have an obligation to help those who are trying to learn and understand the complexities of the language. We are the ones that benefit from it most, since those now entering the language will be either extending, morphing, or taking over the very projects we are just now starting. Regardless of library, framework, and even language &#8211; if everyone knows how to program proper JS a little better, we all win. Period.&nbsp;</span></p>
<p><span style="font-size: small;">So I challenge you to put down your library or framework preferences and write about some interesting facet about the JS language. Describe how you find the attributes on an object, what the difference between an object and an array is (and how to tell the two a part), anything and everything. If you seek fame and click traffic, write about the entry level stuff. If you seek respect and deep dialogs, write about the difference between implementations and convey the wisdom of when to favor one method over the other. If writing is too time consuming or your muse escapes you, I am announcing today a new campaign, <a href="http://promotejs.com">promotejs.com</a>. The goal of PromoteJS is this, through pirate techniques and guerrilla SEO we can change how search engines present answers to common queries about our language. By driving traffic to the proper documentation, we can change search rankings and ensure that people interested in JS are connected with the proper educational resources. First target for promotejs, unseat w3schools.com for standard new JS developer queries with proper <a href="https://developer.mozilla.org/en/JavaScript">MDN documentation</a>. Yes I am saying that we crowd hack google.</span></p>
<p><span style="font-size: small;">We need to be the voice of education for our community. We need to promote the proper way of doing things, instead of just ignoring those that don&#8217;t &#8220;get it&#8221; or watering things down. We need to commit to educating our fellow developers on JS, the language, and in doing so it helps ALL of our frameworks, libraries, meetups, and conferences. promotejs.com is a step in that direction, but by no means the end of the story. The morale of this chapter is, &#8221;<strong>The more people that learn proper JS, the better the community will be</strong>&#8221;.&nbsp;</span></p>
<p><span style="font-size: small;"><strong>Chapter 2: Love The Pirate! Damn The Privateers!</strong></span></p>
<p><span style="font-size: small;">The technology field has changed tremendously over the last 20 years and unfortunately it has become focused almost entirely on profiteering and fame. We see companies running technology conferences for profit, selling FUD in metric fuck tons, and making zealots out of noobs. Conmen jump from one &#8220;hot tech&#8221; to the next in order to be the first to sell this week&#8217;s &#8220;new deal&#8221;. It started with Java and the marketing engine that pushed it into the limelight, shadowing all else, thrived in the .NET ecosphere, and came full circle to the &#8220;hackers&#8221; with the rise of Rails. The world of software development has seemed to shift from developing to better mankind to a slow, but strong bleeding of developers. This is not the way of sustainable craftsmanship within Computer Science. We must turn this trend back. We, the crowd gathered here and those watching from home, we, the interested, we&#8230; JSConf&#8230; have a responsibility to ourselves to turn this tide. We are the people who can identify the conmen, the bad actors, the manipulators and we are the ones that have to call them out. Yes, it won&#8217;t be pretty and yes they will fight, but fuck it - we are pirates.&nbsp;</span></p>
<p><span style="font-size: small;">From the beginning of JSConf, doing what matters versus doing what makes money has been a core fundamental to all of us involved. We are pirates, we believe deeply in the code that all ships rise with the rising tide and that equality for all makes for a proper ship. We have no problems addressing the issues in our community openly and calling for a change, we must rattle the sabers and shake out those that aren&#8217;t committed, and we need to do it now. because I fear to tell you - the establishment is at the door again, ready to make money off our work.&nbsp;</span></p>
<p><span style="font-size: small;">And thus I say, love the pirate, damn the privateers. Privateers for those who don&#8217;t know, were people that posed as pirates and would pillage other countries or pirate ships at the behest of a monarchy or government. They were little more than hired guns paid to discredit pirates and break up colonies. Pirates have a code, though it may differ from ship to ship, the general principles of honesty and good faith amongst one another was ever present - this was untrue for the privateers. We need to root out those amongst us who are not here for love and challenge, those that present themselves as great, but provide little to no example or reasoning as to how. Show what you have done and let others determine your value, anything else is privateering. Many people think I am someone important in JavaScript, but they have never once &nbsp;seen or used my code - trust me if they have, they certainly wouldn&#8217;t think that. We need to pull down the cult of personality that now permeates our world, it is only a device of the privateer. This is true for not just this band of pirates, but for all software developers out there. We must band together and bring sustainability and sanity back to our profession.</span></p>
<p><span style="font-size: small;">In this, I want to openly applaud Rebecca Murphey for challenging those who champion enterprise jQuery without offering solutions or a frank discussioon of the issues. I want to applaud Zed Shaw for speaking out quite vocally on this very issue in both small and large forums. Our profession needs more champions of character and less bullshit.</span></p>
<p><span style="font-size: small;">And so, I make this call to arms, &#8220;Love the Pirates, Damn the Privateers!&#8221; with the deepest of sincerity. Luckily, we are starting almost a new at this point. There is no more Ajax Experience, there are few, if any publisher-run conferences in JS. Right now, we have a developer driven development community. Think about that for a second, we have the power. We have a shipful of pirates and a wide open sea before us. Adhere to the code! ARRRRR!!</span></p>
<p><span style="font-size: small;"><strong>Chapter 3. Sex, Lies, and Comparing Sizes</strong></span></p>
<p><span style="font-size: small;">JS is not the greatest programming language. No programming language is and none can ever be. They are all a close approximation to something the computer can understand. Every programming language has its benefits and its downfalls, we need to get to the point where we realize this and openly admit the negatives along with the positive. We need to stop presenting each new language or framework with zealotous &#8220;THIS IS THE BEST EVER&#8221; or coming out with rediculous metrics that &#8220;benchmark&#8221; two things that are not the same or aren&#8217;t actually benchmarking appropriate use. The world is big enough for all programming languages and frameworks, and to be honest - &nbsp;the world needs every programming language. Not more than a year ago, if you told someone that JS would be a serious contender in the server market you would have been laughed at, much like if you had said Ruby 10 years. Times change, needs shift, holding a single weapon makes you easy to combat and a horrible pirate. We are not &#8220;JavaScripter&#8221;s, not pythonistas, not rubyists - we are programmers. We need to improve ourselves in as many programming languages as we can get our minds around, because every language forces you to view the world in a slightly different way. We need to remove the trolls from our world. We need to stop comparing cocksizes - lets be blatantly honest here, we are all geeks. We are not rockstars, we are not ninjas, luckily though, we are all friends.</span></p>
<p><span style="font-size: small;">Confession time: I am not Mr. JSConf. I am not a leader nor all that good of a programmer. On a good night, I can pull together something but it won&#8217;t win any awards or medals. Before I started JSConf, I was completely unknown, like many speakers at JSConf US and EU. After this, I am going to return back to DC sit at my cubicle and work as hard as I can on my full time job. After that I am going to go home and enjoy the company of my family. I bring this up to make one thing very clear. I am nothing special. I am just like everyone of you, and honestly I don&#8217;t want to be anything special. This is not false modesty nor self deprecating, this is honesty. And honesty is what we need to be to ourselves and our fellow programmers. I am most worried about this issue above all others I have since discussed. It is pride and selfishness that have turned programming from an art into a cesspool. It has to stop now and we have to be the ones to do it. Why us? Well simply put because we are interesting lot, we come from all different programming languages and educational backgrounds. We have a rare opportunity and the perfect mix of curiousity, intelligence, and experience. We are sitting at an amazing time and we are amazing people - that is why it is up to us to do this.</span></p>
<p><span style="font-size: small;">So let this be the start of something great. We are going to improve our community, we are not going to let it become a ghetto. We are going to do this not for some misguided blind love of a single programming language but because we embrace all programming languages. We have the power and the knowledge to make these changes, to make the programming world a better place and in turn the entire world a better place. We are pirates. We are JSConf!</span></p>
<p><span style="font-size: small;">Thank you.&nbsp;</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Best dressed hokie ever. ]]></title>
    <link href="http://voodootikigod.github.com/best-dressed-hokie-ever/"/>
    <updated>2010-10-02T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/best-dressed-hokie-ever</id>
    <content type="html"><![CDATA[<p>[[posterous-content:jdfbyxjGCFylqwldForb]]</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[There are few states as beautiful to drive through as Virginia ]]></title>
    <link href="http://voodootikigod.github.com/there-are-few-states-as-beautiful-to-drive-th/"/>
    <updated>2010-09-11T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/there-are-few-states-as-beautiful-to-drive-th</id>
    <content type="html"><![CDATA[<p>[[posterous-content:BEbupCdFhfdjIFfJJdmy]]</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[CouchDB snippet: Find the biggest object]]></title>
    <link href="http://voodootikigod.github.com/couchdb-snippet-find-the-biggest-object/"/>
    <updated>2010-07-31T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/couchdb-snippet-find-the-biggest-object</id>
    <content type="html"><![CDATA[<p>I use <a href="http://couchdb.apache.org/">Apache CouchDB</a> in the implementation of <a href="http://www.ourparents.com">OurParents</a> for holding a lot of our big data. One of the things I run into is a concern for the size of any specific object within the dataset. When you have hundreds of thousands of documents each of which with a lot of weight, finding the &#8220;big&#8221; objects can be a problem. Luckily, and full thanks to <a href="http://jan.prima.de/">Jan Lehnardt</a>, there is this little gem that leverages the underlying SpiderMonkey system within CouchDB to determine the size of a document based on the number of characters in it. Hope it helps you as much as it helps me:</p>
<p><strong>Map:</strong></p>
<p><script src="https://gist.github.com/502609.js"></script></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[An Ode to Ajaxian]]></title>
    <link href="http://voodootikigod.github.com/an-ode-to-ajaxian/"/>
    <updated>2010-07-19T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/an-ode-to-ajaxian</id>
    <content type="html"><![CDATA[<div class="posterous_bookmarklet_entry">
      <blockquote><div>
          <p><a href="http://benzilla.galbraiths.org/">Ben Galbraith</a> and <a href="http://almaer.com/blog/">Dion Almaer</a> of <a href="http://ajaxian.com/">Ajaxian</a> <a href="http://ajaxian.com/archives/ben-and-dion-step-down-as-editors-of-ajaxian-com">recently posted</a> that they are stepping down as formal editors of the blog Ajaxian.</p><p>I just wanted to write a short ode to Ajaxian. Ben and Dion both literally created the Ajax community, founding a central  watering hole for everyone to come around. Of any tech community I&#8217;ve  been a part of, the Ajax/Ajaxian community has been the absolute best  one. While Jesse James Garrett <a href="http://www.adaptivepath.com/ideas/essays/archives/000385.php">might have coined</a> the term Ajax, Ben and Dion  made it real and gave it heart.</p><p>Ben and Dion both helped me launch my JavaScript career, supporting me with <a href="http://ajaxian.com/archives/pubtools-search-fast-client-side-searching-with-gears"> mentions</a> <a href="http://ajaxian.com/archives/audible-ajax-episode-21-dojo-offline-on-google-gears">when</a> I <a href="http://ajaxian.com/archives/brad-neuberg-render-ui-on-the-server-or-the-client">put</a> <a href="http://ajaxian.com/archives/purple-include-19">out</a> <a href="http://ajaxian.com/archives/dojo-offline-toolkit-beta-released">some</a> <a href="http://ajaxian.com/archives/ajax-history-support-in-safari-possible">new</a> <a href="http://ajaxian.com/archives/dojo-offline-09-and-gears">Ajax</a> hack or toolkit. Without Ajaxian  there wouldn&#8217;t have been a place to post new updates; it&#8217;s the Techmeme  of the JavaScript world (not the Valleywag of the JS world, thankfully  :)</p><p>I wouldn&#8217;t be where I am in any possible way if it wasn&#8217;t for Ajaxian  and Ben and Dion. Thanks for all the hard work guys!</p><p>As HTML5 grows and slowly eclipses the Ajax community, lets hope we get as awesome a common community space as Ajaxian has been!</p><p /><p>Labels: <a href="http://blog.codinginparadise.org/search/label/ajax" rel="tag">ajax</a></p><br />
          <div>// posted by Brad Neuberg&nbsp;@&nbsp;<a href="http://blog.codinginparadise.org/2010/07/ode-to-ajaxian.html" title="permanent link">Wednesday, July 14, 2010</a> <span><a href="http://www.blogger.com/email-post.g?blogID=3191291&amp;postID=3081973246138026606" title="Email Post"><img src="http://www.blogger.com:80/img/icon18_email.gif" height="13" alt="" width="18" /></a></span><p><span><a href="http://www.blogger.com/post-edit.g?blogID=3191291&amp;postID=3081973246138026606" title="Edit Post" style="border: none;"><img src="http://www.blogger.com:80/img/icon18_edit_allbkg.gif" height="18" alt="" width="18" /></a></span></p><p> </p></div>
		</div></blockquote>

<div class="posterous_quote_citation">via <a href="http://blog.codinginparadise.org/2010/07/ode-to-ajaxian.html">blog.codinginparadise.org</a></div>
    <p></p></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Hug a Conference Organizer]]></title>
    <link href="http://voodootikigod.github.com/hug-a-conference-organizer/"/>
    <updated>2010-06-21T00:00:00-04:00</updated>
    <id>http://voodootikigod.github.com/hug-a-conference-organizer</id>
    <content type="html"><![CDATA[<p>As you may know, I, along with my wife, curate the rather successful <a href="http://www.jsconf.us">JSConf</a> which draws attendees from the international stage to present cutting edge JavaScript technology. Without a doubt, it has been our most ambitious project ever and continues to be a constant source of frustration and excitement for us. Being a developer and firm believer in the Open Source movement, I felt it my responsibility to speak up on a variety of issues that are of concern to me. This post will hopefully give you a very real and very raw view into the life of an independent conference organizer. There will undoubtably be a slew of comments about &#8220;you could have done X&#8221; or &#8220;you should have done Y&#8221; and those are, in fact, the inspiration for this post. If you don&#8217;t read any further, read this next line:</p>
<blockquote class="posterous_short_quote">
<p><strong>Organizing any event of any magnitude takes exponential effort and cost to the resulting &#8220;feel&#8221; of that event.</strong></p>
</blockquote>
<p>This is something I have come to after years of starting small groups and increasingly large events. JSConf, or any conference as best I can tell, is no exception to this rule. I believe in part this is due to the veil that conference organizers (myself included) put up in order to hide the details in an effort to make the event seem perfect - the truth is very often far from. A conference or any event of substantial size is little more than herding cats with nothing but a spoon and a lot of faith that things will work out, despite any specific time instance. That&#8217;s it - complete and total chaos. If you don&#8217;t immediately understand what I mean, please continue.</p>
<p><strong>Venue</strong></p>
<p>Possibly the most complex and important decision of every conference is the venue. Trust me, the venue is also the most precarious and hazardous of all decisions related to the success of the conference. When an organizer selects a venue they are implicitly selecting the following items:</p>
<ul>
<li>Quality, variety, and costing of the food available</li>
<li>IT capability for the entire conference</li>
<li>Room cost and availability</li>
<li>Total number of attendees</li>
<li>General feel of the conference</li>
<li>Location of the event</li>
</ul>
<p>That is a tremendous amount of fundamental concerns that all must be done prior to even the first thought of the conference. Factor in that no hotel seems to be affected by the ongoing economic troubles suffered by everyone else, or at least that is the front they all put up, and before even setting forth, the organizer begins to question their decision. Think about this, at a technology conference, you are selecting the basis for every major component that makes or breaks the conference (internet, room rates, number, feel, food) roughly 6-8 months in advance with little to no validation that the conference will work or who will show up.</p>
<p><em>Lodging</em></p>
<p>Worse still, you are dedicating roughly 55% of your budget to a group that is only contractually required to turn the lights on and unlock the doors. Organizers have little to no protection in venue contracts, but bear all of the risk. If you assume a hotel for &#8220;ease of selection&#8221;, the organizer has to guarantee at their own personal risk a room block, meaning a set of rooms that must be filled by certain number of attendees otherwise you pay for the rooms to be vacant. You have to make the estimate on the size of the room block long before you really even know the numbers of attendees AND you cannot increase the size without going through another round of negotiation with the hotel. So you are stuck trying to fill rooms in a hotel to (normally) within a 5 room night space considered &#8220;acceptable&#8221; by the hotel. Worse still, the room rate is &#8220;offered&#8221; with little bearing to the market and little control over any &#8220;considerations&#8221;. Most hotels will offer the organizer a &#8220;price lower than any other available&#8221;, but will sell the rooms on Priceline/Hotwire for at or below the event price. Aside from the organizer or an attendee actually booking a room through such services, the organizer will never find out and therefore can never exercise the contract line item - rendering it completely useless. </p>
<p>The mere selection of the venue is a precarious clusterfuck as well, if you choose a venue in the city which affords excitement and self-directed activities for the attendees, you can look for a room rate of $200-$500/night for your attendees at first negotiation. That pretty much prohibits anyone from attending except for local people who do not help you on the aforementioned room block issue. Also you have to factor in that the cost of the hotel room directly affects the cost of the conference, since you will most likely be providing a space for your invited speakers (yet to be determined) to stay. Consider a two day (16 speakers) single track conference, the cost of hosting speakers so you can ensure that they are ready and &#8220;on-call&#8221; normally runs roughly $15,000-$30,000 of the budget. This is also why negotiating the venue is absolutely essential, but it is very stressful, frustrating, and can build a tremendous amount of hostility between the organizer and the venue early on, yielding a less than satisfying relationship on going.</p>
<p>If you hold the conference outside the city, the price does go down to anywhere from $100-$250, but the organizer has to balance the likelihood of someone taking a taxi from the nearest airport to get to your conference, which decreases with every mile out from a major airport. Since you aren&#8217;t in a major metropolis (possibly in the suburbs) you likely will have to find (or create) things for your attendees to do/see/eat outside of the conference. Or you could just not care - but then the perceived quality of the conference rapidly degrades, because the attendees will just go back to their rooms and complain. So now you are looking at a social budget and the first thing you will consider is the hotel. Hotel parties cost anywhere from $10,000 - $14,000 for a group the size of 150 people, because according to their analysis people will consume $86 worth of food and drink over two hours. Stop for a second a re-read that, you could send everyone to the fanciest of restaurants in the region for that price, but instead you are going to pay that for chicken-on-a-stick and Bud Light. On top of that there is generally a 22%-30% gratuity that must be paid to thank the people cooking and serving the food - regardless of their performance. It is without a doubt, impossible to justify the cost so the organizer will now have to find a new venue for the social events, making it exponentially more complex. </p>
<p>And then there is food and beverages during the day. Most hotels and venues will not let you bring in outside food, feigning rules of &#8220;state law&#8221; and &#8220;labor restrictions&#8221; - all of which is complete hogwash barring two states. So they will provide the organizer with the only option for food, which comes with prices that are outrageous. By outrageous, I mean $26 per person for a &#8220;continental breakfast&#8221; of day-old pastries and $40 per person for deli sandwiches. So for a given attendee, you are looking at spending anywhere from $50 - $75 per person per day. This amount will be even higher if you attempt accommodate your guests throughout the day with coffee and sodas which can easily range from $28 - $36 per person, per day. So tabulating that out, if you run a conference for 150 people spread over 2 days, you are looking at a base price for accommodating your guests of roughly $34,000 on average. </p>
<p>So as a conference organizer, just to get started, you require about $50,000 to just secure the base essentials of speakers and food/beverage. So next time you complain about the price of admission to event X or conference Y consider this, in order to break even for an &#8220;ok&#8221; event in a reasonable place, the bear minimum the conference organizers should charge without expectation of sponsorship is $189 per day per person. That is just covering your attendance and the presence of the speakers for the event. Mind you that is only a one track conference, as you add more tracks the number of &#8220;compensated&#8221; speakers grows normally at the exchange of paying guests, which directly changes the cost per person per day. Furthermore that number does not cover the cost of speaker travel, which can range anywhere from $300 to $700 per speaker. </p>
<p> </p>
<hr />
<p> </p>
<p>I have been sitting on this post for a while, I do intend on continuing the series, but I wanted to get this out. Seriously, stop bitching about grass roots conferences, if you have an issue with them, then offer to help - it will be gladly accepted. The grass roots, organic conference movement has provided some of the most amazing events in the technology industry, but they are fading because the response is generally one of &#8220;OMG I HATE YOU&#8221; or &#8220;WTF YOU FAILED ON&#8230;&#8221; instead of looking at what positive things were done. If you think you can do better, I encourage you to go for it. You will have a new appreciation for every other event you attend thereafter. </p>
<p> </p>
<p> </p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Palomar tasting event. ]]></title>
    <link href="http://voodootikigod.github.com/palomar-tasting-event/"/>
    <updated>2010-03-11T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/palomar-tasting-event</id>
    <content type="html"><![CDATA[<p>[[posterous-content:vdhdgnEboqaoimneisnF]]</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Announcing Charles Jolley at JSConf 2010]]></title>
    <link href="http://voodootikigod.github.com/announcing-charles-jolley-at-jsconf-2010/"/>
    <updated>2010-02-25T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/announcing-charles-jolley-at-jsconf-2010</id>
    <content type="html"><![CDATA[<p>As you may or may not know, this year we started out with a <a href="http://jsconf.us/2010.js">very risky web site concept</a>. Hailed by some as crazy and others as &#8220;elitist BS&#8221;, either way it was pretty good filter for speakers. Some found it, others needed a little treasure map. Charles Jolley actually emailed us, provided a fitting description of himself, and asked how he could propose to speak. All we needed to say was &#8220;use web inspector&#8221; to which we received his one line response: &#8220;lol. &nbsp;clever.&#8221; At that point, I knew he was the kind of speaker we were looking for. Charles is the creator of the now famous and widely used <a href="http://www.sproutcore.com">SproutCore</a>. SproutCore is the Rich Internet Application (RIA) framework at play in such applications as <a href="http://www.me.com">MobileMe</a> from Apple and <a href="https://bespin.mozillalabs.com/">Bespin</a> from <a href="http://www.mozilla.com">Mozilla</a> (also a JSConf Sponsor 2 years running). Charles currently works for Apple as a senior front end architect, which is without a doubt an impressive title.</p>
<p>Charles plans on demonstrating the HTML5 love that SproutCore 1.1 comes packed to the brim with. Taking RIA and binding it with HTML5 - Brilliant! Charles also has some great things he is planning on demonstrating that will really blow your socks (or boots as the case maybe) off. This is going to be quite the presentation especially for building complex and very rich internet applications. We might even have some buccaneers with contrarian view points strategically placed in the audience to heckle him&#8230; You will have to be there to find out more!</p>
<p><a href="http://jsconf.us/2010/speakers.html">All JSConf Speakers</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Snowmaggedon 2010]]></title>
    <link href="http://voodootikigod.github.com/snowmaggedon-2010/"/>
    <updated>2010-02-07T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/snowmaggedon-2010</id>
    <content type="html"><![CDATA[<p>[[posterous-content:iAbvtawrslcCvvIxvwEd]]</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[CommonJS: the First Year]]></title>
    <link href="http://voodootikigod.github.com/commonjs-the-first-year/"/>
    <updated>2010-01-30T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/commonjs-the-first-year</id>
    <content type="html"><![CDATA[<div class="posterous_bookmarklet_entry">
      <blockquote><div>
        
	
		
			<div>
				<div>Posted on January 29th, 2010 by Kevin Dangoor</div>
				<h3><a href="http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-year/" title="Permanent Link to CommonJS: the First Year" rel="bookmark">CommonJS: the First Year</a></h3>
		
				<div>
					<p>A year ago today, I posted <a href="http://www.blueskyonmars.com/2009/01/29/what-server-side-javascript-needs/">“What Server Side JavaScript Needs”</a>, inviting people to come and turn JavaScript into a competitive platform for applications on the server. Quite a few people answered the call. While the focus of the group has been on JavaScript in non-browser contexts, we’re ultimately shooting for as much of a standard that can cross between server, browser, GUI and command line applications as possible. That’s why we changed the name to <a href="http://commonjs.org/">CommonJS</a> in the second half of the year. Ironically, most of my own personal use of CommonJS so far has been in the browser. I’ll come back to the personal perspective, though.</p>
<h3>The Original Goals</h3>
<p>As laid out in my original blog post, we were seeking to create:</p>
<ul>
<li>A module system,</li>
<li>A cross-interpreter standard library,</li>
<li>A few standard interfaces,</li>
<li>A package system, and</li>
<li>A package repository</li>
</ul>
<p>Note that the idea here is that this group creates specs, which will have multiple implementations.</p>
<p>The goal is to have these things working across as many operating systems and interpreters as possible. There are three major operating systems (Windows, Mac, Linux) and four major interpreters (SpiderMonkey, Rhino, v8, JavaScriptCore). Plus there’s “the browser”, which is a unique environment unto itself. That’s a fair bit of surface area to cover.</p>
<p>Oddly, I think the one of those eight “platforms” with the poorest implementation support is Windows. Most of the CommonJS developers are using Macs or Linux machines, so I’m not sure how much time has really been spent on Windows. I would imagine that JavaScriptCore on Windows is probably the least supported combination.</p>
<p>The good news, however, is that there are projects using <em>all</em> of those JavaScript interpreters and platform compatibility issues will ultimately be ironed out.</p>
<h3>CommonJS and the ECMAScript Standard</h3>
<p>The CommonJS group is a grassroots effort, and not some formal standards body. In some ways, however, it works like a standards body in that the people working on the standard are also implementing the standard-in-progress and using it to build real applications.</p>
<p>We have no control over the ECMAScript language, which is managed by the TC39 working group. However, there are a few people involved in CommonJS who are part of TC39, and I have firsthand knowledge of others who are keeping an eye on how things are going with CommonJS.</p>
<p>The CommonJS standard-in-progress is designed to work on a subset of ECMAScript 5 that can be made to work on today’s ECMAScript 3 interpreters. ECMAScript 3 is the standard that is running in all of the browsers. In other words, in a CommonJS application you can count on Array.prototype.forEach to be implemented. Obviously, applications can do whatever they want (array destructuring? knock yourself out, but your app will only work on SpiderMonkey and Rhino).</p>
<p>One certainty about CommonJS is that inventing new language syntax is out of scope.</p>
<h3>The Module System</h3>
<p>The CommonJS group has been remarkably good at avoiding bikeshedding. While there is discussion about names of things, there isn’t <em>heated</em> discussion about it. People are far more interested in issues of functionality and ease-of-use. This is a very good thing, and it allowed us to get <a href="http://wiki.commonjs.org/wiki/Modules/1.1">modules</a> out of the way early on.</p>
<p>Of course, the lack of bikeshedding doesn’t mean that everyone agrees on things. The CommonJS module system has its controversial aspects, but I think it does well given the constraints:</p>
<ol>
<li>must work with ES3 syntax (destructuring could actually be useful, but we’re not going to do it)</li>
<li>modules should have self-contained namespaces and be explicit about data the want to export</li>
<li>it should be possible to make modules tamper-proof, though this is not a requirement</li>
<li>using a module should be competitive with using modules in languages like Python and Ruby</li>
</ol>
<p>TC39 had considered adding modules to ECMAScript 4 and there are module proposals on the table for ECMAScript Harmony that would add some syntax to JavaScript that would look similar to CommonJS modules. Here’s a short module to give you an idea of what CommonJS modules look like:</p>
<div class="CodeRay">
  <div class="code"><pre>var sillymath = require(&quot;extramath/silly&quot;);

exports.addTwo = function(num) {
    return sillymath.add(num, 2);
};</pre></div>
</div>

<p>Personally, I find this to be reasonably concise with a nice level of explicitness. Some syntax sugar would be good, and I hope we get that in ES-Harmony. But, this syntax works fine today.</p>
<p>Of course, this syntax is not without controversy. The biggest controversy has been that require() is synchronous – the “extramath/silly” module has to be available as the module above is loaded. However, there are a couple of reasonable ways to deal with this problem and I am happily working with CommonJS modules in the browser which is the environment that is least tolerant to synchronous loading.</p>
<p>Controversy or not, this basic module system was ratified last winter and has been implemented on all target environments of CommonJS.</p>
<p>Discussion is ongoing for a tie-in to the module standard: the <a href="http://wiki.commonjs.org/wiki/Modules/Transport">module transport</a> standard. Without additional help from the browser or some additional scaffolding running in the page, the module syntax above doesn’t work via a </p>
<h2>The Standard Library</h2>
<p>I had hoped we’d get farther on the standard library than we have, but it can indeed be a long process. <a href="http://wiki.commonjs.org/wiki/System/1.0">system</a> and <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.0">unit testing</a> are the only ones that have been ratified at this point. We have come a long way on file access.</p>
<p>“What!?!?”, I hear you say, “there’s no standard for accessing files yet?” That’s right. And there are a couple of reasons that it’s been challenging to get there.</p>
<p>Consider that JavaScript does not even have a standard object to deal with <em>binary data</em>. That is a basic prerequisite to working with files. JavaScript strings are not the same as a binary data container. So, there’s binary data to handle, streams to figure out and then file functionality built on top of that. There’s also the consideration of whether file access is synchronous or asynchronous. We’ve made tons of headway on this, and there are certainly implementations of some of the specs. It’s just a matter of finishing them.</p>
<p>I’m hoping to see <a href="http://wiki.commonjs.org/wiki/Promises">promises</a> become a part of the standard, because some form of that interface is very convenient to use for asynchronous operations.</p>
<h2>Standard Interfaces</h2>
<p>We do have a very useful interface with implementations and people actively using it: the <a href="http://wiki.commonjs.org/wiki/JSGI/Level0/A/Draft2">JavaScript Gateway Interface (JSGI)</a>. That spec has not yet been ratified, but it is getting closer and there are apps being built against it today.</p>
<p>Database access has not yet been standardized. It will be interesting to see if we can come up with a good interface that can usefully target SQL and NoSQL databases alike.</p>
<h2>Package System</h2>
<p>We have a recently ratified spec for <a href="http://wiki.commonjs.org/wiki/Packages/1.0">packages of CommonJS code</a>. I hope this will bring about a collection of good package managers with different focuses and targeting different environments. There have already been a couple of attempts to create package management systems, and the most fleshed out one that I’ve seen is Tusk, which is bundled with <a href="http://narwhaljs.org/">Narwhal</a>. Once a few more specs are ratified, Tusk should be able to run on other CommonJS implementations.</p>
<h2>Package Repository</h2>
<p>Tusk is using <a href="http://github.com/">GitHub</a> as a package repository, and that is working okay for the time being. A couple weeks back, we got word that the <a href="http://groups.google.com/group/commonjs/browse_thread/thread/39dcdede35edcddd">jQuery plugin repository is going to provide a CommonJS package.json file</a> for the ~5000 plugins in their database. This is exciting, because this infrastructure could prove to be very useful to us going forward.</p>
<h2>JavaScript: Bubbling Up</h2>
<p>2009 was a terrific year for JavaScript. In the browser, we’ve obviously seen tons of growth in increasingly sophisticated applications. I think the interest is steadily building to use JavaScript more and more outside of the browser. The two JSConf conferences (in <a href="http://jsconf.us/">Washington DC</a> and <a href="http://jsconf.eu/">Berlin</a>) were great successes by all accounts I’ve seen. <a href="http://phonegap.com/">PhoneGap</a>, <a href="http://www.appcelerator.com/">Titanium</a> and Palm’s <a href="http://developer.palm.com/">WebOS</a> have created ways for people to use web tech to create installable apps for mobile phones. <a href="http://nodejs.org/">node.js</a> has been a huge driver for people to check out building scalable, asynchronous JavaScript apps on the server. And, of course, CommonJS is finding its way into more and more applications.</p>
<h2>My Personal View</h2>
<p>I had hoped to personally have more time to devote to CommonJS in 2009, but I am delighted at how a great collection of people have stepped in and carried the specifications and implementations forward through a lot of hard work and force of will. More than 5,100 messages have gone across the mailing list, and more than 10% of those have been from <a href="http://askawizard.blogspot.com/">Kris Kowal</a>. Kris has done a ton of work in ironing out many of the specs and deserves a good deal of credit for where CommonJS is today. He and <a href="http://tlrobinson.net/">Tom Robinson</a> even stood in for me when I had to cancel my trip to JSConf.eu (thanks, guys!).</p>
<p>Taking a look at the <a href="http://groups.google.com/group/commonjs/about">top posters on the googlegroup</a>, you can see how many people have put so much into CommonJS. More than 10 people have contributed more than 100 messages a piece and, for many of those people, there was a lot of time spent in the email discussions, IRC chats, spec writing and implementation of those specs. Plus, as early adopters, they have the joy of tweaking things as the specs have changed over time. Thanks to all of you for the dedication and the will to get it done.</p>
<p><a href="http://mozillalabs.com/bespin/">Bespin</a>’s client side JavaScript code is all CommonJS modules now, partly thanks to the efforts of <a href="http://www.okito.net/">Charles Jolley</a> to migrate the <a href="http://sproutcore.com/">SproutCore</a> framework to CommonJS and creating the Tiki module loader. From that standpoint, I’m already using more CommonJS now than I did in 2009. I’m also hoping that 2010 will bring a Bespin server “reboot”, where we start migrating server functionality to CommonJS.</p>
<p>On the whole, I think that 2009 was a great year for JavaScript and CommonJS and I think 2010 is going to be even bigger. I hope to meet more enthusiastic JavaScript hackers at JSConf.us in April!</p>
<h3>Comments?</h3>
<p>You can direct them to the <a href="http://groups.google.com/group/commonjs/browse_thread/thread/53c59828899ffcd9">thread on the CommonJS googlegroup</a> or email to <a href="http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-yearmailto:editor@blueskyonmars.com">editor@blueskyonmars.com</a>.</p>
<p><span><a href="http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-year#" title="ShareThis via email, AIM, social bookmarking and networking sites, etc."><span>ShareThis</span></a></span></p>				</div>
			</div>
			




			
		<p>Comments are closed.</p>

	

		
		<p>

	
	</p></div></blockquote>

<div class="posterous_quote_citation">via <a href="http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-year/">blueskyonmars.com</a></div>
    <p>What a year for CommonJS and JavaScript in general. One has to wonder what 2010 holds for JavaScript and the JavaScript community!</p></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Night out]]></title>
    <link href="http://voodootikigod.github.com/night-out/"/>
    <updated>2010-01-22T00:00:00-05:00</updated>
    <id>http://voodootikigod.github.com/night-out</id>
    <content type="html"><![CDATA[<p>[[posterous-content:oavvqHHihgGIkbvywCkA]]</p>
]]></content>
  </entry>
  
</feed>
