Skip to content
Browse files

move to new index

  • Loading branch information...
1 parent f26b9c8 commit 9694b2343398634c26d763f05d4471df5230ceb5 @eladb eladb committed
Showing with 27 additions and 132 deletions.
  1. +1 −1 build.js
  2. +25 −9 index.html
  3. +0 −121 index_new.html
  4. +1 −1 rss.xml
View
2 build.js
@@ -11,7 +11,7 @@ process.chdir(__dirname);
var projectsDir = 'projects';
var jadeFile = 'index.jade';
-var outputFile = 'index_new.html';
+var outputFile = 'index.html';
var contribFile = 'contrib.json';
var rssFile = 'rss.xml';
View
34 index.html
@@ -5,15 +5,11 @@
.sidebar-nav {
padding: 9px 0;
}
-</style><link href="css/index.css" rel="stylesheet"></head><body><div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container"><a href="#" class="brand"><strong>anode@microsoft</strong> blog</a><ul class="nav"></ul></div></div></div><div class="container"><div class="row"><div class="span8"><br><br><div class="row"></div><a name="launching-anodejsorg"></a><h1>We work at Microsoft and we use node.js</h1>
-<p><small>Posted on March 20, 2012 by <a href="https://github.com/eladb">Elad Ben-Israel</a></small>
-<br/>
-<br/>
+</style><link href="css/index.css" rel="stylesheet"></head><body><div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container"><a href="#" class="brand"><strong>anode@microsoft</strong> blog</a><ul class="nav"></ul></div></div></div><div class="container"><div class="row"><div class="span8"><br><br><div class="row"></div><a name="launching-anodejsorg"></a><h1>We work at Microsoft and we use node.js</h1><p><small>Posted on Tuesday, March 20, 2012 by <a href="http://eladb.github.com">Elad Ben-Israel</a></small><br/></p><p>We recently spent some time with <a href="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure">Charles Torre from Channel 9</a>, discussing node.js at Microsoft and the project we have been working on, <strong>anode</strong>.
</p>
-<p>We recently spent some time with <a href="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure">Charles Torre from Channel 9</a>, discussing node.js at Microsoft and the project we have been working on, <strong>anode</strong>.
+<iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure/player?w=512&h=288" frameBorder="0" scrolling="no"></iframe>
-</p>
<p>We thought it would be a nice opportunity to launch our blog and share some of our experiences. Currently there are no plans to release anode as a service, but we are pleased to share the modules we have created as part of the project.
</p>
@@ -94,6 +90,25 @@
</p>
<p>Feel free to <a href="https://github.com/anodejs">contact us</a> if you have any questions or comments,<br><strong>The anode crew</strong></p>
+<hr><div id="disqus_thread"></div>
+<script type="text/javascript">
+ var disqus_shortname = 'anodejs';
+ var disqus_developer = 0;
+ var disqus_identifier = '/#launching-anodejsorg';
+
+ /* * * DON'T EDIT BELOW THIS LINE * * */
+ (function() {
+ var dsq = document.createElement('script');
+ dsq.type = 'text/javascript';
+ dsq.async = true;
+ dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ })();
+</script>
+<noscript>
+ Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a>
+</noscript>
+<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
</div><div class="span4"><div class="sidebar-nav"><ul class="nav nav-list"><p>All our modules are available on <a href='https://github.com/anodejs'>GitHub</a> and published under the <a href='http://en.wikipedia.org/wiki/MIT_License'>MIT License</a>.</p><p>We welcome contributions and feedback!</p><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-rinuts">rinuts</a></h3></li><dl><dt></dt><p>An HTTP server which exposes unit tests via REST API.<br/>Rinuts is extensible via 'rinuts-drivers'. Currently, we maintain: <ul><li>A <a href='https://github.com/urigolani/rinuts-nodeunitDriver'>nodeunit</a> driver</li><li>An mstest (!!) driver for Windows</li></ul></p><dt></dt><p class="usage">Each app that runs on <i>anode</i> may choose to expose black box tests using <strong>rinuts</strong> (or rinuts-compatible HTTP API). This allows us to automatically run app tests against any version of the code when we integrate code into master or during development.</p></dl><a href="https://github.com/anodejs/node-rinuts" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/urigolani">urig</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-docrouter">docrouter</a></h3></li><dl><dt></dt><p>A Connect/Express router wrapper which exposes a formatted description of the available services of a server. The documentation is available is multiple formats (Html, Wadl, Json).</p><dt></dt><p class="usage">We use <strong>docrouter</strong> to automatically create documentation and command line completion of our internal APIs and for APIs of apps created on top of <i>anode</i>.</p></dl><a href="https://github.com/anodejs/node-docrouter" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/saary">saary</a>,
<a href="https://github.com/gilad61">gilado</a>,
<a href="https://github.com/amiturgman">amiturgman</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-gits">gits</a></h3></li><dl><dt></dt><p>A Windows-friendly <a href='http://git-scm.com/'>git</a> wrapper for node.js with some useful sugar.</p><dt></dt><p class="usage">Deployment on <i>anode</i> uses git and <a href='https://github.com'>github</a>. Whenever we push stuff upstream, a github post-commit trigger is sent to our system and broadcasted to all the servers. We use <strong>gits</strong> to mirror the local filesystem from the remote repository and deploy apps continuously onto the various clusters.</p></dl><a href="https://github.com/anodejs/node-gits" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/gilad61">gilado</a>,
@@ -102,9 +117,10 @@
<a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-rebus">rebus</a></h3></li><dl><dt></dt><p>State-based intra-server pub/sub library. Listen to changes on <i>data</i> rather on <i>events</i>.</p><dt></dt><p class="usage">Our apps repository and system topology are exposed using <strong>rebus</strong> to any apps running on <i>anode</i>. Apps can monitor these structures for changes and act upon them.</p></dl><a href="https://github.com/anodejs/node-rebus" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/yosefd">yosefd</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-spinner">spinner</a></h3></li><dl><dt></dt><p>Spin and maintain child processes with a few nice features:<ul><li>Wait for children to bind to a port</li><li>Shutdown after idle timeout</li><li>Automatically restart on file changes</li><li>Faulty state if terminates too fast</li><li>Pipe stdout/stderr</li></ul></p><dt></dt><p class="usage">This module is used by <a href='#farmjs'>farmjs</a> to spin up apps.</p></dl><a href="https://github.com/anodejs/node-spinner" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a>,
<a href="http://mojodna.net">mojodna</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/amiturgman/aCLI">aCLI</a></h3></li><dl><dt></dt><p>Lean and mean jQuery plugin that implements a text console with HTTP plugins, help and many more goodies</p><dt></dt><p class="usage">We use this control as the main dashboard of the anode system. Apps create plugins for management purposes and developers use the console to view logs and investigate app conditions.</p></dl><a href="https://github.com/amiturgman/aCLI" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/amiturgman">amiturgman</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-ctxobj">ctxobj</a></h3></li><dl><dt></dt><p>Overloads javascript objects with <code>pushctx()</code> and <code>popctx()</code> functions. They can be used to create derived objects overloaded with a context stack. This module also exports a <code>console()</code> function that can be used to wrap any console-like object in context stack which will be printed as a prefix to any log line.</p><dt></dt><p class="usage">We use this library to create super readable and easy to read logs for our distributed system. Each log line contains a context stack that can be used to track down flows across processes and servers.</p></dl><a href="https://github.com/anodejs/node-ctxobj" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-fsmjs">fsmjs</a></h3></li><dl><dt></dt><p>A general-purpose finite state machine module that can be used to implement complex control flows.</p><dt></dt><p class="usage"><strong>fsmjs</strong> is used by <a href='#spinner'>spinner</a> to maintain the lifetime of child processes.</p></dl><a href="https://github.com/anodejs/node-fsmjs" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-ssltunnel">ssltunnel</a></h3></li><dl><dt></dt><p>A lightweight TCP over SSL / TLS tunnel running over node. If you need to add confidentiality (privacy), integrity, and authenticity to your TCP stream this is the tool for you.</p><dt></dt><p class="usage">We use <strong>ssltunnel</strong> to connect securely and transparently to our storage servers.</p></dl><a href="https://github.com/anodejs/node-ssltunnel" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/dimastopel">dimast</a>,
<a href="https://github.com/yosefd">yosefd</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/eladb/node-statestream">statestream</a></h3></li><dl><dt></dt><p>Quickly creates HTTP downstreams for state changes. Just plug in an in-memory object (or a function) and consumers will be updated on changes.</p><dt></dt><p class="usage">We use <strong></strong> to enable web-based real-time view of some of the system elements.</p></dl><a href="https://github.com/eladb/node-statestream" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-ypatterns">ypatterns</a></h3></li><dl><dt></dt><p>Misc javascript programming patterns.</p><dt></dt><p class="usage"></p></dl><a href="https://github.com/anodejs/node-ypatterns" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/yosefd">yosefd</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-sharp">node-sharp</a></h3></li><dl><dt></dt><p>A native node.js extension which allows loading .NET assemblies and use them within node.js.</p><dt></dt><p class="usage">We use <strong>node-sharp</strong> to access some .NET code we didn't want to rewrite and some Windows-specific facilities.</p></dl><a href="https://github.com/anodejs/node-sharp" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/JettJones">jettj</a>,
-<a href="https://github.com/saary">saary</a></span></div></ul></div></div></div><footer><strong>&copy; Microsoft Corporation 2012</strong>
+<a href="https://github.com/saary">saary</a></span></div></ul></div></div></div><footer>&copy; Microsoft Corporation 2012
|
+<a href="rss.xml" class="feed">subscribe</a>&nbsp; |
built with
<a href="http://twitter.github.com/bootstrap">bootstrap</a>,
-<a href="#">jade</a>,
-<a href="#">marked</a></footer></div></body><script type="text/javascript" src="js/jquery-1.7.1.min.js"></script><script type="text/javascript" src="js/analytics.js"></script></html>
+<a href="http://jade-lang.com">jade</a>,
+<a href="https://github.com/chjj/marked">marked</a></footer></div></body><script type="text/javascript" src="js/jquery-1.7.1.min.js"></script><script type="text/javascript" src="js/analytics.js"></script></html>
View
121 index_new.html
@@ -1,121 +0,0 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>anode@microsoft</title><meta name="author" content="elad ben-israel"><link href="css/bootstrap.min.css" rel="stylesheet"><style type="text/css">body {
- padding-top: 60px;
- padding-bottom: 40px;
-}
-.sidebar-nav {
- padding: 9px 0;
-}
-</style><link href="css/index.css" rel="stylesheet"></head><body><div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container"><a href="#" class="brand"><strong>anode@microsoft</strong> blog</a><ul class="nav"></ul></div></div></div><div class="container"><div class="row"><div class="span8"><br><br><div class="row"></div><a name="launching-anodejsorg"></a><h1>We work at Microsoft and we use node.js</h1><p><small>Posted on Tuesday, March 20, 2012 by <a href="http://eladb.github.com">Elad Ben-Israel</a></small><br/></p><p>We recently spent some time with <a href="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure">Charles Torre from Channel 9</a>, discussing node.js at Microsoft and the project we have been working on, <strong>anode</strong>.
-
-</p>
-<iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure/player?w=512&h=288" frameBorder="0" scrolling="no"></iframe>
-
-<p>We thought it would be a nice opportunity to launch our blog and share some of our experiences. Currently there are no plans to release anode as a service, but we are pleased to share the modules we have created as part of the project.
-
-</p>
-<h3>Some background</h3>
-<p>Microsoft is probably the most diverse software company in the world. We build almost every type of software out there. It&#39;s amazing to witness how almost every software piece we use at the company is 100% home grown. I don&#39;t think there&#39;s any other company in the world like that: the operating systems we use on our desktops, laptops, servers and phones, the office suite, the IDE, compiler, source control, build system, issue tracking, project management, docs management, databases, our game room has Xbox and Kinect. Hell, even the phone system now uses Lync. Crazy. Inspiring. Addictive...
-
-</p>
-<p>With that in mind, when designing new systems, decisions are apperently simple: run on Windows, host on IIS, write in .NET, use WCF, source control in TFS, data on SQL and so forth. However, good engineers understand that it is important to choose the right tools for the job. When you only have one option for each part of your stack, you don&#39;t make choices and naturally you will end up with sub-optimal solutions.
-
-</p>
-<p>And there are some really good engineers at Microsoft!
-
-</p>
-<p>Luckily, one of those engineers led our team a while back. He understood that he needs to keep us on our toes and make sure we don&#39;t find ourselves in this nice and happy <a href="http://en.wikipedia.org/wiki/Not_invented_here">NIH syndrome</a> cosiness. He used to send out those emails encouraging us to play around and try new technologies and kept reminding us that we need to keep looking for the right tools, even if, god forbid, they were not created in Redmond.
-
-</p>
-<p>One of these emails was about <a href="http://nodejs.org">node.js</a>. That was 8 months ago, so the node.js community was already pretty crazy. There were about 5,000 modules at the npm repository back them (today there are over 8,000) and things have been moving fast. Two of us decided to spend a day and play around.
-
-</p>
-<h3>Not optimized for prototyping</h3>
-<p>One of the pain points we had at the time was the turn-around time for publishing new code. We were doing a lot of experimentation and prototyping and the stack we were using (.NET/WCF/IIS/Azure; msbuild/mstest/TFS) practically meant a turn-around of about 2 hours:
-
-</p>
-<ol>
-<li>Build and test locally using Azure dev fabric and mocks</li>
-<li>Submit for the TFS build server to build and create a package</li>
-<li>Upload package to azure</li>
-<li>Deploy to staging</li>
-<li>Verify nothing broke by running tests against staging</li>
-<li>VIP-swap to production</li>
-</ol>
-<p>Another big pain was the fact that it took about one minute for logs to be transfered from our roles into the Azure Table, from which we needed to download them and only then figure out what went wrong.
-
-</p>
-<p>Now all this process was needed not nessesarily because we had millions of users who needed super high quality code (a lot of the stuff we did was experimental in nature). The main reason we needed all this was because of the 2h/1m turn-around. Since you couldn&#39;t really &quot;develop on the cloud&quot;, you had to make sure things are going to work before you deployed, because once something didn&#39;t work (usually it was one of those &quot;it all worked locally, damn it&quot; bugs), 2 more hours went out the window...
-
-</p>
-<p>We kept trying to improve the process: reduce testing time, improve our simulators to make sure they behave like the cloud, build in parallel, aggregate changes into less deployments, use log viewers we found to monitor the system. But we were an order of magnitude away from just writing a few lines of code, see if they worked okay on the cloud and integrated well with everything else and repeatedly do that over and over. And that&#39;s how we wanted to work…
-
-</p>
-<h3>From 7,200 to 10 in one day</h3>
-<p>Amazingly, after a day of work in a nice little coffee place in Tel-Aviv, borrowing ideas from <a href="http://smarxrole.codeplex.com">Smarx Role</a> and other PaaS providers, we managed to create an Azure role that &quot;listened&quot; on a blob account. When a blob container changed, it downloaded the code from that container, spawned <code>node index.js</code> (with an allocated <code>process.env.PORT</code>) and using <a href="https://github.com/nodejitsu/node-http-proxy">http-proxy</a>, routed incoming requests into these apps. When you went into the blob and updated one of the files, the role re-fetched the changes and respawned the app. We also grabbed <code>stdout/err</code> and pushed it almost immediately into an Azure Table. We wrote a little web app that tailed the table and showed recent logs in almost real-time.
-
-</p>
-<p>So turn-around dropped from 2 hours to 10 seconds.
-
-</p>
-<h3>Magic!</h3>
-<p>Our team was pretty excited. We felt that there&#39;s a new tool in the toolbox that&#39;s worth trying out. Gradually, people started using node.js for their experiments and protoypes and hosted their apps on our nice little PaaS-like role. People were happy that they can actually write the code and run it on the cloud so quickly, and if something didn&#39;t look good, they just updated it and it&#39;s instantly published.
-
-</p>
-<p>Node.js and the ecosystem around it proved to be an incredibly friendly stack to learn and use. We found many useful node modules and a lot of high quality documentation and conversation shared openly by some awesome hackers.
-
-</p>
-<p>Today we have a team of about 30 people (located in Tel-Aviv, San Francisco and Seattle) that use node.js and host their apps on our little platform.
-
-</p>
-<p>Another coincidental development was that two other teams at Microsoft started looking at node.js seriously around the same time: <strong>(1)</strong> The folks at the developer division joined efforts with <a href="http://www.joyent.com">Joyent</a> in order to create a native Windows port for node.js (we initially used the cygwin port), so today we have node.js running and behaving beautifully on Windows; and <strong>(2)</strong> the Azure team started working on <a href="https://github.com/tjanczuk/iisnode">iisnode</a> and the <a href="http://www.windowsazure.com/en-us/develop/nodejs">Azure Node.js SDK</a>, which makes our lives so much easier running our node.js PaaS on Azure.
-
-</p>
-<p>Ever since, we added some nice improvements, but we try to keep things simple and tailored to our actual needs:
-
-</p>
-<ul>
-<li>Code is automatically fetched from git and not from blob storage. Working in deltas makes so much sense in this context.</li>
-<li>We deploy multiple git branches as means to isolate apps in development from production (but still want them all on the cloud).</li>
-<li>We run tests against the deployed apps when we merge code to production.</li>
-<li>We provide a MongoDB as a service for apps.</li>
-<li>We use a fun web command line console that to interact with the system and apps.</li>
-<li>We measure useful metrics for apps and provide standard request logging.</li>
-</ul>
-<p>Currently, there is no plan to make anode externally available as a service, but we do have a commitment to open-source as many components of the system as we can and share our experience.
-
-</p>
-<p><strong>We started this site as home to these components and we plan to provide some more context on what we do through the blog.</strong>
-
-
-</p>
-<p>Feel free to <a href="https://github.com/anodejs">contact us</a> if you have any questions or comments,<br><strong>The anode crew</strong></p>
-
-<hr><div id="disqus_thread"></div>
-<script type="text/javascript">
- var disqus_shortname = 'anodejs';
- var disqus_developer = 0;
-
- /* * * DON'T EDIT BELOW THIS LINE * * */
- (function() {
- var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
- })();
-</script>
-<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
-<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
-</div><div class="span4"><div class="sidebar-nav"><ul class="nav nav-list"><p>All our modules are available on <a href='https://github.com/anodejs'>GitHub</a> and published under the <a href='http://en.wikipedia.org/wiki/MIT_License'>MIT License</a>.</p><p>We welcome contributions and feedback!</p><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-rinuts">rinuts</a></h3></li><dl><dt></dt><p>An HTTP server which exposes unit tests via REST API.<br/>Rinuts is extensible via 'rinuts-drivers'. Currently, we maintain: <ul><li>A <a href='https://github.com/urigolani/rinuts-nodeunitDriver'>nodeunit</a> driver</li><li>An mstest (!!) driver for Windows</li></ul></p><dt></dt><p class="usage">Each app that runs on <i>anode</i> may choose to expose black box tests using <strong>rinuts</strong> (or rinuts-compatible HTTP API). This allows us to automatically run app tests against any version of the code when we integrate code into master or during development.</p></dl><a href="https://github.com/anodejs/node-rinuts" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/urigolani">urig</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-docrouter">docrouter</a></h3></li><dl><dt></dt><p>A Connect/Express router wrapper which exposes a formatted description of the available services of a server. The documentation is available is multiple formats (Html, Wadl, Json).</p><dt></dt><p class="usage">We use <strong>docrouter</strong> to automatically create documentation and command line completion of our internal APIs and for APIs of apps created on top of <i>anode</i>.</p></dl><a href="https://github.com/anodejs/node-docrouter" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/saary">saary</a>,
-<a href="https://github.com/gilad61">gilado</a>,
-<a href="https://github.com/amiturgman">amiturgman</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-gits">gits</a></h3></li><dl><dt></dt><p>A Windows-friendly <a href='http://git-scm.com/'>git</a> wrapper for node.js with some useful sugar.</p><dt></dt><p class="usage">Deployment on <i>anode</i> uses git and <a href='https://github.com'>github</a>. Whenever we push stuff upstream, a github post-commit trigger is sent to our system and broadcasted to all the servers. We use <strong>gits</strong> to mirror the local filesystem from the remote repository and deploy apps continuously onto the various clusters.</p></dl><a href="https://github.com/anodejs/node-gits" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/gilad61">gilado</a>,
-<a href="https://github.com/yosefd">yosefd</a>,
-<a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-mongueue">mongueue</a></h3></li><dl><dt></dt><p>A MongoDB-based queue with some neat tricks. Uses <a href='http://www.mongodb.org/'>MongoDB</a>'s <code>findAndModify</code> to implement a scalable queue with support for timeouts, retries and cron-like tasks.</p><dt></dt><p class="usage">We use <strong>mongueue</strong> in <i>anode</i> to implement our cron/pushqueue facility. The pushqueue facility pushes HTTP request definitions into a queue and distributes them in parallel to apps.</p></dl><a href="https://github.com/anodejs/node-mongueue" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/orkaplan">ork</a>,
-<a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-rebus">rebus</a></h3></li><dl><dt></dt><p>State-based intra-server pub/sub library. Listen to changes on <i>data</i> rather on <i>events</i>.</p><dt></dt><p class="usage">Our apps repository and system topology are exposed using <strong>rebus</strong> to any apps running on <i>anode</i>. Apps can monitor these structures for changes and act upon them.</p></dl><a href="https://github.com/anodejs/node-rebus" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/yosefd">yosefd</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-spinner">spinner</a></h3></li><dl><dt></dt><p>Spin and maintain child processes with a few nice features:<ul><li>Wait for children to bind to a port</li><li>Shutdown after idle timeout</li><li>Automatically restart on file changes</li><li>Faulty state if terminates too fast</li><li>Pipe stdout/stderr</li></ul></p><dt></dt><p class="usage">This module is used by <a href='#farmjs'>farmjs</a> to spin up apps.</p></dl><a href="https://github.com/anodejs/node-spinner" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a>,
-<a href="http://mojodna.net">mojodna</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/amiturgman/aCLI">aCLI</a></h3></li><dl><dt></dt><p>Lean and mean jQuery plugin that implements a text console with HTTP plugins, help and many more goodies</p><dt></dt><p class="usage">We use this control as the main dashboard of the anode system. Apps create plugins for management purposes and developers use the console to view logs and investigate app conditions.</p></dl><a href="https://github.com/amiturgman/aCLI" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/amiturgman">amiturgman</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-ctxobj">ctxobj</a></h3></li><dl><dt></dt><p>Overloads javascript objects with <code>pushctx()</code> and <code>popctx()</code> functions. They can be used to create derived objects overloaded with a context stack. This module also exports a <code>console()</code> function that can be used to wrap any console-like object in context stack which will be printed as a prefix to any log line.</p><dt></dt><p class="usage">We use this library to create super readable and easy to read logs for our distributed system. Each log line contains a context stack that can be used to track down flows across processes and servers.</p></dl><a href="https://github.com/anodejs/node-ctxobj" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-fsmjs">fsmjs</a></h3></li><dl><dt></dt><p>A general-purpose finite state machine module that can be used to implement complex control flows.</p><dt></dt><p class="usage"><strong>fsmjs</strong> is used by <a href='#spinner'>spinner</a> to maintain the lifetime of child processes.</p></dl><a href="https://github.com/anodejs/node-fsmjs" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-ssltunnel">ssltunnel</a></h3></li><dl><dt></dt><p>A lightweight TCP over SSL / TLS tunnel running over node. If you need to add confidentiality (privacy), integrity, and authenticity to your TCP stream this is the tool for you.</p><dt></dt><p class="usage">We use <strong>ssltunnel</strong> to connect securely and transparently to our storage servers.</p></dl><a href="https://github.com/anodejs/node-ssltunnel" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/dimastopel">dimast</a>,
-<a href="https://github.com/yosefd">yosefd</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/eladb/node-statestream">statestream</a></h3></li><dl><dt></dt><p>Quickly creates HTTP downstreams for state changes. Just plug in an in-memory object (or a function) and consumers will be updated on changes.</p><dt></dt><p class="usage">We use <strong></strong> to enable web-based real-time view of some of the system elements.</p></dl><a href="https://github.com/eladb/node-statestream" class="btn">Source &raquo;</a><span class="credits"><a href="http://eladb.github.com">eladb</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-ypatterns">ypatterns</a></h3></li><dl><dt></dt><p>Misc javascript programming patterns.</p><dt></dt><p class="usage"></p></dl><a href="https://github.com/anodejs/node-ypatterns" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/yosefd">yosefd</a></span></div><div class="well"><li class="nav-header"><h3><a href="https://github.com/anodejs/node-sharp">node-sharp</a></h3></li><dl><dt></dt><p>A native node.js extension which allows loading .NET assemblies and use them within node.js.</p><dt></dt><p class="usage">We use <strong>node-sharp</strong> to access some .NET code we didn't want to rewrite and some Windows-specific facilities.</p></dl><a href="https://github.com/anodejs/node-sharp" class="btn">Source &raquo;</a><span class="credits"><a href="https://github.com/JettJones">jettj</a>,
-<a href="https://github.com/saary">saary</a></span></div></ul></div></div></div><footer>&copy; Microsoft Corporation 2012
-|
-<a href="rss.xml" class="feed">subscribe</a>&nbsp; |
-built with
-<a href="http://twitter.github.com/bootstrap">bootstrap</a>,
-<a href="http://jade-lang.com">jade</a>,
-<a href="https://github.com/chjj/marked">marked</a></footer></div></body><script type="text/javascript" src="js/jquery-1.7.1.min.js"></script><script type="text/javascript" src="js/analytics.js"></script></html>
View
2 rss.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[anode@microsoft]]></title><description><![CDATA[anode@microsoft blog]]></description><link>http://anodejs.org</link><generator>NodeJS RSS Module</generator><lastBuildDate>Wed, 21 Mar 2012 17:15:23 GMT</lastBuildDate><atom:link href="http://anodejs.org/rss.xml" rel="self" type="application/rss+xml"/><item><title><![CDATA[We work at Microsoft and we use node.js]]></title><description><![CDATA[<h1>We work at Microsoft and we use node.js</h1><p><small>Posted on Tuesday, March 20, 2012 by <a href="http://eladb.github.com">Elad Ben-Israel</a></small><br/></p><p>We recently spent some time with <a href="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure">Charles Torre from Channel 9</a>, discussing node.js at Microsoft and the project we have been working on, <strong>anode</strong>.
+<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[anode@microsoft]]></title><description><![CDATA[anode@microsoft blog]]></description><link>http://anodejs.org</link><generator>NodeJS RSS Module</generator><lastBuildDate>Wed, 21 Mar 2012 17:51:18 GMT</lastBuildDate><atom:link href="http://anodejs.org/rss.xml" rel="self" type="application/rss+xml"/><item><title><![CDATA[We work at Microsoft and we use node.js]]></title><description><![CDATA[<h1>We work at Microsoft and we use node.js</h1><p><small>Posted on Tuesday, March 20, 2012 by <a href="http://eladb.github.com">Elad Ben-Israel</a></small><br/></p><p>We recently spent some time with <a href="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure">Charles Torre from Channel 9</a>, discussing node.js at Microsoft and the project we have been working on, <strong>anode</strong>.
</p>
<iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/Charles/anode-An-Experimental-nodejs-Platform-for-Windows-Azure/player?w=512&h=288" frameBorder="0" scrolling="no"></iframe>

0 comments on commit 9694b23

Please sign in to comment.
Something went wrong with that request. Please try again.