I/O Completion Portshttp://msdn.microsoft.com/en-us/library/aa365198(VS.85).aspx
I/O completion ports provide an efficient threading model for processing multiple asynchronous I/O requests on a multiprocessor system. When a process creates an I/O completion port, the system creates an associated queue object for requests whose sole purpose is to service these requests. Processes that handle many concurrent asynchronous I/O requests can do so more quickly and efficiently by using I/O completion ports in conjunction with a pre-allocated thread pool than by creating threads at the time they receive an I/O request.

Dux Releasedhttp://joshuakehn.com/2011/12/19/Dux-Released.html
At it’s core dux is a flexible container that accepts drop in functionality that can be executed from a common command line interface. Adding new commands or extending others is straight forward and simple.

Welcome Nodesters!http://nodester.com/help.html
There are many avenues to get help with hosting or deploying your node.js applications to Nodester.

apla / workflow.nodejshttps://github.com/apla/workflow.nodejs
Workflow processing for node.js
Every application is based on series of workflows. if your workflow is written in a program code, you have a problem. people don’t want to screw up, but they do. workflow.nodejs is an abstract async processing framework for describing workflows in simple configuration.

What are the disadvantages of using Node.js?http://www.quora.com/What-are-the-disadvantages-of-using-Node-js
@zef: “I like Javascript and node.js, but there’s one disadvantage: its asynchronous programming model…
…Until I used Python for a server-side project and remembered how much simpler the synchronous programming style is. How cleaner your code looks. I suppose I had the Stockhold syndrom for a while there.”

Transform your IIS into a real-time pub/sub engine with Faye-Nodehttp://weblogs.asp.net/cibrax/archive/2011/12/12/transform-your-iis-into-a-real-time-pub-sub-engine-with-faye-node.aspx
Faye is a simple Http Pub/Sub server initially implemented by John Coglan in Ruby, and also later ported by himself to Node.js. The version for Node.js implements the Bayeux protocol, which at first glace, many of us known as http long polling.
This project just represents another alternative to Socket.IO, which also works for client applications that are not necessarily implemented within a web browser. As many http pub/sub engines out there, Faye also uses the idea of channels for routing messages, and it ships with two message repositories out of the box, a repository that runs in memory and a repository that stores the messages in REDIS.

Next topics: explain in detail the server code (it supports client that uses plain TCP sockets instead of socket.io, so you can program a client in other platforms, from Silverlight to iPhone to Android).

As I wrote in the previous post, ServerInterface, GameService and UserService are game-agnostic components. They could be used in any game. For each new kind of game X, you must implement XBoard, XGame logic, XViewModel and an appropiate XController.

At the end of that view, there is the creation of the game-agnostic services:

1 – The board component detects a click, then it sends a new move to controller (using the onMove callbalk)

2 – The controller sends the new move to game logic, to update state (I omitted the view model in this sequence/graph)

3 – The controller sends the new move to game service.

4 – The game services sends a new command to web role, using the server interface

5 – The Web Role API receives the new command

6 – The command info is appended to the game status blob, at Azure storage

Now, the other client processing:

1 – The game service, using a timer, polls the game status, calling the service interface

2 – The service interface, using JSONP, retrieves the current game status from Azure Blob storage

3 – If a new move is detected, the game service calls a callback function provided by the controller (game service has no reference to controller).

4 – The controller sends the new move to game logic, updating state (I omitted the view state here)

5 – The controller sends the new move to board component, to update the canvas

A key point: the controller knows NOTHING about the service interface, WCF Web API, blob storage. So, you can change the game service to route and detect new moves in other ways. Next post: modify game service to use a Node.js server for game move processing.

January 6, 2012

Recently, I was working on my open source simple content repository, AjCoRe, having nodes and properties, based on the JSR-170 concepts. Now, I’m reading some additional resources: API, concrete implementations, uses cases, etc. This is the list of links I have collected about the topic:

A content repository is a store of digital content with an associated set of data management, search and access methods allowing application-independent access to the content, rather like a digital library, but with the ability to store and modify content in addition to searching and retrieving. Acontent repository thus typically forms the technical underpinning of a content application, like a Content Management System or a Document Management System. It functions as the logical storage facility for content

A content repository exposes amongst other the following facilities:

Read/write of content

Hierarchy and sort order management

Query / search

Versioning

Access control

Import / export

Locking

Life-cycle management

Retention and hold / records management

What is Java Content Repository http://onjava.com/pub/a/onjava/2006/10/04/what-is-java-content-repository.html?page=1The Java Content Repository API (JSR-170) is an attempt to standardize an API that can be used for accessing a content repository. If you’re not familiar with content management systems (CMS) such as Documentum, Vignette, or FileNet, then you must be wondering what a content repository is. Think of a content repository as a generic application "data store" tht can be used for storing both text and binary data (images, word processor documents, PDFs, etc.). One key feature of a content repository is that you don’t have to worry about how the data is actually stored: data could be stored in a RDBMS or a filesystem or as an XML document. In addition to providing services for storing and retrieving your data, most content repositories provide advanced services such as uniform access control, searching, versioning, observation, locking, and more. Introducing the Java Content Repository API

JCR Primer http://jtoee.com/jsr-170/The following pages contain a primer on the Java Content Repository specification. JSR170, the Java Content Repository, constitutes an extremely complex specification. The successor, JCR 2.0 / JSR 283, specification adds even more complexity. However, the JCR REPRESENTS a very generic and object-oriented content repository which touches almost all features known in the space. The content repository is not a full-fledged content management system or a content management API. It is only the small subset of a content repository, a storage engine, which a content management system can be built on top of.

Apache Jackrabbit http://en.wikipedia.org/wiki/Apache_JackrabbitApache Jackrabbit is an open source content repository for the Java platform. The Jackrabbit project was started on August 28, 2004, when Day Software licensed an initial implementation of the Java Content Repository API (JCR). Jackrabbit was also used as the reference implementation of JSR-170, specified within the Java Community Process. The project graduated from the Apache Incubator on March 15, 2006, and is now a Top Level Project of the Apache Software Foundation.

January 1, 2012

In my opinion, using a year for resolutions is too much time. I prefer to have smaller periods for life iteration. One year gives a lot of time for procrastination and lost of focus. My proposal: to have monthly resolution. Yesterday, I wrote about my public not technical resolutions, in Spanish. Now, it’s time to write down a short list of technical resolutions, with public outcomes:

– Implements Id in Nodes in AjCoRe (simple Content Repository) – Implements Server/Client in AjKeyvs (Key Value Store) – Start a new version of my PHP simple framework, revamping old one, to publish in my GitHub account– Publish a simple web server example at my Node.js samples– Publish a simple HTML5/Canvas game using Node.js as game server (at Node.js samples) – Continue working on AjLang interpreter, Ruby-like syntax over .NET types and objects – Continue working on AjLisp in Java– Play with Clojure REPL – Start writing AjRools.Expert, rule engine in C#, a la JBoss Drools Expert (it will be published in GitHub account)

I could add some posts about these items, but all them have public repository, so the commits will serve as a proof of advance of this list.

After this first month (January 2012), I will write down a new list, maybe with improvements (better definitions, improved defined outcomes, etc.). Most of these resolutions are centered on studying new things, and practice, practice, practice, practice.